GPipe vs. 1F1B 流水线并行策略时序对比
太棒了,画图是理解并行策略最高效的方式!
为了让你一眼看懂,我为你绘制了一张**时序对比图(Time Schedule)**。
我们设定一个简单的场景:
* **3 个工人**(GPU 0, GPU 1, GPU 2)
* **4 个零件**(Micro-batch 1, 2, 3, 4)
请看下面的“草图”对比:
### 1. 😭 朴素模式 (GPipe):大片空白,效率低
> **特点**:一根筋。所有人必须先把所有零件的**初加工(F)** 做完,再统一做**精加工(B)**。
```text
时间轴 (Time) --->
[T1] [T2] [T3] [T4] [T5] [T6] [T7] [T8] [T9] [T10] [T11] [T12]
---------------------------------------------------------------------
GPU 0 | F1 | F2 | F3 | F4 | | | | | B1 | B2 | B3 | B4 |
GPU 1 | | F1 | F2 | F3 | F4 | | | B1 | B2 | B3 | B4 | |
GPU 2 | | | F1 | F2 | F3 | F4 | B1 | B2 | B3 | B4 | | |
---------------------------------------------------------------------
^^^^^^^^^^^^^^^
注意中间这块巨大的空白(气泡)
GPU0 和 GPU1 都在发呆!
- F: Forward (前向计算)
- B: Backward (反向传播)
- 空白: 气泡 (Bubble),显卡在闲置烧钱。
2. 🤩 1F1B 模式:紧凑穿插,效率高
特点:灵活插单。只要下游把“修改意见(B)”传回来,我就立刻处理,处理完马上接着做下一个新零件(F)。
时间轴 (Time) --->
[T1] [T2] [T3] [T4] [T5] [T6] [T7] [T8]
---------------------------------------------
GPU 0 | F1 | F2 | F3 | B1 | F4 | B2 | B3 | B4 |
GPU 1 | | F1 | F2 | B1 | F3 | B2 | F4 | B3 | ...
GPU 2 | | | F1 | B1 | F2 | B2 | F3 | B3 | ...
---------------------------------------------
^^^^^^^^^^
看这里!(F) 和 (B) 完美交错
图解划重点:
-
热身 (Warm-up):
- 看 GPU 0 的前三步
F1 -> F2 -> F3。这是为了先把流水线填满。此时下游还没有反馈回来,所以只能闷头做 Forward。
- 看 GPU 0 的前三步
-
1F1B 稳定期 (Steady State):
- 看 GPU 0 的
T4和T5:T4 (B1):收到了下游传回来的第 1 个零件的梯度,立刻处理 B1(释放显存!)。T5 (F4):处理完旧的,马上做新的 F4。
- 这就是 “One Forward, One Backward”。
- 看 GPU 0 的
-
消灭气泡:
- 对比两张图的长度,1F1B 明显更短(假如所有任务做完)。
- 中间几乎没有连续的空白,显卡始终处于忙碌状态。

被折叠的 条评论
为什么被折叠?



