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 组。

引用本概念的论文

相关概念