bubble问题如何量化?GPipe vs `PipeDrea…Pipeline Parallelism(PP)的bubble问题如何量化?GPipe vs PipeDream?
流水线中 bubble 指部分 stage 在等待数据时的空闲。设 stage 数 (S)、micro-batch 数 (M):GPipe 等 G-MB 策略(先全 forward 再全 backward)下,前向填满管道要 (S) 步,后向再 (S) 步,首尾各有约 (S-1) 个「空 slot」,理想稳定阶段有 (M-S) 个有效 slot。Bubble 比例可近似为 (\frac{2(S-1)}{M + 2(S-1)}),(M) 越大 bubble 占比越低,但显存随 (M) 增大。
GPipe:同一 batch 切成 (M) 个 micro-batch,按序全部 forward 完再全部 backward。实现简单,但 显存峰值高(要存 (M) 份激活),且 bubble 明显;通过增大 (M) 摊薄 bubble,代价是激活重计算或显存压力。
PipeDream:1F1B(One Forward One Backward)或 stale gradient 等策略,同一 micro-batch 的 backward 不必等全 batch forward 结束,管道中同时有不同 batch 的 F/B,显存与 bubble 折中。PipeDream 还引入 weight stashing(存多版本权重以应对流水线中并行的不同 batch),复杂度更高;Megatron 的 1F1B 不存多版本,用 recompute 换显存,bubble 仍可量化为与 (S、M) 相关的公式,通常优于 GPipe。
| 返回模块 | 返回总览 |