美国时间2月22日,百度硅谷人工智能实验室(SVAIL)宣布向深度学习领域开源了 Ring Allreduce算法库,以实现在多个GPU之上更快速地训练神经网络模型。
Ring Allreduce是高性能计算领域的著名算法,但在深度学习领域应用不足。该技术可以实现近乎线性的加速,以及几十个甚至上百个GPU的扩展。比如,运用Ring Allreduce算法,百度硅谷人工智能实验室将神经网络的训练扩展至40个GPU并且训练速度提高31倍。
百度研究员Shubho Sengupta表示:“我们很高兴能开源我们的Ring Allreduce算法库,该库可应用于各大主要的深度学习框架,这将使深度学习研究人员可以在更多GPU上用更快的速度训练自己的模型。”
过去几年里,神经网络迅猛发展,其训练所需的数据量和计算资源也越来越大。为了提供所需的计算能力,更多GPU被用在训练之中。
在多个GPU之上训练神经网络通常比较困难,因为比较普遍的做法是向单个GPU发送数据,这样就形成了通讯瓶颈。而Ring Allreduce算法可以大大减少GPU用于发送数据的时间,用更多的时间进行有效运算,以此来消除瓶颈。
“Ring Allreduce算法让我们可以在神经网络的众多设备和节点之间进行更加高效的梯度分级,这是一种针对带宽优化的算法,能够大大减少运算时间,从而实现更多设备的扩展,同时还能保留同步随机梯度下降的确定性与可预测的收敛性质。百度研究员Andrew Gibiansky表示。
百度Ring Allreduce (https://github.com/baidu-research/baidu-allreduce )C类库可在Github上下载使用。同时Github上还提供与TensorFLow共同使用时所需的补丁 (https://github.com/baidu-research/tensorflow-allreduce)。