论文部分内容阅读
深度神经网络广泛应用于多种领域,例如图像识别、人体姿态估计、视频追踪以及自然语言处理。为了减少大型深度神经网络的训练开销,分布式深度学习是一个常用的做法。分布式深度学习能够克服单台机器存储及算力的限制,让大型深度神经网络训练获得与机器数量线性相关的加速受益成为可能。然而在分布式深度学习中,多台机器进行参数同步时的通信开销成了加速训练的瓶颈,需要利用梯度压缩来缩减需要传输的参数量。其中,梯度稀疏是梯度压缩的一种主流方法。现有的梯度稀疏方法是根据选择策略对需要上传的梯度进行筛选,只对重要的梯度进行更新,把不重要的梯度积累在本地等待上传及更新。然而当选取较高的稀疏比例时,相当大一部分梯度被延迟更新,由于自适应优化器的存在,自适应优化器无法分辨当前上传梯度中历史积累梯度和最新梯度的区别,造成模型收敛的偏移,使最终模型精度下降。本文提出一种通用梯度稀疏框架GGS(General Gradient Sparsification Framework),用于克服传统梯度稀疏方法在大比例压缩梯度时收敛速度下降的缺陷。GGS由梯度修正方法及局部梯度批量归一化更新 BN-LG(Batch Normalization Update with Local Gradients)两部分组成。其中梯度修正方法调整了梯度更新步骤的顺序,取消了全局优化器,将优化器设置在本地,让自适应优化器能够正确分辨历史积累梯度与最新梯度,让延迟更新的参数得到正确处理,解决模型收敛偏移的问题。我们提供了数学证明,论证了梯度修正方法在多种自适应优化器下的通用性及收敛性。此外,BN-LG方法采用了混合更新方式,对于批量归一化层的可训练参数,取消了同步上传更新。通过采用BN-LG,GGS可以在不增加通信开销的情况下减轻延迟梯度的影响。我们使用自适应优化器ADAM(Adaptive Moment Estimation)和RMSprop(Root Mean Square Prop),分别在 2,4,8 个节点上,对LeNet-5、CifarNet、DenseNet-121 和 AlexNet 等多种模型进行了实验。实验结果表明,当99.9%的梯度被稀疏化时,模型在测试集上的精度下降不超过1%。为了方便使用,我们将GGS集成进PyTorch,并打包放在开源分布式训练平台OpenPai中。