要解决的问题
大模型的参数、梯度、优化器状态和激活远超单张 GPU 的显存,必须把训练拆到成百上千张卡上。难点在于通信开销、负载不均、内存碎片、故障恢复,以及对网络拓扑的感知。
核心方法
标准组合由几种并行方式叠加而成:
- 数据并行:每张卡持有完整模型,处理不同的数据,再同步梯度。
- 状态分片:把参数、梯度和优化器状态切分到各张卡上,按需收集,如 ZeRO 与 FSDP。
- 张量并行:把单个矩阵乘法切分到多张卡上。
- 流水线并行:把模型按层切分成多段,不同的卡负责不同的段,用微批次填满流水线。
- 专家并行:混合专家模型中,把不同专家放在不同的卡上。
- 激活检查点与重计算:只保留检查点边界等必要激活,其余中间量在反向传播时重算,用计算换显存;这是一种内存优化技术,本身不是并行方式。
数据并行、张量并行、流水线并行同时使用,称为 3D 并行。
代表工作
- GPipe(2018)与 PipeDream(2018):流水线并行的代表工作,分别采用同步与异步的流水线调度。
- Megatron-LM(2019):NVIDIA 提出的 Transformer 张量并行方案;2021 年的后续工作把张量、流水线和数据并行组合成 3D 并行。
- ZeRO(2019):DeepSpeed 中的状态分片方法,按阶段切分优化器状态、梯度和参数。
- PyTorch FSDP:2022 年随 PyTorch 1.11 引入原生 API 原型;同名系统论文发表于 2023 年。它将数据并行中的参数、梯度和优化器状态分片。
- TorchTitan(2024):用 PyTorch 原生组件把多种并行方式串联起来的训练平台。
学习顺序
- 分布式数据并行(DDP)与 FSDP。
- 张量并行。
- 流水线并行。
- 混合专家模型的专家并行。