原文地址: https://andrew.gibiansky.com/blog/machine-learning/baidu-allreduce/
Allreduce 其实一直是HPC领域很常见的一个技术,所以百度这篇论文其实讲的也是如何将Allreduce从HPC引入到深度学习领域,通过Allreduce算法,大大的提高了深度学习的模型训练速度
简介
过去几年中,神经网络规模不断扩大,而训练可能需要大量的数据和计算资源。 为了提供所需的计算能力,我们使用高性能计算(HPC)常用的技术将模型缩放到数十个GPU,但在深度学习中却没有充分使用。 这种ring allreduce技术减少了在不同GPU之间进行通信所花费的时间,从而使他们可以将更多的时间花费在进行有用的计算上。 在百度的硅谷AI实验室(SVAIL)中,我们成功地使用了这些技术来训练最先进的语音识别模型。 我们很高兴将Ring Allreduce的实现发布为TensorFlow的库和补丁程序,并希望通过发布这些库,我们可以使深度学习社区更有效地扩展其模型。
Introduction
在过去的几年中,神经网络已被证明是解决各种问题的非常有效的工具,并且在规模和计算需求方面迅速增长。 2012年,用于图像识别的SuperVision卷积网络通过两个星期的GPU和6000万个参数在对象识别方面取得了长足的进步。 2016年,研究人员在网络上进行语言建模方面取得了突破,该网络具有在32个GPU上进行了为期三周的训练的十亿多个参数。 在百度研究院的硅谷AI实验室中,2014年,我们的Deep Speech语音识别系统的第一次迭代大约有1100万个参数,而一年后的下一次迭代已增长到1亿个参数。
随着神经网络的参数数量和计算需求的增长,在许多节点和许多GPU上有效并行化神经网络训练变得越来越重要,因为等待大型网络训练数月会减慢实验速度并限制进一步的发展。 在此博客文章中,我们介绍了一种来自高性能计算(HPC)领域的技术,并演示了如何将其应用于深度学习以在神经网络训练中获得显着的性能提升。