【弹性训练】Adasum介绍(一)
1 分布式通信简介
并行任务通信一般分为P2P(Point-to-point communication)和 Collective communication。
P2P通信这种模式只有一个sender和一个receiver,即点到点通信。
Collective communication含多个sender多个receive。
Collective communication包含一些常见的原语
broadcast
reduce、allreduce
scatter、scatter reduce
gather、allgather
ring-base collectives
ring-allreduce
下面主要介绍一下allreduce,其他感兴趣的可以去查阅文末的参考文献。
all-reduce简单来说就是每个GPU都从其他GPU上面收集参数,同时对收集到的参数进行归并。
2 弹性训练
弹性训练:是一种在运行时可以动态扩展和缩减节点数量的,而无需重新启动或从保存的checkpoint恢复的分布式训练。
目前常用的框架有两种支持弹性训练:horovod、kungfu。
3 梯度优化算法
M-SGD(mini-batch stochastic gradient descent)是一种求解无约束最优值的一阶优化算法。公式如下
ω表示权重,lr表示学习率,m表示batch size,用g函数表示在t时刻时权重w的梯度。
4 Adasum
在一个batch size 下更新两次权重,在单机单卡训练,以及两卡卡训练的情况下权重更新情况如下图。
可以发现
多卡训练时,all-reduce与单机单卡的差异就在第二个batch中是以权重0时刻计算的梯度,还是权重1时刻计算的梯度。
Adasum 就是一种在all-reduce时,近似模拟单卡训练的梯度权重更新的一种算法。
Adasum 主要是近似计算第二个batch中以w1权重计算的梯度。具体推导细节请查看论文
Adasum 的三种形态,正交、平行以及既不平行也不正交
5 参考文献
分布式相关
https://www.zhihu.com/question/63219175
https://zhuanlan.zhihu.com/p/50116885
https://horovod.readthedocs.io/en/latest/adasum_user_guide_include.html
- 点赞
- 收藏
- 关注作者
评论(0)