本文主要是介绍为什么要使用多GPU并行训练,单卡和多卡训练,bs和lr的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考
https://jishuin.proginn.com/p/763bfbd63d50
理解
为什么要使用多GPU并行训练
简单来说,有两种原因:第一种是模型在一块GPU上放不下,两块或多块GPU上就能运行完整的模型(如早期的AlexNet)。第二种是多块GPU并行计算可以达到加速训练的效果。想要成为“炼丹大师“,多GPU并行训练是不可或缺的技能。
常见的多GPU训练方法:
1.模型并行方式:如果模型特别大,GPU显存不够,无法将一个显存放在GPU上,需要把网络的不同模块放在不同GPU上,这样可以训练比较大的网络。(下图左半部分)
2.数据并行方式:将整个模型放在一块GPU里,再复制到每一块GPU上,同时进行正向传播和反向误差传播。相当于加大了batch_size。(下图右半部分)
单卡和多大训练,bs和lr的关系
众所周知,learning rate的设置应和batch_size的设置成正比,即所谓的线性缩放原则(linear scaling rule)。但是为什么会有这样的关系呢?这里就Accurate Large Minibatch SGD: Training ImageNet in 1 Hour这篇论文来深入探讨一下其中的原理,以及深度学习模型在分布式训练中需要注意的事情。
这篇关于为什么要使用多GPU并行训练,单卡和多卡训练,bs和lr的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!