并行策略总览
基础★☆☆⏱ 12 min一句话结论
分布式训练并行策略的总公式是总 GPU 数由 DP、TP、PP 等维度相乘决定。
复习定位
| 维度 | 内容 |
|---|---|
| 所属模块 | 分布式训练 |
| 章节类型 | 机制类 |
| 解决问题 | 围绕数据并行、张量并行、流水线并行、ZeRO/FSDP、NCCL 和训练排障建立大模型训练系统答案。 |
| 面试抓手 | 先画并行维度,再讲通信和显存代价。 |
先把分布式训练看成四个问题
分布式训练不是“卡越多越快”,而是在多张 GPU 之间拆分数据、模型、训练状态和通信。读这一页时先建立地图:模型放不下看显存拆分,单层太大看张量并行,层数太多看流水线并行,吞吐不够再扩大数据并行。
一张表先看清每种并行
| 策略 | 解决什么问题 | 核心通信 | 放置直觉 | 细节位置 |
|---|---|---|---|---|
| DP / DDP | 扩大吞吐,吃更多数据 | 每步 AllReduce 梯度 | 拓扑要求相对低,可跨节点 | 数据并行与梯度同步 |
| TP | 单层矩阵太大或单层计算太重 | 每层 AllGather / ReduceScatter | 尽量放在同节点 NVLink/NVSwitch 内 | 张量并行与流水线并行 |
| PP | 模型层数太多,整模型放不进单卡 | 相邻 stage 传激活和梯度 | 可以跨节点,但要减少 stage 间跳数 | 张量并行与流水线并行 |
| EP | MoE 专家分布在不同 GPU | All-to-All | 需要高 bisection bandwidth | NCCL 与通信优化 |
| ZeRO / FSDP | 参数、梯度、优化器状态占显存太多 | AllGather / ReduceScatter | 通常作为 DP 的显存优化层 | ZeRO / FSDP |
选型路径
分布式训练选型可以按“先能放下,再跑得快,再排得好”的顺序判断,不要一开始就堆所有并行策略。
| 判断问题 | 优先方案 | 原因 |
|---|---|---|
| 模型状态放不下 | ZeRO-2 / ZeRO-3 / FSDP | 先减少每卡必须常驻的训练状态 |
| 单层参数或 attention 太大 | TP | 把层内矩阵切到多张卡上计算 |
| 层数太多、激活峰值高 | PP + activation checkpointing | 把不同层放到不同 stage,降低单卡常驻压力 |
| 模型能放下但吞吐不够 | DP / DDP | 复制模型副本,吃更多数据 |
| MoE 专家很多 | EP | 专家分布式放置,按 token routing 通信 |
3D 并行的拓扑放置
大模型训练常见组合是 TP × PP × DP。总 GPU 数满足:
放置原则比公式更重要:TP 的通信最频繁,优先限制在单节点高速互联内;PP 只在相邻 stage 传激活,通常可以跨节点;DP 每步同步梯度,频率低于 TP,可以放在最外层扩吞吐。
| 并行维度 | 推荐位置 | 为什么 |
|---|---|---|
| TP | 节点内 4/8 卡 | 每层多次通信,跨节点延迟和带宽都容易成为瓶颈 |
| PP | 跨节点 stage | 通信量主要是激活和梯度,低于 TP |
| DP | 多条 pipeline 副本之间 | 每步同步一次梯度,适合做吞吐扩展 |
读这个模块的顺序
先读本页总览,理解每种并行策略解决的问题;再读数据并行,掌握 AllReduce 和梯度同步;然后读 TP/PP,理解层内和层间切分;最后读 ZeRO/FSDP 与 NCCL,把显存和通信问题串起来。
- 只想建立框架:读本页总览和选型路径。
- 要算通信量:读数据并行与 NCCL 两个 Tab。
- 要讲大模型训练配置:读 TP/PP 和 ZeRO/FSDP。
- 要准备面试排障:读排障与面试计算题。
关联模块
GPU 硬件与资源共享:提供 SM、HBM、NVLink、MIG/MPS、利用率诊断等底层直觉。LLM 推理系统:提供 Prefill/Decode、KV Cache、Serving Engine 和推理优化语境。Kubernetes 核心:提供调度、资源模型、控制器和扩展机制。分布式训练 / 调度与集群:提供多卡通信、队列、公平性、拓扑和容错背景。