张量并行(TP)和流水线并行(PP)是分布式训练中两种不同的并行策略:TP 在层内拆分权重,PP 在层间拆分层序列。
核心本质区别
| 维度 | 张量并行 (TP) | 流水线并行 (PP) |
|---|---|---|
| 拆分对象 | 单个层的权重张量 | 模型的层序列 |
| 计算方式 | 多 GPU 并行计算同一层 | 多 GPU 串行计算不同层 |
| 解决问题 | 单层权重超显存 | 模型层数太多超显存 |
形象比喻
| 维度 | 张量并行 (TP) | 流水线并行 (PP) |
|---|---|---|
| 厨房类比 | 多个厨师同时做同一个步骤的不同部分 | 多个厨师按顺序做不同步骤 |
| 处理流程 | 切肉丝的不同部分 → 拼接 | 备菜 → 炒菜 → 装盘 |
| 核心目标 | 解决"单个步骤太大" | 解决"流程太长" |
技术细节
张量并行 (TP)
拆分粒度: 单个层的权重张量
例如线性层 $W \in \mathbb{R}^{D \times V}$,将 $V$ 维度拆分为 $k$ 份。
计算逻辑:
- 所有 GPU 同时接收同一批数据
- 并行计算该层的不同子输出
- 拼接得到完整层输出
示例: LLaMA-70B 单个注意力层权重 280GB(float32),8 卡 TP 拆分后每卡仅存 35GB。
流水线并行 (PP)
拆分粒度: 模型的层序列
例如 100 层 Transformer 拆成 10 段,每段 10 层。
计算逻辑:
- 数据先输入 GPU1,计算前 10 层
- 结果传给 GPU2,计算 11-20 层
- 依此类推直到 GPU10 输出结果
示例: 1000 层超深模型,10 卡 PP 拆分后每卡仅存 100 层。
总结
- 拆分粒度不同:TP 是层内拆权重,PP 是层间拆序列
- 计算模式不同:TP 是并行计算,PP 是串行流水线
- 优化目标不同:TP 解决"单层权重超显存",PP 解决"模型总层数超显存"
张芷铭的个人博客
Comments