10.1 并行策略总览
当模型参数从数十亿增长到数千亿,单张 GPU 的显存和算力早已无法独自承担训练任务。分布式并行的核心目标可以归结为两条:让模型装得下(解决显存瓶颈),以及让训练跑得快(解决算力瓶颈)。为了同时达成这两个目标,业界发展出了多种并行策略,它们各自在不同的维度上对训练过程进行切分。
本节将首先建立一个统一的分类框架——SPTD 四维分类法,然后逐一介绍数据并行(DP/DDP)、张量并行(TP)、流水线并行(PP)、序列并行(SP)、专家并行(EP)等核心策略的基本思想和适用场景,为后续章节的深入讨论奠定全局视角。
10.1.1 SPTD 分类框架
分布式训练中的并行策略种类繁多,但从本质上看,它们都在回答同一个问题:沿哪个维度进行切分? 根据切分维度的不同,所有主流并行策略可以纳入一个四维分类框架,我们称之为 SPTD(Sample-Parameter-Tensor-Derived) 框架:
| 维度 | 切分对象 | 代表策略 | 核心思想 |
|---|---|---|---|
| S(Sample) | 训练数据 | 数据并行(DP/DDP/FSDP) | 模型复制,数据分片 |
| P(Pipeline) | 模型层(深度) | 流水线并行(PP) | 按层切分模型,设备间传递激活值 |
| T(Tensor) | 算子/权重矩阵(宽度) | 张量并行(TP) | 切分单个大矩阵运算,设备间同步中间结果 |
| D(Derived) | 序列长度 / 专家网络 / 显存状态 | 序列并行(SP)、上下文并行(CP)、专家并行(EP)、ZeRO | 针对特定瓶颈的衍生策略 |
表 10-1:SPTD 并行策略分类框架。
这四个维度是正交的——它们可以独立组合。实际的大规模训练系统(如 Llama 3、Megatron-LM)往往同时使用多个维度的策略,形成所谓的 3D 甚至 4D 并行。理解每种策略"切的是什么"以及"换来了什么、付出了什么",是设计混合并行方案的基础。
10.1.2 数据并行(Data Parallelism)
数据并行是最直观也最基础的并行策略,其核心思路是**"模型复制,数据分片"**:每个 GPU 持有一份完整的模型副本,将全局训练批次均匀切分后,各 GPU 独立完成前向和反向传播,最后通过 All-Reduce 操作同步梯度,保证所有设备上的模型参数始终一致。
DP 与 DDP 的区别。 早期的 PyTorch DataParallel(DP)基于单进程多线程实现,受 Python GIL 限制严重,且主 GPU 需要负责模型广播和结果收集,负载极不均衡。现代训练一律采用 DistributedDataParallel(DDP),底层为多进程架构,每张 GPU 绑定一个独立进程,仅在梯度同步时通过高效的 Ring-AllReduce 等算法进行通信。
DDP 的工作流程。 一次完整的训练迭代包含四个阶段:(1)将全局 Batch 切分为互不重叠的 Micro-batch,分发给各进程;(2)各 GPU 独立进行前向和反向传播;(3)利用 All-Reduce 计算各卡梯度的均值,确保梯度严格一致;(4)各 GPU 独立调用优化器更新参数——由于起点和梯度均一致,更新后的模型自然保持同步。
DDP 的性能优化。 两项关键技术将 DDP 的效率推向实用水平。梯度分桶(Gradient Bucketing) 按反向传播中梯度生成的逆序将零散的参数梯度装入固定容量的"桶"中,展平为连续内存后统一传输,避免了逐参数通信的巨大开销。计算与通信重叠 借助 Autograd 钩子机制,一旦某个桶内的梯度计算完毕,立即发起异步 All-Reduce,无需等待更浅层梯度的计算完成,最大化了 GPU 算力与网络带宽的并行利用。
优势与局限。 数据并行的最大优点是概念简单、与模型架构解耦,增加 GPU 数量即可近似线性提升吞吐量。然而它有一个致命的短板:内存冗余。每个 GPU 都要存储完整的模型参数、梯度和优化器状态(Adam 的一阶矩和二阶矩通常是参数量的 4 倍以上),导致可训练的模型规模受限于单卡显存。为克服这一瓶颈,ZeRO 和 FSDP 应运而生——它们将在 §10.2 中专门讨论。
10.1.3 模型并行(Model Parallelism)
当模型大到即使单卡装满也放不下时,就需要将模型本身切分到多个设备上。根据切分的方向,模型并行分为两种互补的形式:流水线并行(沿深度切分) 和 张量并行(沿宽度切分)。
流水线并行(Pipeline Parallelism, PP)。 将模型按层划分为若干阶段(stage),每个阶段放置在一组 GPU 上。数据如同工厂流水线般从第一阶段依次流向最后阶段,设备间传递的是中间激活值和反向梯度。朴素实现的致命问题是流水线气泡——当数据在某一阶段计算时,其他阶段的 GPU 处于空闲状态。引入微批次(Micro-batch)和梯度累积后,多个微批次可以在流水线中交叠执行,在稳态阶段所有 GPU 同时处理不同微批次的对应层,空闲率大幅降低。流水线并行的通信量仅为激活值大小,对带宽要求相对温和,因此通常部署在节点间较慢的网络连接上。
张量并行(Tensor Parallelism, TP)。 在更细的粒度上切分——对单个大矩阵乘法进行并行化。以线性层
下表对比了两种模型并行的核心特征:
| 特征 | 流水线并行(PP) | 张量并行(TP) |
|---|---|---|
| 切分维度 | 深度(按层) | 宽度(按算子/矩阵) |
| 设备间传递内容 | 激活值和梯度 | 部分计算结果(需 All-Reduce/All-Gather) |
| 通信频率 | 每阶段边界一次 | 每层内多次 |
| 对带宽的要求 | 较低 | 极高 |
| 典型部署位置 | 节点间 | 节点内 |
| 空闲开销 | 流水线气泡 | 无气泡 |
| 对批次大小的依赖 | 强(需足够多微批次填充流水线) | 弱 |
表 10-2:流水线并行与张量并行对比。
10.1.4 衍生并行策略
除 S/P/T 三大核心维度外,还有若干针对特定瓶颈而衍生出的并行策略。
序列并行(Sequence Parallelism, SP)。 张量并行能有效减少与矩阵乘法相关的激活显存,但对 LayerNorm、Dropout 等逐点操作无能为力。序列并行沿序列长度维度切分这些操作,使得所有激活显存均可随并行度线性减少。它通常与 TP 配合使用:在需要跨 Token 通信的注意力和 FFN 部分使用 TP,在无需跨 Token 交互的逐点操作上使用 SP。
上下文并行(Context Parallelism, CP)。 当序列长度从数千增长到数十万(长上下文场景),注意力机制中的 KV Cache 显存成为瓶颈。CP 深入注意力计算内部,将序列分片后在多个 GPU 上并行执行注意力运算,通过精心设计的通信模式协调 Query 与 Key/Value 的交互。
专家并行(Expert Parallelism, EP)。 这是混合专家模型(MoE)特有的策略。MoE 包含大量独立的专家网络,但每个 Token 仅被路由到少数几个专家处理。EP 将不同专家分布到不同 GPU 上,前向传播时通过 All-to-All 通信将 Token 路由到对应专家所在的设备。EP 的独特优势在于能在不增加每 Token 计算量的前提下大幅扩充模型总参数量,但需要解决专家负载均衡问题以避免部分 GPU 拥堵。
显存状态切分(ZeRO/FSDP)。 严格来说,ZeRO 和 FSDP 是数据并行的增强形式而非独立的并行维度。它们将优化器状态、梯度甚至参数本身按 GPU 数量进行分片,从根本上消除了数据并行中的显存冗余。ZeRO 分为三个递进阶段:Stage 1 切分优化器状态,Stage 2 进一步切分梯度,Stage 3(等价于 FSDP)将参数也一并切分,在需要时通过 All-Gather 按需获取、用后即弃。
10.1.5 混合并行:从 2D 到 4D
单一策略各有所长也各有所限。实践中的大规模训练系统几乎都采用多维度的混合并行方案。
3D 并行的经验法则。 工业界形成了一套成熟的部署准则:
- 首要目标——装下模型。 首先在节点内部署张量并行(通常 8 路 TP),利用 NVLink 高带宽支撑频繁的层内通信。如果模型仍然过大,在节点间叠加流水线并行,直到所有参数可以分布在全部 GPU 的显存中。
- 次要目标——提升吞吐量。 利用剩余的 GPU 部署数据并行,通过增大全局批次来扩展计算吞吐。
这一准则的底层逻辑是按带宽需求从高到低分配网络层级:TP 通信最频繁,放在带宽最高的节点内;PP 通信量适中,放在节点间;DP 通信最少(每步仅一次梯度同步),放在最外层。Llama 3(405B)的训练报告即明确记录了其策略顺序为 TP → CP → PP → DP(FSDP),正是这一法则的典型体现。
4D 并行。 即使在 3D 并行的基础上,数据并行维度内仍然存在优化器状态和梯度的完全冗余。将 ZeRO Stage 1/2 或 FSDP 应用于 DP 组内部,即形成 4D 并行,将显存利用率推向极限。
下表汇总了各策略在混合并行中的典型角色:
| 策略 | 切分对象 | 通信量级 | 典型部署层级 | 主要解决的瓶颈 |
|---|---|---|---|---|
| TP | 权重矩阵(宽度) | 高(每层多次 All-Reduce) | 节点内(NVLink) | 单层权重过大 |
| SP/CP | 序列长度 | 中 | 与 TP 同层级 | 激活/KV Cache 显存 |
| PP | 模型层(深度) | 中低(激活值传递) | 节点间(InfiniBand) | 模型总层数过多 |
| DP/FSDP | 训练数据 | 低(每步一次梯度同步) | 最外层 | 计算吞吐量 |
| EP | 专家网络 | 中(All-to-All) | 节点间 | MoE 参数分布 |
| ZeRO | 优化器状态/梯度/参数 | 与 DP 相当 | DP 组内部 | 显存冗余 |
表 10-3:各并行策略在混合并行体系中的定位。
10.1.6 本节总结
本节建立了分布式并行策略的全局图景,核心要点如下:
SPTD 分类框架将所有并行策略归纳为四个正交维度:按数据切分(S)、按深度切分(P)、按宽度切分(T)、以及针对特定瓶颈的衍生策略(D)。理解每种策略"切的是什么"是设计混合方案的前提。
数据并行(DDP)是最基础的策略,通过模型复制与数据分片实现计算扩展,但存在严重的显存冗余。ZeRO/FSDP 通过对优化器状态、梯度和参数进行分片,在保持数据并行简单性的同时消除了冗余。
模型并行分为流水线并行和张量并行两种形式。PP 沿深度切分、通信量小但存在气泡,适合节点间部署;TP 沿宽度切分、无气泡但通信极频繁,适合节点内高带宽环境。
衍生策略包括序列并行(减少逐点操作的激活显存)、上下文并行(解决长序列注意力瓶颈)和专家并行(分布 MoE 的专家网络)。
混合并行是工业实践的标准形态。 遵循"按带宽需求从高到低分配网络层级"的原则,将 TP 部署在节点内、PP 部署在节点间、DP/FSDP 部署在最外层,形成 3D 乃至 4D 并行,是当前千亿级模型训练的通用范式。