工作站中有两块GPU,单独一块GPU训练会出现内存溢出。怎样同时使用两块GPU训练一个深度学习程序呢?

内存溢出不一定是因为模型太大,也有可能是数据太大。如果是后者的原因,那可以尝试小的batch size。但既然有两块GPU卡,那最好是全利用上,可以采用数据并行,加快训练速度。如果确认是模型太大,那才用模型并行来解决问题。

几乎所以主流的深度学习框架都支持数据并行,且与模型无关,开发人员不需要做很多的工作就可把单GPU上跑的代码改造成数据并行的多GPU代码。但模型并行与具体的模型有关,需要开发人员自己把模型分成不同的部分,并分发至多个GPU卡,还要同步这些GPU的操作,汇集结果,等等,比较麻烦。有的公司已经提供模型并行的开发工具,可以简化工作。


蓝海大脑 京ICP备18017748号-1