zl程序教程

您现在的位置是:首页 >  其他

当前栏目

为什么要使用多GPU并行训练,单卡和多卡训练,bs和lr的关系

训练 为什么 关系 GPU 并行 lr BS 使用
2023-09-11 14:14:26 时间

参考

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这篇论文来深入探讨一下其中的原理,以及深度学习模型在分布式训练中需要注意的事情。