MCore MoE in 2025 - DeepSeek-V3 and Beyond

Zijie Yan and Hongbin Liu
NVIDIA

目录

亮点总结

模型架构与挑战

模型架构

幻灯片对比了三个大型语言模型:LLAMA 70B,Mixtral-8x7B和DeepSeek-V3。

关键点:

DeepSeek-V3 (DSV3) 模型超参数:
Image of DSV3 Hyper-parameters table from page 2

DeepSeek-V3 训练的挑战:功能性

DeepSeek-V3模型引入了多项改变,均已在MCore中得到支持:

DeepSeek-V3 训练的挑战:内存

Image of memory comparison charts from page 4
Image of memory comparison charts from page 4

DeepSeek-V3 训练的挑战:效率

MCore DeepSeek-V3 优化详解

功能完备性

使用MTP进行收敛性测试

DeepSeek-V3 微调的损失曲线:
Image of loss curves for lm loss and mtp_1 loss from page 9

通信优化

DeepEP

Image of Communication Optimizations diagram and performance table from page 10
Image of Communication Optimizations diagram and performance table from page 10

上图展示了从传统的AlltoAll令牌分发器到简化的DeepEP分发器的演进,分为两个阶段:跨节点通信和节点内通信。右侧表格数据显示,DeepEP显著降低了不同EP规模下的MoE层延迟。

MoE Parallel Folding

Page 16
Page 17

内存优化

细粒度重计算

内存高效的排列

Image of Memory-Efficient Permutation workflow diagram from page 12
Image of Memory-Efficient Permutation workflow diagram from page 12

计算优化

核函数优化

MLA Yarn RoPE融合

Image of MLA Yarn RoPE fusion diagram and performance table from page 14
Image of MLA Yarn RoPE fusion diagram and performance table from page 14

上图右侧展示了Q和KV路径上的RoPE操作被融合成一个单一的核函数。左侧表格量化了融合前后的延迟,显示出显著的加速比。

FusedAttention

Image of Fused Attention performance comparison table from page 15
Image of Fused Attention performance comparison table from page 15

上表比较了DeepSeek的性能分析数据、cuDNN 9.7和cuDNN 9.11.0.28在Fused Attention上的延迟。结果显示,最新版本的cuDNN性能最佳,实现了1.03倍至1.07倍的性能提升。

流水线并行优化

带有自定义流水线布局的灵活非对称流水线并行

Page 18
Page 18

性能与实践

DeepSeek-V3 端到端性能

以下表格展示了在H100 GPU上,通过一系列优化逐步提升DeepSeek-V3训练性能的过程。

Image of E2E Performance table from page 7
Image of E2E Performance table from page 7

注:基准测试中临时使用了强制路由;仅供技术讨论。

DeepSeek-V3 性能最佳实践

这张幻灯片提供了一系列用于优化 DeepSeek-V3 训练性能的推荐参数配置。

Page 19
Page 19

MCore MoE 模型库

为了方便客户复现性能,MCore 提供了一个模型库。

Page 20
Page 20

专题:在 1F1B 调度中重叠 MoE AllToAll 通信

Page 22
Page 22

背景

Page 24
Page 24

两种重叠策略

Page 25
Page 25

合并 FWD-BWD 与 AllToAll 重叠

Page 26
Page 26

交叉流水线并行(Interleaved PP)与 AllToAll 重叠

Page 27
Page 27

基准测试结果

PP=1

PP=1, 内存分配

Page 29
Page 29

DeepSeek-V3-no-MTP

Page 30
Page 30

性能分析

1F1B中的AllToAll重叠

Page 31
Page 31

该图示展示了在1F1B流水线调度中,AllToAll通信与计算的重叠情况。时间线被分为四个部分:

  1. Bubble Not overlapped (气泡,未重叠)
  2. Overlapped (重叠部分)
  3. Not overlapped (未重叠部分)
  4. Bubble (气泡)

延迟计算公式如下:

其中:
* p: 流水线并行大小 (pipeline parallel size)
* v: 虚拟流水线并行大小 (virtual pipeline parallel size)
* F: 流水线并行rank的每个微批次的前向传递时间 (forward time per micro batch of one pipeline parallel rank)
* B: 流水线并行rank的每个微批次的后向传递时间 (backward time per micro batch of one pipeline parallel rank)
* m: 微批次数量 (number of micro batches)

DualPipeV中的AllToAll重叠

Page 32
Page 32

该图示分析了DualPipeV流水线调度中的AllToAll重叠。时间线跨越4个设备,包含以下阶段:
* 预热阶段 (Warmup stage)
* 关键路径上的重叠部分 (Overlapped in critical path)
* 刷新阶段 (Flush stage)

延迟计算公式如下:

其中:
* p: 流水线并行大小 (pipeline parallel size)
* v: 虚拟流水线并行大小 (virtual pipeline parallel size)
* F: 流水线并行rank的每个微批次的前向传递时间
* B: 流水线并行rank的每个微批次的后向传递时间
* W: 流水线并行rank的每个微批次的wgrad时间 (wgrad time per micro batch of one pipeline parallel rank)
* m: 微批次数量 (number of micro batches)

1F1B与DualPipeV总延迟比较

Page 33
Page 33

假设没有a2a重叠,F&B=F+B, 且 B=2F
* T_1f1b = m(F+B) + (p-1)/v * (F+B) = 3mF + 3/v * (p-1)F
* T_dualpipe = m(F+B) + (p-1)F = 3mF + (p-1)F
* 当 v>3 时,1F1B比DualPipeV更快。

假设F被B完全隐藏,F&B=B, 且 B=2F
* T_dualpipe - T_1f1b = (p/2 - (2(p-1))/v) * F
* 当 v=2, T_dualpipe - T_1f1b = (1 - p/2) * F < 0, 当 p > 2
* 当 v=4, T_dualpipe - T_1f1b = (p/2 - (p-1)/2) * F > 0
* 当 v=8, T_dualpipe - T_1f1b = (p/2 - (p-1)/4) * F > 0

1F1B与DualPipeV中AllToAll重叠的比较:
* 对于较大的虚拟流水线并行大小,1F1B速度更快。
* 在PP size较大和微批次数量较多的情况下,两种策略之间的差距很小。
* 对于像DeepSeek-V3这样的混合模型,我们需要仔细设计以平衡各个PP阶段的工作负载。

AllToAll重叠带来的端到端加速的限制

Page 34
Page 34

端到端加速 (Speedup) 公式:
Speedup = θ_1f1b-batches * θ_a2a-in-1f1b * γ_gemm-eff * min(t_comp, t_a2a)

公式各部分解读:

注:详细数据来自对DeepSeek-V3代理模型的性能分析。

当前状态

Page 35
Page 35
CUDA_DEVICE_MAX_CONNECTIONS: 32
TORCH_NCCL_AVOID_RECORD_STREAMS: 1
NVTE_ALLOW_NONDETERMINISTIC_ALGO: 1
PYTORCH_CUDA_ALLOC_CONF: expandable_segments:True
NCCL_NVLS_ENABLE: 0
NVTE_FWD_LAYERNORM_SM_MARGIN: 8
NVTE_BWD_LAYERNORM_SM_MARGIN: 8 # 24 for DeepEP

* 将以下标志添加到您的训练脚本中:

--combined-1f1b
--combined-1f1b-recipe ep,a2a
#[optional] only works with TE v2.3.0
--delay-wgrad-compute

总结与未来展望

总结

Page 36
Page 36

MCore MoE 路线图:正在进行和未来的工作