Hotdry.
mlops

Megatron-LM 分布式训练:3D 混合并行与故障容错检查点

在多节点 GPU 集群上构建万亿参数 Transformer 训练基础设施,融合张量、管道、序列并行,通信重叠优化及容错检查点策略,提供具体参数配置与落地清单。

在训练万亿参数规模的 Transformer 模型时,单一节点的 GPU 资源已无法满足需求,必须构建高效的分布式训练基础设施。Megatron-LM 作为 NVIDIA 开源的参考实现,通过融合张量并行(TP)、管道并行(PP)和数据并行(DP),并可选引入序列并行(SP)或上下文并行(CP),实现 3D 混合并行策略。这种方法不仅能有效分配计算负载,还能通过通信重叠和故障容错检查点机制,确保训练在数千 GPU 集群上的稳定性和高吞吐量。本文聚焦于如何配置这些并行机制,提供可直接落地的参数清单和监控要点,帮助工程团队快速搭建生产级训练栈。

3D 混合并行的核心配置原则

首先,理解并行维度的划分:总 GPU 数量 world_size = TP × PP × DP × SP。TP 用于层内张量切分,通常限制在单节点内(如 8 GPUs,利用 NVLink),以最小化高带宽通信需求;PP 将 Transformer 层堆栈切分为阶段,每个阶段跨节点部署,采用 1F1B(一前向一反向)调度减少气泡;DP 则复制完整模型副本,处理数据批次并平均梯度;SP/CP 进一步沿序列维度切分激活,适用于长序列训练,减少内存占用。

配置时,先根据硬件拓扑选择 TP 大小。例如,在 H100 集群(每节点 8 GPUs)上,设置 --tensor-model-parallel-size 8,确保 TP 组内通信高效。PP 大小需使层数可整除(如 96 层模型用 PP=16,每阶段 6 层),通过 --pipeline-model-parallel-size 16 指定。同时,启用 --sequence-parallel 以融合 SP,公式为 DP = world_size / (TP × PP × SP)。GitHub 基准显示,这种 3D 配置在 6144 H100 上训练 462B 参数模型,MFU 达 47%。

落地参数清单:

  • 并行尺寸:TP=8, PP=16-32, SP=2-4, DP = 剩余(e.g., 1024 GPUs → DP=1024/(8162)=4)。
  • 微批次调度--micro-batch-size 1, --global-batch-size 1024(确保微批数 ≥ 2×PP,如 64 微批填充 32 阶段管道)。
  • 虚拟管道--virtual-pipeline-model-parallel-size 2 细分阶段,平衡负载。
  • 内存优化--fp16--bf16,结合 --sequence-parallel 减激活内存 50%。

通信重叠优化:隐藏 All-Reduce 延迟

通信是分布式训练瓶颈,Megatron-LM 通过细粒度重叠机制,将 DP 的梯度 reduce-scatter、TP 的 all-gather/reduce-scatter、PP 的阶段间传递,以及 SP 的序列切分通信,隐藏在计算之下。核心是分布式优化器(DistributedOptimizer)和 TP 通信重叠。

关键参数:

  • DP 重叠:--overlap-grad-reduce(层级 chunked reduce-scatter,与后层 backward 重叠);--overlap-param-gather(参数 all-gather 与 optimizer step 重叠)。
  • TP 重叠:--tp-comm-overlap,将 all-gather 拆为 ring-based P2P,交错 GEMM 计算,实现 80%+ 重叠率。
  • PP/SP 默认重叠:1F1B 稳态下自动隐藏非阻塞通信。

监控要点:

  • MFU 指标:目标 >45%,用 nvidia-smi 和 Megatron 日志追踪 GEMM/Comm 比例。
  • 带宽利用:NVLink >90%,InfiniBand >80%(ibv_devinfo 检查)。
  • 气泡率:管道填充率 >95%,通过 --pipe-dream-backend 调整调度。

在强扩展测试中,从 96 到 4608 GPUs,MFU 从 47% 降至 42%,主要因通信暴露,但重叠优化缓解了此问题。

故障容错检查点策略

多节点集群故障频发(如节点掉线、链路抖动),Megatron-LM 支持弹性检查点,能在不同 TP/PP 尺寸间重塑(reshaping),无需从头重训。结合 ZeRO-style 分片,存储优化状态。

实现步骤:

  1. 周期检查点--save-interval 1000(每 1000 step 保存分片检查点),--checkpoint-model-parallel-size TP 匹配当前并行。
  2. 恢复机制:故障后重启,指定 --resume-from-checkpoint path,自动检测并重塑布局(支持 TP 8→16 转换)。
  3. 分片存储:用 Megatron Bridge 转为 Hugging Face 格式,便于异构恢复。
  4. 回滚阈值:MFU <40% 或 OOM 时,回滚至上稳态检查点;监控脚本:watch -n 60 'grep MFU logs | tail'

风险控制:

  • 不平衡风险:阶段激活内存差 >20%,用 --balance-stage-memory 调整层分配。
  • 通信死锁:启用 --no-masked-softmax-fusion 测试;超时阈值 300s 重启 rank。

完整启动脚本示例(1024 GPUs,1T 参数目标)

torchrun --nproc_per_node=8 --nnodes=128 --node_rank=$NODE_RANK \
  examples/pretrain_gpt.sh \
  --tensor-model-parallel-size 8 \
  --pipeline-model-parallel-size 16 \
  --sequence-parallel \
  --micro-batch-size 1 --global-batch-size 2048 \
  --overlap-grad-reduce --tp-comm-overlap \
  --save-interval 500 --resume-from-checkpoint latest \
  --fp16 --data-path your_dataset

此配置预计 MFU 45%+,支持万亿参数扩展。通过上述参数与监控,训练栈可在生产环境中稳定运行数月。

资料来源

查看归档