1 Star 0 Fork 141

王磊 / AscendSpeed_for_DiT

forked from Ascend / MindSpeed 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mc2.md 1.50 KB
一键复制 编辑 原始数据 按行查看 历史

Ascend MC2

问题分析

在开启了TP和SP的大模型训练场景下,存在matmul计算和all-reduce操作的强依赖关系(不开启SP),或存在matmul计算和all_gather/reduce_scatter操作的强依赖关系(开启SP)。当模型参数量较大时,此处通信量和计算量都较大,在串行执行时,会引入较长的等待闲置时间。

解决方案

针对存在强依赖关系的matmul计算和通信操作,昇腾自研MC2解决方案。

MC2通过融合算子的方式将matmum计算和集合通信操作进行融合,将较大的计算和通信任务切分成了较小的计算子任务和通信子任务,并通过流水的方式使得通信子任务和计算子任务可以互相掩盖,从而减少等待和闲置时间,提高利用率。

解决思路:

AscendSpeed在python脚本侧将原本串行的matmul和all_gather/reduce_scatter操作通过MC2融合算子接口进行了融合。

具体实现参见link

MC2算子接口参见link

使用场景

当开启了TP和SP时,建议开启MC2进一步优化。

使用方法

在启动训练脚本前,设置ASCEND_MC2环境变量:

export ASCEND_MC2=1

同时需要确保开启--sequence-parallel

使用效果

在开启TP和SP的训练场景下,使用MC2可以减少内存开销并提高计算效率。

1
https://gitee.com/wang-lei233/AscendSpeed_for_DiT.git
git@gitee.com:wang-lei233/AscendSpeed_for_DiT.git
wang-lei233
AscendSpeed_for_DiT
AscendSpeed_for_DiT
master

搜索帮助