Megatron-Core 是 NVIDIA 推出的大规模语言模型训练框架,可用于训练 2B 至 462B 参数量的 LLM。根据资料,它在 H100 GPU 上通过高级并行策略可实现最高 47% 的模型 FLOP 利用率(MFU)。
用途
Megatron-Core 面向大规模语言模型训练,适用于以下情况:训练参数量大于 10B 的模型;需要最大化训练效率(目标 MFU > 40%);使用 NVIDIA GPU(A100、H100);生产环境的大规模训练;需要对并行策略进行细粒度控制。资料同时指出,对于参数量小于 70B、希望使用更简单 API 的场景可考虑 PyTorch FSDP;DeepSpeed 设置更简单,适合小于 100B 的模型;HuggingFace Accelerate 适合原型开发;LitGPT 为教育用途的单文件实现。
主要能力
Megatron-Core 支持多种并行策略:张量并行(TP)、流水线并行(PP)、数据并行(DP)、上下文并行(CP)和专家并行(EP)。资料给出了不同模型规模对应的并行配置参考,例如 7B 模型在 8 张 GPU 上使用 TP=1、PP=1、DP=8、CP=1;70B 模型在 64 张 GPU 上使用 TP=4、PP=4、DP=4、CP=1;405B 模型在 128 张 GPU 上使用 TP=8、PP=8、DP=2、CP=2。
框架支持 Mixture of Experts(MoE)训练,例如 Mixtral 8x7B,可通过专家并行将不同专家分布到不同 GPU 上。资料举例说明,不使用 EP 时每 GPU 内存为 8 个专家 × 7B = 56GB,使用 EP=4 时每 GPU 为 2 个专家 × 7B = 14GB,可节省 75% 内存。
资料还提到在 H100 上使用 FP8 混合精度可相对 BF16 获得 1.5-2 倍加速,并支持 Flash Attention、序列并行等优化选项。
使用方式
安装方式支持 Docker(推荐)和 pip:
# Docker (recommended)
docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:25.04-py3
# Or pip
pip install megatron-core
简单分布式训练示例(使用 2 GPU 数据并行):
torchrun --nproc_per_node=2 examples/run_simple_mcore_train_loop.py
LLaMA-3 8B 训练示例:
./examples/llama/train_llama3_8b_fp8.sh
资料提供了三个工作流示例。工作流一为使用 3D 并行训练 LLaMA 风格模型,包含选择并行配置、配置训练超参数、启动分布式训练、监控性能指标四个步骤,并给出 70B 模型的完整启动脚本示例,涉及 --tensor-model-parallel-size、--pipeline-model-parallel-size、--context-parallel-size、--sequence-parallel 等参数。启动方式包括单节点 bash train_llama_70b.sh 以及多节点 SLURM sbatch --nodes=8 --gpus-per-node=8 train_llama_70b.sh。
工作流二为配置 MoE 训练,涉及专家并行配置、MoE 超参数设置和启动训练,示例中使用 --expert-model-parallel-size、--num-experts、--moe-router-topk、--moe-router-load-balancing-type 等参数。
工作流三为性能优化,包括启用 Flash Attention、使用 FP8 精度(仅 H100)、优化 micro-batch 大小、调整并行度,示例参数包括 --use-mcore-models、--transformer-impl transformer_engine、--sequence-parallel、--fp8-hybrid。资料给出的 micro-batch 典型值为 7B 模型 4-8、70B 模型 1-2、405B 模型 1。
监控方面,资料建议跟踪 MFU(H100 上目标 >40%)、吞吐量(Tokens/sec/GPU)、内存使用(70B 模型每 GPU <80GB)以及 loss 是否稳定下降。
适用场景
资料列出的适用场景包括:训练大于 10B 参数的模型、追求最大效率(MFU > 40%)、使用 NVIDIA GPU(A100、H100)、生产级大规模训练、需要细粒度并行控制。
限制与常见问题
资料列出了若干常见问题及处理方式。低 GPU 利用率(MFU < 30%)的可能原因包括 micro-batch 过小、并行开销过大、未使用 Flash Attention,可通过增大 micro-batch、启用 --use-flash-attn 和 --sequence-parallel、将 TP 降至 8 以下等方式处理。显存不足可通过调整张量并行、开启梯度检查点(--recompute-granularity full 等)或使用 CPU/NVMe offloading(--cpu-optimizer)缓解。训练速度低于预期需检查网络瓶颈、流水线气泡和数据加载。Loss 发散可通过延长 warmup、梯度裁剪、较小初始化等方式稳定训练。
硬件要求方面:GPU 需 NVIDIA Ampere 及以上(A100、H100、B200),Turing 可用但较慢,FP8 需要 Hopper/Ada/Blackwell;多节点需要 InfiniBand 或 400Gb+ Ethernet;每 GPU 内存需求为 7B 模型 40GB+、70B 模型 80GB(TP=4)、405B 模型 80GB(TP=8、PP=8);70B 以上模型需要 1TB+ 高速 NVMe 用于检查点。
资料还提及进一步的参考文档,包括并行策略指南、性能基准、生产配置示例(LLaMA 3 405B、Nemotron-4 340B、DeepSeek-V3 671B)以及训练配方,但具体内容未在本资料中展开。