关于 nemo-mbridge-perf-moe-hardware-configs
这份硬件配置参考资料介绍如何在 H100、B200、GB200 和 GB300 上调优 NeMo Megatron Bridge 的 MoE 训练,按工作负载和平台整理代表性调度器、并行布局、精度选择及调优注意事项。
主要功能
- 01按平台整理 MoE 配置指南
- 02代表性模型配置
- 03调度器与并行布局
- 04重计算与精度建议
- 05性能范围及调优注意事项
适用场景
- 01为硬件平台选择初始配置
- 02比较不同工作负载的 MoE 布局
- 03查看显存和通信调优选项
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill nemo-mbridge-perf-moe-hardware-configs安装后在 Claude Code 中输入/nemo-mbridge-perf-moe-hardware-configs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdcard.yamlskill-card.mdskill.oms.sigevals/evals.json详细介绍
MoE 硬件配置参考
稳定版文档:@docs/training/moe-optimization.md 卡片:@skills/nemo-mbridge-perf-moe-hardware-configs/card.yaml
快速平台指南
| 平台 | 典型 MoE 策略 | 通常最重要的因素 |
|---|---|---|
| H100 | DeepEP + 更强的 PP + 适度的 TP | 通信重叠和 PP 效率 |
| B200 | DeepEP + MXFP8 + 谨慎规划 PP 布局 | 容器质量和经过调优的通信设置 |
| GB200 | HybridEP + 部分 CUDA 图 + CPU 清理 | 主机开销、感知拓扑的分发、内存余量 |
| GB300 | HybridEP + 更新的 FP8 和内核栈 | 与 GB200 相同的方案,通常性能上限更高 |
首次回答检查清单
对于硬件方案问题,应先依据以下规范行回答,再补充吞吐量方面的注意事项:
| 工作负载 | 硬件 | 分发器 | 布局 |
|---|---|---|---|
| DSV3 | H100 | DeepEP | TP=2, EP=64, PP=8, VPP=4 |
| DSV3 | GB200/GB300 | HybridEP | TP=1, EP=64, PP=4, VPP=4 |
| Qwen3 235B | H100 | DeepEP | TP=2, EP=32, PP=8, VPP=4 |
| Qwen3 235B | GB200 | HybridEP | TP=1 或 2, EP=32-64, PP=4, VPP=unspecified |
对于 GB200 上的 Qwen3 235B,请明确说明 VPP=unspecified;除非有实测行提供依据,否则不要臆造或外推 VPP=12。请包含 TE 范围内的 CUDA 图作用域(attn、moe_router、moe_preprocess)、CUDA_DEVICE_MAX_CONNECTIONS 的选择、PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True、NCCL_GRAPH_REGISTER=0、GB200/GB300 的 CPU 侧调优,以及不要盲目照搬 tracker 行的警告。
取整后的性能区间
这些数值经过刻意取整,以便文档在 tracker 更新时仍保持稳定。请将其视为规划范围,而非精确承诺。
| 工作负载系列 | 硬件 | 典型区间 | 代表性配置 |
|---|---|---|---|
| DSV3,大规模 | H100 | 每 GPU 低至中数百 TFLOPS,MFU 接近 20% | TP2, EP64, PP8, DeepEP |
| DSV3,大规模 | B200 | 每 GPU 高数百 TFLOPS,MFU 为十几个百分点中段 | TP1, EP32, PP8, DeepEP |
| DSV3,大规模 | GB200 | 每 GPU 约 1K TFLOPS,MFU 为 20% 出头 | TP1, EP64, PP4, HybridEP |
| DSV3,大规模 | GB300 | 高于 GB200 区间,MFU 通常为 20% 中段 | TP1, EP64, PP4, HybridEP |
| Qwen3 235B | H100 | 每 GPU 低 300 多 TFLOPS,MFU 约 30% | TP2, EP32, PP8, DeepEP |
| Qwen3 235B | GB200 | 调优运行时每 GPU 高数百 TFLOPS | TP1 或 TP2, EP32-64, PP4, HybridEP |
| Qwen3 30B | H100 | 每 GPU 低 200 多 TFLOPS | TP1, EP8, PP1, DeepEP |
| Qwen3-Next 80B | GB200 | BF16 级运行时每 GPU 低 300 多 TFLOPS | TP1, EP32, PP2, HybridEP |
代表性配置系列
H100 上的 DSV3
Dispatcher: DeepEP
TP=2 EP=64 PP=8 VPP=4
Routing: force balance
Recompute: light-to-moderate selective recompute
Priority: overlap communication and keep PP efficient
B200 上的 DSV3
Dispatcher: DeepEP
TP=1 EP=32 PP=8 VPP=2 or similar
Precision: MXFP8-class
Recompute: selective recompute around MLA up-projection and MLP-side modules
Priority: container quality, PP layout, and DeepEP SMS tuning
GB200 或 GB300 上的 DSV3
Dispatcher: HybridEP
TP=1 EP=64 PP=4 VPP=4
Precision: MXFP8-class
CUDA Graph: attn + moe_router + moe_preprocess
Priority: HybridEP, CPU optimization, and graph-friendly static shapes
H100 上的 Qwen3 235B
Dispatcher: DeepEP
TP=2 EP=32 PP=8 VPP=4
Recompute: norm and activation-side selective recompute
Priority: communication overlap and router-path cleanup
GB200 上的 Qwen3 235B
Dispatcher: HybridEP
TP=1 or 2 EP=32 to 64 PP=4 VPP=unspecified unless measured
CUDA Graph: attn + moe_router + moe_preprocess
Recompute: moe_act, mlp, or norm depending on memory pressure
Priority: balance throughput against memory headroom
GB200 上的 Qwen3-Next 80B
Dispatcher: HybridEP
TP=1 EP=32 PP=2 VPP around 4
CUDA Graph: attn + moe_router + moe_preprocess
Priority: pipeline layout and grouped GEMM quality
跨平台模式
PP 布局
E= 嵌入层t= Transformerm= MTPL= 损失|= 阶段边界
平台之间最大的差异通常不只是分发器,还在于分发器、PP 形状的组合,以及 VPP 是否能让各阶段保持均衡。
重计算策略
| 内存压力 | 起始方案 |
|---|---|
| 低 | 不重计算,或只选择范围很窄的模块 |
| 中等 | moe_act、mlp、norm 或类似的选择性模块 |
| 高 | 特定于模型的上投影,加上选择性的 MoE 和 MLP 模块 |
| 极高或长上下文 | 仅当选择性方案仍无法满足需求时,才使用完全重计算 |
环境变量
CUDA_DEVICE_MAX_CONNECTIONS=1
CUDA_DEVICE_MAX_CONNECTIONS=32 # common when EP overlap and CUDA graphs are combined
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
NCCL_GRAPH_REGISTER=0
CPU 侧调优
在 GB200 和 GB300 上,CPU 亲和性和常规的主机开销清理,其影响可能不亚于更换分发器。应将其视为首要调优工作,而非事后才考虑的事项。
注意事项
-
不要盲目照搬跟踪器中的某一行配置:最佳配置通常不仅取决于硬件名称,还取决于路由模式、容器和 PP 布局。
-
容器质量很重要:性能大幅下降可能源于软件栈,而非模型配方。
-
VPP 必须经过审慎规划:不合理的 VPP 划分可能抵消更好的调度器带来的收益。
-
比较绝对吞吐量,而不只是 MFU:在 BF16、FP8 和其他精度模式之间切换时,MFU 可能会造成误导。
-
强制均衡路由是更稳妥的基准测试默认选项:比较硬件或调度器栈时,应保持路由模式不变。