分布式训练:把大模型摊到千卡上

05-推理与工程 进阶 约 25 分钟 #分布式训练#数据并行#张量并行#流水线并行#ZeRO 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),并行策略细节建议对照 Megatron-LM 论文与 ZeRO 论文复核。

一句话定义

千卡训练大模型的并行策略四件套:数据并行(DP)(各卡完整模型、不同数据,梯度同步)、张量并行(TP)(单层矩阵切到多卡,NVIDIA Megatron 系)、流水线并行(PP)(层切到多卡、微批接力)、ZeRO/序列并行(优化器状态与激活切分省显存)——实际大训练是 3D/4D 混合并行的编排艺术。

为什么重要

175B 模型仅权重就 350GB(fp16),单卡显存 80GB——装不下就得切。并行策略是"算力换模型"的翻译层:不懂 DP/TP/PP/ZeRO 的取舍(通信量、显存、气泡),就无法规划训练集群、估算成本、诊断瓶颈。这是大模型工程与普通深度学习的分水岭。

前置知识

kp-006/014(Block 与优化器状态)、GPU 显存层级概念。

核心概念

  • 显存账本(为什么必须切):7B 模型混合精度训练 ≈ 权重 14GB + 梯度 14GB + Adam 状态 56GB(fp32 的 m/v)+ 激活若干 ≈ 100GB+——单卡 80GB 放不下 7B!AdamW 优化器状态是显存大头(kp-014 的账本),ZeRO 的靶心。
  • DP(数据并行):每卡完整模型副本、切数据,反向后 all-reduce 梯度——最简单但显存不省(每卡全量)。ZeRO 三级:ZeRO-1 切优化器状态、ZeRO-2 再切梯度、ZeRO-3 再切权重(每卡只存 1/N 权重,用时临时聚合)——通信换显存的杠杆。
  • TP(张量并行):单层内切矩阵(Megatron:注意力的 QKV 按头切、FFN 按列/行切)——前向后向各插入 all-reduce/all-gather 通信;好处:切得细、单卡显存占用均匀;只适合卡间高速互联(NVLink)——跨机 TP 会被通信延迟杀死。
  • PP(流水线并行):按层切(前 12 层在卡 1、后 12 层在卡 2…),micro-batch 接力——通信量小(只传层间激活)适合跨机;代价是流水线气泡( GPipe/1F1B 调度把气泡压到 (p−1)/(m+p−1))。
  • 3D 并行编排:TP 塞满节点内(NVLink 高速)、PP 跨节点(通信少)、DP 覆盖剩余卡——乘积=总卡数。例:Llama 级训练 = TP8 × PP8 × DP64 = 4096 卡。
  • MoE 的专家并行(EP):kp-022 的专家分驻不同卡 + all-to-all 通信路由 token——并行家族的第五成员。

原理与机制

三种并行的通信-显存-气泡三角:

策略通信量省显存气泡/瓶颈
DP+ZeRO梯度 all-reduce(大)ZeRO-3 切全量通信带宽
TP每层两次集合通信(频繁)均匀切要求 NVLink 内
PP层间激活(小、少次)按层切流水线气泡

选择逻辑:节点内用 TP(吃 NVLink)、跨节点用 PP(通信小)、再叠 DP 扩吞吐——Megatron 的 3D 公式化。

ZeRO 的显存-通信兑换率:ZeRO-3 前向时每层临时 all-gather 权重用完即弃——显存 ÷N、通信量 ×2(前后向各一次 gather);与 TP 的区别:ZeRO 是"用时聚合的临时切分",TP 是"永久的计算切分"(TP 减少激活显存,ZeRO 不减)。

重计算(gradient checkpointing)的补充角色:激活显存不够时"前向不存、反向重算"——显存省 60~80%、计算 +30%——与 kp-029 的"以算换存"同源思想在训练侧的形态。

图示

DP: 卡间切数据, 梯度all-reduce (+ZeRO切状态/梯度/权重)
TP: 卡间切单层矩阵 (QKV按头/FFN按列) — 需NVLink
PP: 卡间切层, micro-batch接力 — 跨机友好, 有气泡
3D编排例: TP8(节点内) × PP8(跨机) × DP64 = 4096卡
MoE+: 专家并行EP (all-to-all路由)
账本: 7B训练≈100GB+/卡 → 必须切 (ZeRO靶心=优化器状态)

直观类比

训练像"盖万米高楼":DP=多个施工队各盖一栋(各持全套图纸);TP=一层楼的柱子由多个班组同时浇(精细协作、必须同场);PP=楼层分工(一层一层向上接力,交接有等待);ZeRO=图纸与工具不每队配全、用时从中央库调用(省仓储,多跑腿)。

实例或案例

  • Megatron-LM:TP/PP 的工业标准实现(NVIDIA),3D 并行的教科书代码库。
  • BLOOM 训练日志:176B 在 384 卡上的 DP+PP 编排与 spike 处理(kp-013 联动的公开案例)。
  • FSDP(PyTorch 全分片):ZeRO-3 的官方框架化——中等规模训练的默认起点。

常见误区

  • 误区一:"卡越多越快(线性扩展)"。并行效率<100%:TP 通信、PP 气泡、DP 同步都在吃效率——MFU(模型算力利用率)35~50% 已是优秀训练。
  • 误区二:"TP 跨机也行"。TP 的每层两次通信在跨机网络(InfiniBand 延迟高)下成为灾难——TP 限制在 NVLink 域内是铁律。
  • 误区三:"显存不够只想到 ZeRO-3"。ZeRO-3 通信大;先试梯度检查点(kp-013)+ ZeRO-1/2 + 激活切分——组合拳按"通信代价"从低到高打。

与其他知识点的关系

  • kp-006/014/022:被切的权重/优化器/专家。
  • kp-013:稳定性在分布式下的新变量(数值一致性)。
  • kp-023:推理侧也有 TP/PP(vLLM 的 tensor parallel)。

自测题

  1. 7B 模型混合精度训练的显存账本大约多少?大头是什么?

答:≈100GB+:权重 14 + 梯度 14 + Adam 状态 56(fp32 m/v)+ 激活——优化器状态是大头(ZeRO-1 的靶心)。

  1. 为什么 TP 不能跨机、PP 适合跨机?

答:TP 每层频繁集合通信(需 NVLink 低延迟);PP 只传层间激活(通信小但需micro-batch填气泡)——通信模式决定各自的位置。

  1. ZeRO-3 与 TP 的本质区别?

答:ZeRO-3 是"存储切分"(用时临时聚合全量权重,省权重/优化器显存);TP 是"计算切分"(永久性矩阵切分,还省激活)——一个省存储一个分计算。

延伸阅读

  • Shoeybi 等, "Megatron-LM: Training Multi-Billion Parameter Language Models"(2019)。
  • Rajbhandari 等, "ZeRO: Memory Optimizations Toward Training Trillion Parameter Models"(2020)。
  • Huang 等, "GPipe"(2019,流水线并行)。