代理式 AI/生成式 AI

在 PyTorch 中加速大规模混合专家训练

长期以来,训练大规模多专家(MoE)模型一直属于少数具备深厚基础设施和分布式系统专业知识的高级用户。对大多数开发者而言,真正的挑战不在于构建更智能的模型,而在于如何在数百乃至数千个 GPU 上高效地扩展模型,同时避免性能损失。

借助 NVIDIA NeMo Automodel(NVIDIA NeMo 框架中的开源库),开发者现在能够在 PyTorch 中直接使用熟悉的工具来训练大规模的 MoE 模型。NeMo Automodel 基于经过 NVIDIA 性能优化的加速 PyTorch distributed 构建,显著降低了大规模 MoE 训练的技术门槛,推动其实现普及化。

  • 简单 – 无需管理复杂的并行架构或专用系统,即可直接在 PyTorch 中训练包含数十亿参数的模型。
  • 可访问 – 让研究人员、初创企业及大型公司都能轻松尝试过去难以实现的 MoE 架构。
  • 高效 – 支持从 8 个 GPU 扩展至 1000 多个 GPU,同时通过内置优化保持出色的性能与成本效益。

在本文中,您将了解 NeMo Automodel 如何结合 PyTorch 原生的分布式并行能力与 NVIDIA 的加速技术,让大规模 MoE 模型的训练变得更加高效、便捷且易于使用。文中还提供了详细的快速入门指南,帮助您复现基准测试结果、开展自定义实验,并探索各类配置选项,亲身体验这一技术带来的显著优势。

为什么训练大型 MoE 很困难

高效地进行大规模 MoE 训练需要应对多个相互关联的挑战。

  1. 专家并行:在 GPU 上分布数百名专家,同时避免通信带宽过载。
  2. Token 路由效率:快速且高效地将 token 分配给对应的专家。
  3. 显存管理:在 GPU 显存限制内对大规模参数进行分片存储。
  4. 通信与计算融合:显著降低多对多通信和 token 重排操作的延迟。

由于这些系统性挑战,在H100系统上以BF16精度实现每GPU超过150 TFLOPS的性能一直面临较大困难,导致GPU的性能未能被充分释放。

NVIDIA NeMo Automodel,是 NVIDIA NeMo 框架中的一个开源库,基于原生 PyTorch 并行架构构建,有效克服了传统实现中的诸多障碍。它将原本仅限于专业机器学习工程师使用的先进基础设施优化,无缝集成到 PyTorch 生态系统中。

开发者现在可以利用 PyTorch API,在配备 BF16 精度的 H100 GPU 上,为多种主流的百亿参数以上 MoE 架构实现单卡超过 200 TFLOPS 的性能。例如,DeepSeek V3 在 256 张 GPU 上实现了每张卡 250 TFLOPS/秒的计算效率。

这使得大规模 MoE 训练成为可能,让更广泛的社区能够基于包含数十亿参数的模型开展研究、实验与创新。

深入解析 NeMo Automodel:架构与优化

NeMo AutoModel 融合了 PyTorch 原生分布式并行能力与 NVIDIA 加速技术,为 MoE 构建统一的高性能训练架构。

利用 PyTorch 的分布式并行技术实现高效扩展

NeMo AutoModel 基于分布式 PyTorch 构建,支持以下功能,可实现模型的无缝扩展。

使用 NVIDIA Transformer 引擎加速模型训练

通过采用 NVIDIA Transformer 引擎 内核(包括 CUDNN RMSNormCUDNN LinearDotProductAttention),NeMo Automodel 能够加速 Transformer 模块的运行,同时支持多种注意力机制,如多头潜在注意力(MLA)、分组查询注意力(GQA)和滑动窗口注意力(SWA)。

借助 Megatron-Core 的 DeepEP 与 GroupedGEMM,实现更高效的专家路由与计算

为实现大规模高效训练,NeMo Automodel 集成了 Megatron-Core 提供的先进 token 路由与专家计算组件,专为 MOE 模型训练而设计。

  • DeepEP 令牌调度器 (实验性):通过高效的多对多通信机制以及可选的 permute/unpermute 融合优化,支持将令牌路由扩展至 64 个及以上专家的并行规模。借助 DeepSeek 的 DeepEP 优化技术,NeMo Automodel 能有效降低通信开销,维持专家负载均衡,从而在数百个 GPU 上实现更顺畅的扩展。
  • 面向 MoE 专家的 GroupedGEMM:将多个本地专家的计算整合为单一批量 GEMM 操作,有效减少内核启动开销,提升 GPU 利用率。该方法显著增强了吞吐能力与硬件效率,尤其适用于多个专家共享同一设备的场景。

突破性性能:实现面向大众的高性价比 MoE 训练

下表展示了在主流 MoE 架构中,使用 BF16 精度的 DGX H100 系统进行预训练的性能基准。

模型 GPUs GBS (全局批量大小) 并行
[TP、PP、CP、EP、VP、FSDP]
优化 TFLOPs
/sec/GPU
Tokens/sec/GPU
DeepSeek V3 671B 256 512 1,4,1,64,8,64 TE + DeepEP 250 1,002
DeepSeek V3 671B 1024 8192 1,4,1,64,8,256 TE + DeepEP 216 865
Kimi K2 256 512 1,8,1,32,4,32 TE + DeepEP 189 924
Qwen3 MoE 30B 8 512 1,1,1,8,-,8 TE + DeepEP 277 12,040
GPT-OSS 20B 8 256 1,1,1,-,-,8 TE + DeepEP + FlexAttn 279 13,058
GPT-OSS 120B 64 512 1,1,1,-,-,64 TE + DeepEP + FlexAttn 231 7,626
表 1:在 DGX H100 系统(BF16 精度)上预训练典型多专家(MoE)架构的性能表现. 注:所有基准测试均采用统一的测量方法和模拟数据,序列长度为 4096,并实施均衡的专家路由策略。H100 在 BF16 精度下的峰值性能为 989 TFLOPS。

NeMo AutoModel 在多种 MoE 架构和不同数量的 GPU 上均展现出卓越的效率与可扩展性。每个 GPU 的计算性能可达 190 至 280 TFLOPS/s,处理速度最高支持 13000 tokens/s,并可在 8 到 1024 个 GPU 的规模下实现接近线性的扩展效果。例如,DeepSeek V3 671B 模型在 256 个 GPU 上运行时,每个 GPU 可达到 250 TFLOPS/s 的性能表现。这些成果得益于原生 PyTorch 并行技术与 NVIDIA 优化方案的深度融合,为 PyTorch 社区用户提供了高效的硬件利用率和经济可行的大规模 MoE 模型训练解决方案。

通过原生 PyTorch 分布式训练赋能开发者

通过原生 PyTorch 分布式并行技术,NeMo AutoModel 将高性能的大规模 MOE 训练无缝集成到 PyTorch 生态系统中。该方法摆脱了对外部或专有模型并行库的依赖,使开发者能够灵活运用熟悉的工具和 API 实现高效扩展。

更重要的是,它体现了 NVIDIA 对推动 PyTorch 及更广泛开源 AI 生态系统的坚定承诺,使大型模型的训练不仅更高效,而且更具开放性、互操作性,便于整个开发者社区使用。

为开发者带来的主要优势:

  • 更快的迭代周期:通过提升吞吐量,加速实验进程与模型开发。
  • 更低的训练成本:更高的 GPU 利用率显著减少每次训练所需的 GPU 小时数。
  • 可扩展的性能表现:支持从 8 个 GPU 到 1000 多个 GPU 的一致且接近线性的扩展,便于灵活规划基础设施。
  • 原生 PyTorch 集成:依托分布式 PyTorch 技术,无需依赖外部模型并行框架,完整保留于 PyTorch 工作流之中。
  • 对生态系统的持续投入:体现 NVIDIA 在推动 PyTorch 发展方面的长期承诺,确保未来创新能够直接融入核心框架。
  • 面向生产的成熟方案:提供经过实际验证的稳定配置,全面支持主流开源 MoE 架构。

快速开始:训练大型 MoE 模型并对其进行基准测试

对于任何 PyTorch 开发者来说,NeMo Automodel 的入门过程既快速又亲切。

您可以使用提供的基准测试脚本和配置文件复现结果,或借助 NVIDIA 优化的技术来训练您自己的大规模 MoE 模型。

最低要求

建议使用至少 8 个 GPU(每个 GPU 具备 80 GB 显存)以复现基准测试结果,并支持高效的微调实验运行。

按照以下简单步骤,即可运行基准测试或微调实验:

# 1. Pull the NeMo docker image and start a container
docker pull nvcr.io/nvidia/nemo:25.09
docker run -it -d --ulimit memlock=-1 --ulimit stack=67108864 --gpus all nvcr.io/nvidian/nemo:25.09 bash

# 2. Once  inside the container, clone the repo and navigate to Automodel
git clone https://github.com/NVIDIA-NeMo/Automodel.git
cd Automodel

运行基准测试

示例: 在 8 个 GPU 上对 Qwen3 MoE 30B 进行基准测试

torchrun --nproc-per-node 8 nemo_automodel/recipes/llm/benchmark.py \
  --config examples/benchmark/configs/qwen3_moe_30b_te_deepep.yaml

运行微调

示例: 微调 Qwen3 MoE 30B

注意:

  • 请先从 Hugging Face 下载模型检查点: hf download Qwen/Qwen3-30B-A3B
  • 若遇到数据集实例化错误,建议升级数据集库至最新版本: pip install --upgrade datasets
torchrun --nproc-per-node 8 examples/llm_finetune/finetune.py --config examples/llm_finetune/qwen/qwen3_moe_30b_te_deepep.yaml

可用配置文件:

  • deepseek_v3_te_deepep.yaml – DeepSeek V3 (671B parameter)
  • kimi_k2_te_deepep.yaml – Optimized configuration for Kimi K2
  • qwen3_moe_30b_te_deepep.yaml – Qwen3 MoE 30B with full NVIDIA optimizations
  • gptoss_20b_te_deepep.yaml – GPT-OSS 20B with FlexAttention
  • gptoss_120b_te_deepep.yaml – GPT-OSS 120B production configuration

查看文档,以获取完整的性能说明和实施细节。

展望未来:携手推进开放式 MoE 训练

这一版本标志着通过加速的 PyTorch 实现大规模混合专家(MoE)训练迈出了重要一步,但这仅仅是个开端。

我们正在积极开展以下工作:

扩展模型支持:引入新的 MoE 架构与混合架构。

  • 更深层次的优化:持续改进内核层级设计与通信机制,以进一步提升运行效率。
  • 技术深度解析:深入阐述 NeMo AutoModel 的 MoE 架构设计及其性能优化技术。
  • 更广泛的基准测试:在多种硬件平台与集群配置中扩展性能验证,全面评估系统表现。

我们期待您开始使用 NeMo Automodel 并加入这一探索之旅——尝试不同配置,分享使用成果,并通过 GitHub Issues 提交反馈。您的见解将有助于推动新一代可扩展的开源 AI 训练工具的发展。

 

标签