Distributed Training

分布式训练

并行策略 · ZeRO/FSDP · 梯度同步 · NCCL 通信优化 · 排障面试题

trainingparallelismzerofsdpncclinterview
当前模块
学习进度0 / 7
Module Switcher
分布式训练学习模块
并行策略3
显存与通信2
面试与排障2
内容模块

并行策略总览

基础★☆☆⏱ 12 min

一句话结论

分布式训练并行策略的总公式是总 GPU 数由 DP、TP、PP 等维度相乘决定。

复习定位

维度内容
所属模块分布式训练
章节类型机制类
解决问题围绕数据并行、张量并行、流水线并行、ZeRO/FSDP、NCCL 和训练排障建立大模型训练系统答案。
面试抓手先画并行维度,再讲通信和显存代价。

先把分布式训练看成四个问题

分布式训练不是“卡越多越快”,而是在多张 GPU 之间拆分数据、模型、训练状态和通信。读这一页时先建立地图:模型放不下看显存拆分,单层太大看张量并行,层数太多看流水线并行,吞吐不够再扩大数据并行。

数据怎么拆DP/DDP 让每张卡处理不同 batch,通过 AllReduce 同步梯度。
模型怎么拆TP 切层内矩阵,PP 切层间 stage,EP 切 MoE 专家。
状态怎么拆ZeRO/FSDP 把参数、梯度、优化器状态从“每卡完整保存”变成“分片保存”。
通信怎么放TP 优先节点内 NVLink,PP/DP 更适合跨节点,NCCL 决定通信效率。

一张表先看清每种并行

策略解决什么问题核心通信放置直觉细节位置
DP / DDP扩大吞吐,吃更多数据每步 AllReduce 梯度拓扑要求相对低,可跨节点数据并行与梯度同步
TP单层矩阵太大或单层计算太重每层 AllGather / ReduceScatter尽量放在同节点 NVLink/NVSwitch 内张量并行与流水线并行
PP模型层数太多,整模型放不进单卡相邻 stage 传激活和梯度可以跨节点,但要减少 stage 间跳数张量并行与流水线并行
EPMoE 专家分布在不同 GPUAll-to-All需要高 bisection bandwidthNCCL 与通信优化
ZeRO / FSDP参数、梯度、优化器状态占显存太多AllGather / ReduceScatter通常作为 DP 的显存优化层ZeRO / FSDP

选型路径

分布式训练选型可以按“先能放下,再跑得快,再排得好”的顺序判断,不要一开始就堆所有并行策略。

单卡能放下模型状态吗不能就上 ZeRO/FSDP单层仍太大就上 TP层数太多就上 PP吞吐不足再扩大 DP
判断问题优先方案原因
模型状态放不下ZeRO-2 / ZeRO-3 / FSDP先减少每卡必须常驻的训练状态
单层参数或 attention 太大TP把层内矩阵切到多张卡上计算
层数太多、激活峰值高PP + activation checkpointing把不同层放到不同 stage,降低单卡常驻压力
模型能放下但吞吐不够DP / DDP复制模型副本,吃更多数据
MoE 专家很多EP专家分布式放置,按 token routing 通信

3D 并行的拓扑放置

大模型训练常见组合是 TP × PP × DP。总 GPU 数满足:

$$\text{Total GPUs} = TP \times PP \times DP$$

放置原则比公式更重要:TP 的通信最频繁,优先限制在单节点高速互联内;PP 只在相邻 stage 传激活,通常可以跨节点;DP 每步同步梯度,频率低于 TP,可以放在最外层扩吞吐。

并行维度推荐位置为什么
TP节点内 4/8 卡每层多次通信,跨节点延迟和带宽都容易成为瓶颈
PP跨节点 stage通信量主要是激活和梯度,低于 TP
DP多条 pipeline 副本之间每步同步一次梯度,适合做吞吐扩展

读这个模块的顺序

先读本页总览,理解每种并行策略解决的问题;再读数据并行,掌握 AllReduce 和梯度同步;然后读 TP/PP,理解层内和层间切分;最后读 ZeRO/FSDP 与 NCCL,把显存和通信问题串起来。

  1. 只想建立框架:读本页总览和选型路径。
  2. 要算通信量:读数据并行与 NCCL 两个 Tab。
  3. 要讲大模型训练配置:读 TP/PP 和 ZeRO/FSDP。
  4. 要准备面试排障:读排障与面试计算题。

关联模块

  • GPU 硬件与资源共享:提供 SM、HBM、NVLink、MIG/MPS、利用率诊断等底层直觉。
  • LLM 推理系统:提供 Prefill/Decode、KV Cache、Serving Engine 和推理优化语境。
  • Kubernetes 核心:提供调度、资源模型、控制器和扩展机制。
  • 分布式训练 / 调度与集群:提供多卡通信、队列、公平性、拓扑和容错背景。