24 Star 155 Fork 138

Ascend / MindSpeed

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
async-ddp.md 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
MingzhenWang 提交于 2024-05-09 03:02 . !293公网地址声明

异步DDP

问题分析

大模型训练过程中,通常会使用数据并行。在进行梯度更新时,数据并行组中的通信(未开启分布式优化器时为AllReduce,开启时为ReduceScatter)要等反向计算完成后再进行。这样的串行执行顺序会造成计算和通信流存在一定的空闲等待时间,导致执行效率较低。

解决方案

通过将计算和通信任务分别拆分成更细粒度的子任务来实现相互的流水掩盖。并行原理如下图所示:

解决思路:

设置一个Bucket,存储反向计算的结果。每当Bucket存满时立刻执行桶中结果的通信任务,后续反向计算可以和这部分通信并行执行,从而增大计算和通信流的利用率,提高执行效率。

使用场景

使用该特性的前提是模型开启数据并行和虚拟流水并行,脚本中设置了--num-layers-per-virtual-pipeline-stage N

使用方法

设置--overlap-grad-reduce即可调用该算法。

使用效果

开启该特性可以提升性能。

1
https://gitee.com/ascend/MindSpeed.git
git@gitee.com:ascend/MindSpeed.git
ascend
MindSpeed
MindSpeed
master

搜索帮助