Pipeline Parallelism
流水线并行(Pipeline Parallelism, PP) 将模型的层按顺序切分为多个 阶段(stage),每个 stage 分配到不同的 GPU(或 GPU 组)上。一个 mini-batch 被进一步拆成多个 微批次(micro-batch),不同 micro-batch 在不同 stage 上形成流水线重叠,提升硬件利用率。
核心思路
假设模型有 层,切成 个 stage,每个 stage 包含 层:
- Stage 0:第 1 ~ 层
- Stage 1:第 ~ 层
- …
- Stage :最后 层
前向时,每个 stage 完成本地层的计算后,把激活值传给下一个 stage(点对点通信)。反向时,梯度沿反方向传播。
流水线气泡
朴素的 PP 有严重的 气泡(bubble) 问题:当 stage 0 做完前向等着做反向时,中间大量时间处于空闲状态。
气泡的大小与 stage 数和 micro-batch 数的比值相关。设 为 stage 数, 为 micro-batch 数,气泡比例约为:
因此增大 (更多 micro-batch)可以摊薄气泡,但这受限于显存——每个 micro-batch 的激活值都需要保留到反向传播。
调度策略
GPipe 调度
最简单的方式:所有 micro-batch 的前向先全部执行完,再统一执行反向。气泡集中在中间。
1F1B 调度
1F1B(One Forward One Backward) 交替执行前向和反向。每个 stage 在完成一个 micro-batch 的前向后,尽快开始另一个 micro-batch 的反向,从而在前向和反向之间形成更紧凑的流水线。
优势:显存占用更低(不需要同时保留所有 micro-batch 的激活值),气泡也有所减少。
交错虚拟流水线(Interleaved Virtual Pipeline)
Megatron 支持的进一步优化:每个 GPU 不再只负责连续的一段层,而是交替负责多个不连续的层段(virtual stages)。代价是通信次数增多,但气泡比例可以进一步降低。
通信特征
- 通信类型:点对点(point-to-point),相邻 stage 之间传递激活值或梯度
- 通信量:每个 micro-batch 的中间激活值大小,通常远小于 TP 的 all-reduce 量
- 通信拓扑:线性链状,相邻 stage 之间。可以跨节点部署(通信频率低,对带宽要求不如 TP 严格)
与其他并行的组合
PP 通常不单独使用,而是和 TP、DP 组合成 3D 并行:
- 节点内:TP 切分每一层的权重
- 节点间(相邻节点):PP 切分不同层
- 跨节点组:DP 复制整个 pipeline 做数据并行
这种组合中,PP 负责在层间维度做切分,使模型可以跨越多个节点的显存上限。
PP 在 RL 系统中的特殊性
在 RL 系统中使用 PP 时,权重更新的同步变得更复杂。slime 的 bucket 策略需要手动处理 PP 维度的参数聚合——不同于 verl 只有 TP 的简单场景,PP 要求跨 stage 协调权重的收集和广播。
相关页面
- LLM 并行策略总览见 llm-parallelism
- 层内切分见 tensor-parallelism
- 数据并行见 data-parallelism
Comments