|
L4 |$ F$ W; C: H
雷锋网消息,美国西部时间2月21日,百度硅谷人工智能实验室(SVAIL)宣布将Ring Allreduce算法引进深度学习领域,这让基于GPU训练的神经网络模型的训练速度显著提高Ring Allreduce是高性能计算(HPC)领域内一个众所周知的算法,但在深度学习领域内的应用相对较少。
f% m& C% Z. x0 Y% G2 k9 a. X 而百度SVAIL实验室研究员Andrew Gibiansky也录制了一个视频介绍了关于Ring Allreduce的基本情况高效并行训练的需求随着神经网络参数越来越庞大,从几亿个参数与到数十亿参数,所需的GPU运算节点也在增加。
: P+ j. ?: D2 L$ P! `: T7 Q, C 然而,节点数量越多,整个系统的效率就会降低深度学习在多个GPU上训练神经网络通常比较困难,因为大家普遍采用的方法是,让多个GPU把数据发送给一个reducer GPU上,这会造成一种通信瓶颈,整个训练速度会因此拖慢。
7 u) E9 _3 H( X7 P# F 而且要训练的数据越多,则带宽瓶颈问题就显得越严重
% {, F3 k0 E# g. q# A2 S4 z 而ring allreduce算法移除了这种瓶颈,减少GPU发送数据花费的时间,而把时间更多用在处理有用工作上SVAIL发布的博文中这样说道:“ring allreduce 是这样一种算法——其通信成本是恒定的,与系统中的 GPU 的数量无关,并且仅由系统中的 GPU 之间的最慢连接来确定。 # E4 [8 I$ I' f2 X3 B2 l- A. f3 H* O
事实上,如果在通信成本上你只考虑带宽这一因素(并忽略延迟),那么 ring allreduce 就是一个最佳的通信算法 算法的进行分两步:第一步,scatter-reduce;第二步,allgather。 9 o/ {, R1 E: v% }; l
在第一步中,GPU 将交换数据,使得每个 GPU 最终都有一个最终结果的数据块在第二步中,GPU 将交换那些块,使得所有 GPU 最终得到完整的最后结果“Ring Allreduce 中的 GPU 被布置在一个逻辑环路(logical ring)之中。
; A! P" m' |8 I7 F 每个 GPU 左右两个各有一个 GPU,并且只从左边的 GPU 接收数据,再把数据发送至右边的 GPU
% q! G3 M8 r: a) h3 E Ring Allreduce在接受采访时说道:“Ring allreduce可以让我们在多设备和多节点的情况下,更加有效地平均梯度在训练中使用这个带宽优化的算法,你可以显著减少通信开销,并由此扩展到更多的设备上,同时仍然保留同步随机梯度下降的确定性和可预测的收敛性。 ' B( c8 L1 R; ^% x9 B( n+ T( N
”百度已经用这个算法来训练其语音识别模型,实验证明,与使用一个单独的reducer GPU相比,ring allreduce 可以将一个神经网络在40个GPU上的训练速度提升31倍百度也将这算法分享出来,发布了一个演示该 allreduce 算法的 C 语言库,也将该 allreduce 以补丁的形式整合到 TensorFlow 中。 & I5 P O1 F3 w& m
另一个HPC与机器学习结合的例子雷锋网此前也报道过,最近日本东京技术研究院宣布,将在今年夏天启动日本“最快的AI超级计算机”项目,这个超级计算机名为Tsubame3.0,使用的是英伟达GPU加速芯片,使其性能较以往提升2倍。 # `7 Q9 [6 V: @: ?
HPC市场与快速兴起的AI市场有很大不一样,超级计算机以往被用于例如天气预测、气候建模、太空和核模拟等领域,而针对AI优化的芯片开始将这两个领域结合起来而百度这次,则将HPC领域的软件技术应用于深度学习领域,看起来,HPC和机器学习这两个领域,正在以非常快的速度融合。
$ J. r$ G4 v: A2 W9 T; T; n3 _) P Via Tomshardware更多雷锋网相关文章:三星计划投入 10 亿美元收购 AI 公司AI加持,计算机要拥有嗅觉了
1 V* a: e* h% J3 ~8 a; m' f
1 j ]% q* b1 e9 o
* \) z: J2 i/ n/ A
~1 O6 p$ F/ |: Y2 i: B% y" a2 e
. K7 I; Z% Z* i( c' M( O; m3 L. ^ |