mcpField
N
nemo-mbridge-perf-moe-hardware-configs

nemo-mbridge-perf-moe-hardware-configs

github.com/nvidia开发3.8k1.8k 次安装今天更新
代码仓库

关于 nemo-mbridge-perf-moe-hardware-configs

该参考技能汇总 MoE 训练在 H100、B200、GB200、GB300 等硬件上的候选配置、性能区间与调优注意事项,面向 NeMo/MBridge 性能调优人员。它强调按目标容器和布局实测,而非照搬配置表。

主要功能

  1. 01按硬件列出候选 dispatcher
  2. 02提供模型与硬件配置参考
  3. 03汇总规划用性能区间
  4. 04说明并行布局与重计算取舍
  5. 05列出调优陷阱与验证方法

适用场景

  1. 01筛选 MoE 硬件配置候选
  2. 02规划 DSV3 或 Qwen3 训练布局
  3. 03比较 dispatcher 与通信重叠方案
  4. 04设计单变量 A/B 性能测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/skills --skill nemo-mbridge-perf-moe-hardware-configs

安装后在 Claude Code 中输入/nemo-mbridge-perf-moe-hardware-configs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
card.yaml
skill-card.md
skill.oms.sig
evals/
evals.json

详细介绍

MoE 硬件配置参考

稳定版文档:@docs/training/moe-optimization.md 卡片:@skills/nemo-mbridge-perf-moe-hardware-configs/card.yaml

平台快速指南

以下各行是用于筛选的起点,不是硬件默认配置,也不代表吞吐量承诺。

平台alltoall 启动后可筛选的候选项通常最重要的因素
H100DeepEP 或 HybridEP、显式重叠、受支持的 FP8 模式通信重叠、dispatcher/runtime 兼容性和 PP 效率
B200DeepEP 或 HybridEP、受支持的 FP8 模式、谨慎设计 PP 布局容器质量和经过调优的通信设置
GB200HybridEP,然后使用由性能分析驱动的图并优化 CPU主机开销、感知拓扑的分发和内存余量
GB300HybridEP,以及目标容器的低精度/内核栈与 GB200 相同的系统交互因素,但必须重新测量

首答检查清单

回答硬件指南相关问题时,应先依据以下规范行,再补充吞吐量方面的注意事项:

工作负载硬件Dispatcher布局
DSV3H100DeepEPTP=2、EP=64、PP=8、VPP=4
DSV3GB200/GB300HybridEPTP=1、EP=64、PP=4、VPP=4
Qwen3 235BH100当前规范方案中的 alltoall + 重叠TP=2、EP=32、PP=8、VPP=4
Qwen3 235BGB200HybridEPTP=1 或 2、EP=32-64、PP=4、VPP=未指定
Qwen3 30B16×H100HybridEPTP=1、EP=16、PP=1、普通 EP 重叠

对于 GB200 上的 Qwen3 235B,必须明确说明 VPP=未指定;除非测量结果行提供了 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 侧调优,以及不要盲目照搬追踪器中的配置行这一警告。

四舍五入后的性能区间

这些数值有意取整,以便文档在追踪器数据更新时仍保持适用。请将它们视为规划区间,而非精确承诺。

工作负载系列硬件典型区间代表性配置
DSV3,大规模H100每 GPU 数百 TFLOPS 的低至中段,MFU 处于十几个百分点的高段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 235BH100历史快照处于每 GPU 300 TFLOPS 出头;请重新测量当前方案TP2、EP32、PP8;当前方案使用 alltoall + 重叠
Qwen3 235BGB200经过调优的运行中,每 GPU 数百 TFLOPS 的高段TP1 或 TP2、EP32-64、PP4、HybridEP
Qwen3 30BH100在已验证的 16-GPU 配置下,每 GPU 约 300 TFLOPSTP1、EP16、PP1、HybridEP + EP 重叠
Qwen3-Next 80BGB200BF16 级别运行中,每 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: alltoall in the current canonical recipe; re-screen flex backends on the target stack
TP=2  EP=32  PP=8  VPP=4
Recompute: none in the current canonical recipe
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
16 张 H100 上的 Qwen3 30B-A3B
Dispatcher: HybridEP
TP=1  EP=16  PP=1  CP=1
Precision: BF16
Sequence: 4096
Batch: MBS1 GBS1024
Routing: force balance
EP overlap: enabled
Delayed wgrad: disabled
CUDA Graph: moe_router + moe_preprocess
HybridEP: permute fusion, 32 SMs, 64-token combine chunks
Measured: 20.14729s/step, 299.352 model TFLOPS/GPU over iterations 41-50
Rank-0 peak allocated memory: 62.166 GiB

当前数值是采用多项旋钮的规范方案最终结果。此前一次匹配的 A/B 测试单独考察了普通 EP 重叠:从 244.039 提升至 287.305 TFLOPS/GPU,GemM/注意力隐藏的通信占比从 0.11% 增至 36.55%。不要将后续的 299.352 完全归因于重叠。

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 = Transformer
  • m = MTP
  • L = 损失
  • | = 阶段边界

平台之间最大的差异通常不只是 dispatcher,还包括 dispatcher、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 亲和性优化和常规主机开销清理带来的性能提升,有时几乎不亚于更换调度器。应将其视为首要调优工作,而不是事后补充。

注意事项

  1. 不要盲目照搬跟踪表中的配置:最佳配置通常取决于路由模式、容器和 PP 布局,其影响不亚于硬件名称。

  2. 容器质量很重要:性能大幅下降可能源自软件栈,而非模型方案。

  3. VPP 必须经过审慎设计:糟糕的 VPP 划分可能抵消更优调度器带来的收益。

  4. 比较绝对吞吐量,而不只是 MFU:在 BF16、FP8 和其他精度模式之间切换时,MFU 可能产生误导。

  5. 强制均衡路由仅用于基准测试:它可以控制路由方差,但会改变语义。A/B 测试期间应固定路由,并单独验证自然路由是否符合训练验收要求。

  6. 不要将调度器表视为严格的平台规则:对于标准的 16×H100 Qwen3 30B 配置,HybridEP 是经过验证的最佳方案;而当前的 256×H100 Qwen3 235B 方案使用 alltoall。请在生产容器中对后端兼容性和吞吐量进行基准测试。

  7. 区分筛选、因果分析和验收:短时运行用于淘汰较弱的候选方案,控制变量的单变量 A/B 测试用于解释作用机制,而最终的 50 步运行用于验证完整的最佳方案。

上次签名刷新:2026-08-03。

评论

支持 Markdown