MoE All2All 重叠#
LoongForge 为 MoE 模型提供面向通信的优化。通过添加相应的 Megatron 启动参数,专家并行(EP)中的 All-to-All 通信可以与计算重叠,实现最佳训练吞吐量。
1. 1F1B A2A 重叠#
在 MoE 训练中,EP 引起的 All-to-All 通常是主要瓶颈之一。受 DSv3 DualPipe 启发,本框架在时间轴上将不同微批次的前向/反向计算与 EP All-to-All 交织进行。代价高昂的 EP 通信因此被隐藏在计算之后,大大减少了其对整体吞吐量的影响。
特性#
通过微批次重叠隐藏 All-to-All 通信
拆分权重梯度和激活梯度传输,以获得更好的流水线并行重叠
支持 FP8 训练
使用方法#
添加以下启动参数:
--overlap-moe-expert-parallel-comm \
--delay-wgrad-compute
前提条件:必须启用 Interleave 1F1B 调度。
为获得最佳重叠效果,建议:
export CUDA_DEVICE_MAX_CONNECTIONS=32
(这可能会略微影响 TP 重叠;请根据 TP 还是 EP 占据通信主导来选择。)
2. 细粒度激活卸载#
在长上下文训练中,激活内存随序列长度快速增长,很快成为限制因素。常见的补救方法是将张量并行(TP)与全层重计算结合以压缩激活占用。 然而,1F1B A2A 重叠策略依赖于相邻批次的逐模块交织,使得传统的全层重计算不兼容。
为解决此问题,框架引入了模块级选择性重计算加细粒度激活卸载,在保留重叠调度的同时近似全层重计算的内存节省(见图)。

特性#
激活卸载与重新加载隐藏在计算之后
张量级卸载粒度
支持 FP8 训练
使用方法#
启用模块级选择性重计算:
--recompute-granularity selective \
--recompute-modules a2a_overlap_attn a2a_overlap_post_attn a2a_overlap_mlp
启用张量级激活卸载:
--fine-grained-activation-offloading \
--offload-tensors dispatched_input pre_mlp_layernorm_output
此外,将每个进程绑定到其 GPU 所在的 NUMA 节点,以提高 D2H/H2D 带宽:
--bindpcie