如何将深度学习训练速度提升一百倍?PAISoar 来了(12)

Ring Allreduce 算法的原理与核心功能如下:

Ring AllReduce 算法将 device 放置在一个逻辑环路(logical ring)中 。 每个 device 从上行的 device 接收数据 , 并向下行的 deivce 发送数据 , 因此可以充分利用每个 device 的上下行带宽 。

使用 Ring Allreduce 算法进行某个稠密梯度的平均值的基本过程如下:

将每个设备上的梯度 tensor 切分成长度大致相等的 num_devices 个分片;

ScatterReduce 阶段:通过 num_devices - 1 轮通信和相加 , 在每个 device 上都计算出一个 tensor 分片的和;

AllGather 阶段:通过 num_devices - 1 轮通信和覆盖 , 将上个阶段计算出的每个 tensor 分片的和广播到其他 device;

在每个设备上合并分片 , 得到梯度和 , 然后除以 num_devices , 得到平均梯度;

以 4 个 device上的梯度求和过程为例:

ScatterReduce 阶段:

推荐阅读