****# 进度
- forward+backward 写完 ✅ 2026-07-03
- 简化 vccl manager,只加内存分配注册+转发 alltoallv ✅ 2026-07-03
- 替换 DModel 内我们自己写的后向内的 alltoall 为 vccl alltoallv
- 测试脚本,对比原来 DModel/DModel+wgrad nccl overlap/DModel+Wgrad vccl overlap
背景
总的一个step(8 个 microbatch):

去掉头尾 2 个慢的 microbatch:

故:参考 https://infrawaves.feishu.cn/wiki/QPvqwMZ94iSz2BkphSbcyk9hnYu 内的计算方式 总的一个 step 内 9.5s,共 1920/5=384 次 dispatch backward,预计 overlap 后最低收益为 384ms / 9500ms = 4.04% 假设是中间感觉 MoE 阶段则是:1440/5=288,预计 overlap 后收益为:288 / 5787= 4.97% 理论收益为:4 % 到 5 % 之间
收益来源
见下图的 speed up
代码说明
Moe部分
第一版如图红色格子的方式自己写完 backward,但是如果需要多 microbatch overlap 的话这个设计是不支持的。原因如下:
- 2 个红色格子一个是 forward 一个是 backward,在2 个 microbatch overlap 的时候,不论谁先调用都会导致 comm 或者 comp stream 上的其中一个 stream 的顺序正好是反的。
故,需要两层调度,最一层负责维护出一个 forward layer list和一个 backward layer list,第二取出这一对 layer 内的计算通信做交错。
| 职责 | |
|---|---|
| 层级 loop | 决定 A 的 i 层配对 B 的倒数 i 层 |
| 相位交错 | 把这一对的 fwd 的 attn,a2a,mlp 和 bwd 的 attn,a2a,mlp 都交错到一起 |
| 因此,我们的 W_grad 和 D_grad 计算的前向和后向计算就需要和其他操作都完全独立,才能直接被多 microbatch 使用。在 megatron 内,te 做了下面的工作: |

综上:我们需要在现在已有的 attn,dispatch,mlp,combine 都能独立调用其 fwd/bwd 的基础上(加 detach 功能),自己需要写的包括:
- mlp 的 forward+backward
- backward_dw
- WeightGradStore(一个 queue,存 input,grad,待填充的 wgrad_list)
vccl manager
dispatch / combine / compute metadata交给 DModel 内做,permute 不能直接写入 sendbuff,单独 copy 一次。即vcclmegatron 的究极浓缩版。