如何在Caffe中使用多个gpus?

时间:2016-12-21 16:35:58

标签: caffe

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

3 个答案:

答案 0 :(得分:5)

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

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

  

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

我认为您将被限制在较低的卡上并且可能与驱动程序有问题,因此我不建议您尝试此配置。 同样来自文档:

  

目前的实施有一个&#34;软&#34;假设设备正在   使用的是同质的。在实践中,任何相同的设备一般   课程应该一起工作,但性能和总体规模是有限的   通过使用的最小设备。例如如果你结合使用TitanX和   GTX980,性能将受到980的限制。混合很多   不同级别的电路板,例如开普勒和费米不受支持。

总结:使用拥有大量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

答案 1 :(得分:1)

  

我不相信Caffe支持SLI模式。这两个GPU被视为   单独的卡片。

     

当你运行Caffe并添加'-gpu'标志时(假设你正在使用   命令行),你可以指定使用哪个GPU(-gpu 0或-gpu 1 for   例)。您还可以指定多个GPU(-gpu 0,1,3),包括   使用所有GPU(-gpu all)。

     

当您使用多个GPU执行时,Caffe将执行培训   跨所有GPU,然后合并整个的培训更新   楷模。这有效地加倍(或者如果你有2个以上则更多   GPU)每次迭代的批量大小。

     

在我的情况下,我开始使用NVIDIA GTX 970(4GB卡)然后   升级到NVIDIA GTX Titan X(Maxwell版本,12 GB)因为   我的模型太大了,无法放入GTX 970.我可以运行一些   两张卡上的小型号(即使它们不相同)   只要该型号完全适合4GB的小卡。   使用标准的ImageNet模型,我可以在两张卡上执行   把我的训练时间缩短了一半。

     

如果我没记错的话,其他框架(TensorFlow,也许还有   Microsoft CNTK)支持在不同节点之间拆分模型   像你一样有效地增加可用的GPU内存   描述。虽然我没有亲自试过任何一个,我   了解您可以在每层基础上定义图层   执行。

     

帕特里克

Link

答案 2 :(得分:1)

也许是一个迟到的答案,但caffe支持gpu并行,这意味着你确实可以充分利用两个gpu,但我建议你得到两个相同内存大小的gpu,因为我没有&#39; t think caffe允许您选择每个gpu的批量大小。

至于如何利用内存,使用多个gpu,每个gpu都会获得train_val.prototxt中指定的一批批量大小,因此,如果您的批量大小为16,那么您使用2 gpu&#39; s,你有一个有效的批量大小32。

最后,我知道对于诸如游戏这样的事情,SLI似乎效率低得多,并且通常比拥有单个更强大的GPU更有问题。因此,如果您计划使用GPU不仅仅是深度学习,我建议您继续使用Titan X