MT-MegatronLM:国产训练框架逆袭!三合一并行+FP8黑科技,大模型训练效率暴涨200%

22 阅读5分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


"还在为千亿模型训练烧钱?国产框架让8卡GPU跑出80卡的效果!"

大家好,我是蚝油菜花。当国外大厂用天价GPU集群训练AI时,中国工程师用算法魔法实现了算力暴击!你是否正在经历:

  • 👉 训练百亿参数模型,显存爆炸导致Batch Size只能个位数
  • 👉 多模态任务中,不同数据流并行效率不足50%
  • 👉 尝试MoE架构时,专家路由拖垮整体训练速度...

今天揭秘的 MT-MegatronLM ,正在改写AI训练的游戏规则!这个由摩尔线程开源的硬核框架:

  • 三合一混合并行:模型/数据/流水线并行智能切换,GPU利用率直冲90%+
  • FP8核弹级优化:相比FP16显存占用减半,吞吐量提升200%
  • MoE专属加速:专家并行策略让稀疏训练速度提升3倍
  • 国产通信库MCCL:比NCCL延迟降低40%,8卡跑出竞品80卡效果

某NLP团队实测显示——1750亿参数模型训练时间从28天压缩到9天,省下90%算力成本!想知道如何用20行代码激活这个国产黑科技?深度解析马上开始!

🚀 快速阅读

MT-MegatronLM 是摩尔线程推出的开源混合并行训练框架,主要用于高效训练大规模语言模型。

  1. 核心功能:支持密集模型、多模态模型及混合专家模型的训练,提供高效的混合并行训练策略。
  2. 技术原理:通过模型并行、数据并行和流水线并行等技术,结合混合精度训练和高性能算子库,显著提升训练效率。

MT-MegatronLM 是什么

MT-MegatronLM

MT-MegatronLM 是摩尔线程推出的面向全功能 GPU 的开源混合并行训练框架,主要用于高效训练大规模语言模型。支持 dense 模型、多模态模型及 MoE(混合专家)模型的训练。框架基于全功能 GPU 支持 FP8 混合精度策略、高性能算子库和集合通信库,显著提升了 GPU 集群的算力利用率。

通过模型并行、数据并行和流水线并行等技术,实现了高效的分布式训练,支持混合精度训练以减少内存占用和加速计算。

MT-MegatronLM 的主要功能

  • 支持多种模型架构
    • 密集模型(Dense Models):支持传统的 Transformer 架构,如 GPT、BERT 等。
    • 多模态模型(Multimodal Models):可以处理包含文本、图像等多种模态数据的模型。
    • 混合专家模型(MoE Models):支持稀疏激活的混合专家架构,提高模型的灵活性和效率。
  • 高效混合并行训练
    • 模型并行(Model Parallelism):将模型参数分布在多个 GPU 上,突破单 GPU 内存限制。
    • 数据并行(Data Parallelism):通过在多个 GPU 上分配数据,加速训练过程。
    • 流水线并行(Pipeline Parallelism):将模型划分为多个阶段,通过流水线方式提高吞吐量。
  • 高性能优化:支持 FP8 混合精度策略,减少内存占用,加速计算。集成高性能算子库(如 muDNN),提升计算效率。使用优化的集合通信库(如 MCCL),减少通信开销。
  • 灵活的扩展性:支持从小型到超大规模模型的训练,适应不同硬件配置。优化了多 GPU 集群的并行训练,提升集群利用率。

MT-MegatronLM 的技术原理

  • 混合并行策略
    • 模型并行:将模型参数按维度切分,分配到多个GPU上,减少单卡显存占用。
    • 流水线并行:将模型划分为多个阶段,分配到不同GPU,通过微批次传递提高吞吐量。
    • 数据并行:将数据集划分到不同GPU,执行相同模型,通过All-Reduce汇总梯度。
  • 混合精度训练:使用AMP或BF16等技术,前向和反向传播中使用低精度计算,关键路径使用高精度保持数值稳定。
  • 高效优化器与梯度聚合:提供融合的Adam优化器,结合ZeRO或1-bit Adam等技术,减少通信开销,节省显存。使用All-Reduce等操作汇总梯度,确保全局梯度一致性。
  • 高性能算子库:如muDNN,针对GPU优化,提升计算效率。
  • 集合通信库:如MCCL,优化GPU间通信,减少通信开销。

如何运行 MT-MegatronLM

Installation

你可以创建一个名为 megatron_dev 的目录,并使用以下命令克隆 Megatron-LMMT-MegatronLMmegatron_dev

# Megatron-LM
git clone https://github.com/NVIDIA/Megatron-LM.git
pushd Megatron-LM
git checkout -b core_r0.9.0 core_r0.9.0
popd

# megatron-lm-musa-patch
git clone https://github.com/MooreThreads/MT-MegatronLM.git
pushd MT-MegatronLM
popd

Getting started

Llama3

cd MT-MegatronLM/examples/llama3
bash dist_run_pretrain_megatron_llama3_musa.sh

Mixtral

cd MT-MegatronLM/examples/mixtral
bash dist_run_pretrain_megatron_llama3_musa.sh

Llava

cd MT-MegatronLM/examples/llava

DeepSeekV3

cd MT-MegatronLM/examples/deepseekv3

在 deepseek-v2/v3 中,前几个密集层的 ffn-size 与 moe-ffn-size 不同。因此需要修改 Megatron 中的一些代码以支持这种情况,而不使用 GroupGEMM。

修改 Megatron 中的一些代码

Megatron-LM/megatron/core/transformer/mlp.py

在第63行添加:

if is_expert:
    ffn_hidden_size = self.config.moe_ffn_hidden_size

在第83行修改:

-         self.config.ffn_hidden_size,
+         self.config.ffn_hidden_size if not is_expert else self.config.moe_ffn_hidden_size,

Megatron-LM/megatron/core/transformer/moe/experts.py

注释第757-760行:

+      # assert (
+      #     self.config.moe_ffn_hidden_size == self.config.ffn_hidden_size
+      # ), "Please use GroupedMLP or TEGroupedMLP when moe_ffn_hidden_size is \
+      #         different from ffn_hidden_size"

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦