2、分布式训练基础:数据并行、模型并行、流水线并行的区别与联系

当模型参数量从百万级增长到千亿级,单张 GPU 的显存和算力都无法承载完整训练任务。分布式训练的本质,是把「模型计算」和「训练数据」这两类负载拆分到多张加速卡上,再通过通信把结果重新拼合。理解数据并行、模型并行、流水线并行的区别与联系,是掌握 DeepSpeed 流水线调度机制的前提。

一、三种并行范式的核心原理

数据并行(Data Parallelism,DP)的思路最直观:每张卡持有一份完整的模型副本,但各自读取不同的数据分片。前向和反向计算完全在本地完成,只有在反向传播结束后,才通过 AllReduce 把各卡的梯度求平均,使所有副本保持一致。它的优点是实现简单、扩展性好;缺点是每张卡都要存一份完整模型、优化器状态和激活值,显存开销随模型规模线性增长。

模型并行(Model Parallelism,MP)则把模型本身切开。以张量并行(Tensor Parallelism,TP)为代表,它把单个权重矩阵按行或按列切分到不同设备上,每层计算都需要卡间通信来汇总部分结果。模型并行能突破单卡显存上限,但通信频繁、粒度细,对互联带宽要求极高,通常只在单机 NVLink 域内使用。

流水线并行(Pipeline Parallelism,PP)按层切分模型:第 1 段层放在 GPU0,第 2 段层放在 GPU1,依此类推。数据像流水线一样依次流过各段。为了不让后面的卡空等,会把一个 mini-batch 切成多个 micro-batch,让不同卡同时处理不同 micro-batch 的不同阶段。它通信量小(只在段边界传激活值),但会引入「气泡」(bubble)——流水线填充和排空阶段部分卡处于空闲。

三种并行范式的切分方式对比 数据并行 DP 模型 模型 模型 数据A 数据B 数据C AllReduce 梯度同步 模型并行 MP 权重 左半 权重 右半 权重 分片 AllGather / ReduceScatter 高频通信 流水线并行 PP 层1-4 GPU0 层5-8 GPU1 层9-12 GPU2 段边界传激活值,存在气泡 关键区别速览 切分对象: DP 切数据 MP 切权重矩阵 PP 切网络层 通信频率: DP 每步一次 AllReduce MP 每层多次通信 显存收益: DP 不省模型显存 MP 省权重显存 PP 省层显存 典型场景: 中小模型多卡扩展 单机大层切分 超深模型跨机

二、方法流程:三种并行如何协同工作

真实的大模型训练很少只用一种并行方式,而是采用「3D 并行」组合:

  1. 先做流水线切分:把 Transformer 的 N 层按 stage 划分到不同机器组,跨机通信量最小。
  2. 再做张量切分:在每个 stage 内部,把注意力头和 FFN 权重按 TP 切到同机多卡,利用 NVLink 高带宽。
  3. 最后做数据并行:在流水线各 stage 之间复制多份,形成 DP 组,用 ZeRO 分片优化器状态降低显存。

DeepSpeed 的配置正是这种组合的体现:

{
  "train_batch_size": 1024,
  "train_micro_batch_size_per_gpu": 8,
  "gradient_accumulation_steps": 4,
  "zero_optimization": {
    "stage": 2,
    "offload_optimizer": { "device": "cpu" }
  },
  "pipeline": {
    "pipe_parallel_size": 4,
    "model_parallel_size": 2
  }
}

其中 pipe_parallel_size=4 表示流水线切 4 段,model_parallel_size=2 表示每段内张量切 2 份,剩余维度由数据并行补足。总卡数 = PP × TP × DP。

三、案例场景:一个 175B 模型的切分决策

假设有 64 张 A100(80GB),要训练 175B 参数模型。单卡放不下完整模型,必须组合切分:

并行维度切分大小作用通信开销
流水线 PP8 段跨机分摊层显存低,段边界传激活
张量 TP4 路机内切权重矩阵高,每层 AllReduce
数据 DP2 组提升吞吐、梯度平均中,每步 AllReduce

8 × 4 × 2 = 64,正好用满所有卡。这种配置下,TP 限制在单机 4 卡内以利用 NVLink,PP 跨机走 InfiniBand,DP 组间同步梯度。DeepSpeed 的流水线调度器会进一步安排 micro-batch 的注入顺序,减少气泡占比。

四、误区与复盘

误区一:并行度越高越好。TP 超过单机卡数会退化为跨机通信,带宽骤降;PP 段数过多会让气泡占比上升,因为填充和排空时间随段数线性增长。

复盘要点:选择并行策略时,先看模型能否单卡放下——能则优先 DP;放不下但单机能放下则用 TP;跨机则引入 PP。三者不是互斥,而是按「通信代价从低到高」逐层叠加。

  • DP 解决「数据吞吐」,不解决「模型太大」。
  • TP 解决「单层太大」,代价是高频通信。
  • PP 解决「层数太多」,代价是流水线气泡。
  • DeepSpeed 的价值在于把三者统一调度,并用 ZeRO 进一步压缩 DP 侧的显存冗余。

理解了这三种并行的切分对象、通信模式和显存收益,才能看懂后续流水线调度中 micro-batch、气泡和 1F1B 策略的设计动机。