如何在Caffe中使用多个gpus?

Rik*_*ika 5 caffe

我想知道如何Caffe使用多个GPUs,以便我可以决定升级到更强大的新卡或只是购买相同的卡并继续运行SLI.
比如我最好买一TitanX 12 GB两个GTX 1080 8 GB
如果我将SLI转换为1080s,我的有效内存是否会翻倍?我的意思是我可以运行一个使用12 GB或更多GB的vram的网络吗?或者我只剩下8 GB?如何在这种情况下使用内存?如果安装了两张不同的卡(NVIDIA),会发生什么?caffe是否利用可用的内存?(假设一个980和一个970!)

mrg*_*oom 5

例如,我最好购买一个TitanX 12 GB,或两个GTX 1080 8 GB?如果我将SLI转换为1080s,我的有效内存是否会翻倍?我的意思是我可以运行一个使用12 GB或更多GB的vram的网络吗?或者我只剩下8 GB?

不,effective memory2 GPU和8Gb RAM的大小将是8Gb,但是effective batch size将加倍,这将导致更稳定\快速训练.

如果安装了两张不同的卡(NVIDIA),会发生什么?caffe是否利用可用的内存?(假设一个980和一个970!)

我认为你将限制在较低的卡,可能有驱动程序的问题,所以我不建议尝试这种配置.还来自文档:

当前的实现具有"软"假设,即所使用的设备是同构的.在实践中,相同通用类的任何设备应该一起工作,但性能和总大小受所使用的最小设备的限制.例如,如果你结合使用TitanX和GTX980,性能将受到980的限制.不支持混合使用各种级别的电路板,例如Kepler和Fermi.

总结:拥有大量RAM的GPU可以训练更深的模型,使用多个GPU可以更快地训练单个模型,并且您可以为每个GPU训练单独的模型.我会选择具有更多内存的单GPU(TitanX),因为现在深度网络更多RAM限制(例如ResNet-152或一些语义分段网络),更多内存将提供运行更深层网络和更大批量的机会,否则如果你有一些适合单GPU(GTX 1080)的任务你可以买2或4只是为了让事情变得更快.

此处还有一些关于Caffe中多GPU支持的信息:

当前的实现使用树减少策略.例如,如果系统中有4个GPU,0:1,2:3将交换梯度,则0:2(树的顶部)将交换梯度,0将计算更新的模型,0-> 2,然后0- > 1,2-> 3.

https://github.com/BVLC/caffe/blob/master/docs/multigpu.md