手把手推导Ring All-reduce的数学性质

564dce17d66dedbc7dcd4669da0199bf.png

撰文|袁进辉

分布式深度学习里的通信严重依赖于规则的集群通信(见《对抗软件系统复杂性③:恰当分层,不多不少》对通信的讨论),诸如 all-reduce, reduce-scatter, all-gather 等,因此,实现高度优化的集群通信,以及根据任务特点和通信拓扑选择合适的集群通信算法至关重要。

本文以数据并行经常使用的 all-reduce 为例来展示集群通信操作的数学性质。

1

all-reduce 在干什么?

8f276c92ca3a7210125978d4ad35e72a.png

图 1:all-reduce

如图 1 所示,一共 4 个设备,每个设备上有一个矩阵(为简单起见,我们特意让每一行就一个元素),all-reduce 操作的目的是,让每个设备上的矩阵里的每一个位置的数值都是所有设备上对应位置的数值之和。

 

图 2:使用 reduce-scatter 和 all-gather 实现 all-reduce

如图 2 所示, all-reduce 可以通过 reduce-scatter 和 all-gather 这两个更基本的集群通信操作来实现。基于 ring 状通信可以高效的实现 reduce-scatter 和 all-gather,下面我们分别用示意图展示其过程。

 2

reduce-scatter 的实现和性质

3bdaf05f19c7519842cbfd680d3f277b.png

图 3:通过环状通信实现 reduce-scatter

从图 2 可以看出,reduce-scatter 的结果是每个设备保存一部分 reduce 之后的结果。为了方便讨论,我们先定义一些符号。

假设有p 个设备(上面的例子中 p=4);假设整个矩阵大小是V, 那么 reduce-scatter 后,每个设备上有 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值