张量并行(Tensor Parallelism)、数据并行(Data Parallelism)和流水线并行(Pipeline Parallelism)是深度学习大模型训练中三种主要的并行策略,它们在粒度、适用场景和通信方式上都有显著区别。我给你做一个对比表,方便直观理解:

特性 张量并行(Tensor Parallelism) 数据并行(Data Parallelism) 流水线并行(Pipeline Parallelism)
并行粒度 将单个层的计算拆分到多张显卡上(层内切分) 将整个模型复制到多张显卡,每张显卡处理不同的样本 将模型按层划分成多个阶段,每个阶段在不同显卡上执行(层间切分)
适用场景 超大模型单层无法放入单卡显存 模型可以放入单卡显存,但数据量大 模型太大,单卡显存无法容纳整个模型
通信开销 需要在层内进行张量通信(如 all-reduce 或 all-gather) 每步前向和反向计算后进行梯度同步(all-reduce) 每个微批次需要传输激活值到下一个阶段,通信量取决于微批大小
优点 能训练单卡显存无法容纳的大层 易实现,成熟工具支持好,扩展性强 能训练极大模型,减少单卡显存压力
缺点 通信复杂,效率受限于带宽 大模型单卡放不下 训练延迟增加(pipeline bubble),实现复杂
示意 单层拆分 → 并行计算 → 聚合 每卡独立前向反向 → 梯度同步 模型切分为阶段 → 微批轮流前向 → 阶段间通信

组合使用

  • 现代大模型训练通常会将这三种策略组合使用:

    • 张量并行 + 流水线并行:解决单层和整个模型显存限制
    • 数据并行:在多个流水线或张量分片组上同步梯度,提高吞吐量

举个例子:训练一个 175B 参数的模型时,单张卡放不下整个层,也放不下整个模型:

  1. 张量并行:把每层分到 16 张显卡
  2. 流水线并行:把模型切成 4 个阶段,每阶段 16 张显卡
  3. 数据并行:复制流水线组处理不同样本批次

这样就可以在 64 张卡上训练超大模型。

在这里插入图片描述

更多推荐