Pipeline-Parallelism
把模型按 layer 切成多个 stage,每个 stage 放到一组 GPU(一个 “pipeline stage”)。mini-batch 再切成若干 micro-batch,让不同 micro-batch 在不同 stage 同时流动,像工厂流水线一样。核心痛点是首尾的 “bubble”(pipeline 空转)和 activation 内存——GPipe / PipeDream / 1F1B / Interleaved 1F1B 是一条围绕降 bubble 的演进线。跨节点通信只发生在 stage 边界上(send/recv 激活),带宽要求远低于 TP,所以 PP 是 3D 并行里跨机器的主力。
核心思想
模型 L 层,切成 S 个 stage 每 stage L/S 层;batch 切成 M 个 micro-batch:
stage0: mb0 → mb1 → mb2 → mb3 → mb4 → ...
stage1: mb0 → mb1 → mb2 → mb3 → ...
stage2: mb0 → mb1 → mb2 → ...
stage3: mb0 → mb1 → ...
- stage 间只传 activation(forward)和 gradient(backward),通信量 ∝ batch × hidden × seq_len
- 对比 TP:TP 每层 AllReduce,PP 每 L/S 层 send/recv,通信量大约 1/(L/S) 但通信次数 × S 流水
Bubble:warm-up (前 S-1 个 micro-batch stage S-1 还没开始工作) + cool-down。bubble 占比 ≈ (S-1)/(M + S-1),M 要远大于 S。
演进
| 方案 | 特点 |
|---|---|
| GPipe (2018) | 所有 micro-batch forward 完再统一 backward,activation 占内存 O(M) |
| PipeDream (2019) | 1F1B:每 stage 做完 forward 立即做该 micro-batch 的 backward,activation O(S) |
| Interleaved 1F1B (Megatron 2021) | 每卡放多个非相邻 stage,bubble 再降一半,通信翻倍 |
| Zero-bubble PP (2023) | 手工调度 weight gradient 计算填进 bubble,bubble ~ 0 |
| Chimera / DualPipe (DeepSeek-V3) | 双向 pipeline 同时跑,通信与计算完全 overlap |
Activation 内存问题
1F1B 下每 stage 需要缓存 M 个 activation(对应 in-flight micro-batch)。与:
- Activation checkpointing / recomputation:反向时重算前向,省内存换 33% 算力
- ZeRO / FSDP:把 optimizer / grad / param 再 shard 到 DP 维度
- Sequence parallelism:LayerNorm 的 activation 按 seq 切
与其他并行维度的组合
典型 3D 并行(Megatron-Turing NLG 530B、DeepSeek-V3):
- TP 机内 8 卡(NVLink)
- PP 跨机器 + 跨 stage(IB)
- DP 跨 PP 副本(最外层)
对于 MoE:再加 EP 维度,通常 EP ⊆ DP 组。
引用本概念的论文
- Chakra、ProTrain、BOUTE、BOOST、HexiScale、NEST、HetRL — 训练 scheduler / planner
- AXLearn、ParallelKittens、DistCA、NVIDIA-Disagg-Study — 框架 + 分布式 attention + disagg 里的 PP
- StreamDiffusionV2、AttnRes、LayeredPrefill — 非 standard PP 用法(流式推理 / layer 调度)
相关概念
- 并行维度:Tensor-Parallelism、Data-Parallel、Expert-Parallelism、Context-Parallelism
- 内存:ZeRO、FSDP、Activation Checkpointing
- 实现:Megatron、DeepSpeed
- 通信:Collective-Communication