AI 基础架构 · 第 05 条 · 集群
并行策略:数据并行、张量并行、流水线并行
当一个模型大到装不下一张卡,「切开」就成了唯一的选择。三种切法各有各的代价,实际训练用的是它们的组合。
三种切法
| 策略 | 切什么 | 解决什么问题 | 主要代价 |
|---|---|---|---|
| 数据并行 | 切数据 | 加速,模型能装下单卡 | 梯度同步的通信量随卡数增长 |
| 张量并行 | 切单层内部的矩阵 | 单层太大装不下 | 通信极频繁,必须放机内 |
| 流水线并行 | 切层(不同层放不同卡) | 模型太深装不下 | 有空泡(流水线等待),需要调度 |
为什么通信量差一个量级
这是理解并行策略的关键。三种切法的通信特性完全不同:
- 数据并行:每个卡算完整个模型的前向反向,只在最后同步一次梯度。通信量大但是「低频大块」。
- 张量并行:每一层的前向和反向都要通信。通信量小但是「高频小块」——对延迟极其敏感。
- 流水线并行:只在层与层之间传激活值。通信量最小,但会产生等待(流水线填充和排空)。
所以标准做法是分层的:张量并行放在机内(因为要低延迟高带宽),流水线并行放在机间,数据并行放在最外层。这个安排不是随意选的,是被网络的层级结构逼出来的。
流水线的空泡
流水线并行有个固有的低效:第一个微批次进入时,后面的阶段还在等;最后一个微批次离开时,前面的阶段已经空了。这段「没有满负荷」的时间叫空泡。
解决办法是把一个批次切成很多微批次,让流水线尽量填满。但微批次越多,每个的批大小越小,又会影响 GPU 利用率。这是一个需要权衡的参数。
为什么实际配置是核心竞争力
给定同样的硬件和模型,怎么切、切多少份、各切法怎么配比——这些选择会带来数倍的性能差异。
而且这个配置没有通用解:模型结构、卡数、网络拓扑、序列长度任何一项变了,最优配置都可能要重调。所以大模型训练团队里,「并行配置」本身就是一项核心技术积累。
和成本的关系
并行效率直接决定成本。假设理论算力能跑到 50% 的利用率,和能跑到 25%,同样的训练任务成本差一倍。
这就是为什么在讨论 AI 资本开支时,只看「买了多少卡」是不够的——有效利用率才是把硬件换算成产出的那个系数。
要点回顾
- 三种并行:数据并行切数据、张量并行切单层、流水线并行切层。
- 通信特性差一个量级:数据并行低频大块,张量并行高频小块,流水线通信最小但有空泡。
- 标准做法是分层:张量并行放机内,流水线放机间,数据并行放最外层——被网络层级逼出来的。
- 最优并行配置没有通用解,模型、卡数、拓扑任何一项变了都要重调。
- 并行效率直接决定成本:同样任务,50% 和 25% 利用率意味着成本差一倍。