← 关联知识节点:并行训练:DP / ZeRO / FSDP / TP / PP
交互工具 · 直觉

流水线气泡时间网格

流水线并行最疼的一笔账:启动时下游没事干、收尾时上游没事干,这些空转就是气泡。好在有个免费的气泡阀——把全局批次拆成越多份 micro-batch,气泡越薄。拧两个旋钮看网格怎么被填满、气泡怎么从 46.7% 压到 9.9%,再拧过头看看「矩阵乘变矮」的墙在哪。

纯前端纯几何:气泡率 = (p−1)/(m+p−1),网格每行 = 段 i 的空转头(i−1) + 忙(m) + 空尾(p−i),空转格 p×(p−1) 与公式严格同源(拧任何参数两处读数恒一致);文章三档 8 段 × m=8/32/64 → 46.7%/17.9%/9.9% 逐位复现;1F1B 调度压在飞激活显存、气泡率同式(文章原文)。零 API、零随机。

流水线并行把模型按层切成 p 段、把全局批次拆成 m 份 micro-batch 排队流过——但启动时下游没事干、收尾时上游没事干, 这些空转就是气泡: 气泡率 = (p−1)/(m+p−1)。拧两个旋钮,看气泡怎么变薄、在哪撞墙。
文章三档锚点

时间网格:每段一行,青 = 干活、灰 = 空转

时间轴 39 格 · 空转 56 / 忙 256
段 1
段 2
段 3
段 4
段 5
段 6
段 7
段 8

左侧空位 = 启动时下游等着第一份 micro-batch 流过来;右侧空位 = 收尾时上游已经干完。两块空位合计恒为 p−1 格/段。

气泡率
17.9%
(p−1)/(m+p−1)
时间轴总格
39
m + p − 1
空转格数
56
p×(p−1),恒不随 m 变
1F1B 调度
气泡率同式
它压的是在飞激活显存

8 段流水线、32 份 micro-batch:时间轴 39 格里空转 56 格——气泡率 17.9%(文章三档之一:46.7% / 17.9% / 9.9%)。把 m 再往上拧一档,看气泡怎么变薄;拧过头则撞「矩阵乘变矮」的计算效率墙(文章:权衡)。 启动时下游没事干、收尾时上游没事干——左边空的是下游,右边空的是上游。

和「并行训练三本账」是什么关系

那边是账本:ZeRO 分片省多少显存、通信代价排序、加并行度前的三笔账——气泡率只是其中一行数字。 这边是时间结构本身:启动/收尾的空转长什么样、m 怎么把气泡压薄、p 怎么把它撑厚—— 「为什么 PP 的侵入性最深还要用」的那笔疼账,看一眼网格就懂了。

网格与公式严格同源:空转格 p×(p−1)、忙格 p×m,气泡率 = 空转 ÷ 全格——拧任何参数两处读数永远一致。 1F1B(前向反向交错)压的是在飞激活的显存占用,气泡率与朴素调度同式(文章原文)。零 API、纯几何。