已合并
【doc】【core_r0.8.0】moe fb overlap doc #2148
harygo2创建于 2025年4月1日
【doc】【core_r0.8.0】moe fb overlap doc #2148
已合并
harygo2创建于 2025年4月1日
refs/pull/2148/head合入到core_r0.8.0
5 个文件变更+49-0
@@ -0,0 +1,49 @@
1+# MoE跨microbatch间AlltoAll通信掩盖
2+ 
3+## 背景
4+MoE模型训练的关键瓶颈在于高昂的AllToAll(A2A)通信耗时,显著影响训练MFU。另外,相同microbatch内,A2A通信和计算存在依赖,因此A2A通信难掩盖。
5+ 
6+在DeepSeek V3模型训练中,DeepSeek团队创新性地提出了双向流水跨MicroBatch间AllToAll(A2A)掩盖,即DualPipe算法。
7+Dualpipe从流水线两端同时输入micro batch,同时借鉴ZeroBubble思想进行dw/dx分离,进一步缩减了流水线空泡(bubble)。
8+同时,不同micro batch前反向无依赖关系,DualPipe通过双流编排计算通信,实现1F1B阶段A2A通信全掩盖,详情参见:
9+> DeepSeek-V3 Technical Report (https://arxiv.org/abs/2412.19437)
10+ 
11+具体来说,单层内的前向计算和通信按顺序被拆分为Attention(F), Dispatch(F), MLP(F), Combine(F)四个阶段, 单层内的反向计算按顺序被拆分为Combine(B), MLP(B), Dispatch(B), Attention(B),其中Dispatch和Combine分别为MLP计算前后的A2A通信。通过双流编排正向和反向的计算和通信,实现1F1B阶段A2A通信全掩盖。原理如下图 (https://github.com/deepseek-ai/profile-data):
12+ 
13+![跨microbatch间A2A通信掩盖](../../../sources/images/fb_overlap.png)
14+ 
15+由于正向和反向计算是不同的microbatch,因此正向和反向的计算不存在顺序依赖关系,根据上述正向和反向的顺序,可用Attention(F)掩盖Combine(B),MLP(B)计算掩盖Dispatch(F),MLP(F)掩盖Dispatch(B),Attention(B)掩盖Combine(F)。同时DeepSeek团队为计算和通信分配了固定的CUDA SM数量,缓解计算和通信的SM资源抢占问题。
16+ 
17+## 实现设计
18+MindSpeed基于昇腾硬件特点,设计实现了一套高性能的MoE跨microbatch间A2A通信掩盖方案,通过细粒度的计算和通信流水排布,实现了warmup/cooldown阶段A2A通信**50**%掩盖,1F1B阶段A2A通信**100**%掩盖的效果。在DeepSeek V3模型上结合DualpipeV相比MindSpeed已有A2A掩盖特性`--moe-alltoall-overlap-comm`端到端性能提升**10**%。
19+ 
20+### 跨microbatch间A2A通信掩盖
21+MindSpeed实现的1F1B细粒度计算和通信流水排布如下图:
22+![跨microbatch间A2A通信掩盖](../../../sources/images/fb_overlap_npu.png)
23+通过分离调度专家和Attention部分反向的dw和dx计算,可实现1F1B阶段的A2A全掩盖。同时,由于昇腾硬件上通信行为由AICPU下发,不会消耗cube计算单元资源,因此计算和通信的并发对计算效率的影响很低。另外,使用了Attention部分的dw计算掩盖了PP的通信,从而实现1F1B阶段通信的全掩盖。
24+ 
25+下图是真实671B DeepSeekV3模型使用该特性时,单层内的A2A通信掩盖profiling示意图:
26+ 
27+![img.png](../../../sources/images/fb_overlap_profile.png)
28+ 
29+使用该特性后在1f1b阶段4次A2A通信可被计算完全掩盖。
30+### Warmup/Cooldown阶段A2A自掩盖
31+在流水线Warmup/Cooldown阶段,仅存在同microbatch的正向/反向计算,因此无法使用跨microbatch间的A2A通信掩盖方法。为了进一步提升掩盖比例,在warmup和cooldown阶段使用了层内的自掩盖:正向使用共享专家的计算掩盖dispatch通信,反向使用共享专家的反向计算掩盖combine通信,使用路由专家的dw计算掩盖dispatch通信。
32+ 
33+### 基于DualpipeV和Megatron VPP的跨microbatch间A2A通信掩盖
H
Hharygo22025年4月3日

已修改

likedislike
34+MindSpeed基于dualpipe流水实现了MoE跨microbatch间A2A通信掩盖,具体细节参见[DualpipeV介绍](../dualpipev.md)。
35+ 
36+另外,我们注意到在传统Megatron VPP(虚拟流水线并行)的基础上,也可以实现MoE跨microbatch间的A2A通信掩盖,只需要在warmup阶段相比于原始VPP多做一个warmup mircrobatch,具体见下图:
37+ 
38+![vpp+moe_fb_overlap](../../../sources/images/vpp_overlap.png)
39+ 
40+中间红框部分可使用跨microbatch间A2A掩盖。相比于DualpipeV流水,该方案实现上更简单,也同样可实现A2A通信掩盖。
41+ 
42+## 使用方法
43+请注意当前该特性仅在DeepSeek V3场景进行了验证,在其他MoE模型场景需要进一步验证和适配。
44+ 
45+1. 在启动脚本中加入`--moe-fb-overlap`
46+ 
47+2. 如果需要使用DualpipeV流水,请在启动脚本中加入`--schedules-method dualpipev`
48+3. 如果使用megatron VPP,请在启动脚本中配置`--num-layers-per-virtual-pipeline-stage`
49+