Skip to content

Distributed Training

分布式训练 指将深度学习模型的训练过程分散到多个计算设备(GPU/TPU/CPU)上并行执行。随着模型规模从百亿级到万亿级参数,单设备内存和计算能力已无法满足需求,分布式训练成为大模型训练的必选方案。

核心并行策略

1. Data Parallelism (数据并行)

将数据批次分割到多个设备,每个设备持有完整模型副本:

  • 前向传播: 各设备独立计算前向传播和损失
  • 梯度计算: 各设备独立计算梯度
  • 梯度同步: 通过 AllReduce 操作平均梯度,各设备更新相同的模型

优点: 实现简单,适用于模型能放入单设备的场景 缺点: 每个设备复制完整模型,内存冗余;梯度同步产生通信开销

2. Model Parallelism (模型并行)

将模型参数分割到多个设备,每个设备处理部分计算:

  • 层级分割: 将不同层放到不同设备
  • 适用场景: 模型过大无法放入单个设备内存 缺点: 设备间通信频繁,利用率低

3. Tensor Parallelism (张量并行)

模型并行的细粒度形式,将单个层/张量的计算分割到多个设备:

  • 列分割: 将权重矩阵按列切分,各设备计算部分输出
  • 行分割: 将激活值按行切分
  • 代表: Megatron-LM (NVIDIA) 实现的 Transformer 张量并行

优点: 层内并行度高,适合计算密集的注意力层 缺点: 设备间需频繁同步中间激活值

4. Pipeline Parallelism (流水线并行)

将模型按层分割到多个设备,微批次流水线化执行:

设备 1: [F1][F2][F3][B1][B2][B3]  ← 泡沫 (Bubble)
设备 2:    [F1][F2][F3][B1][B2][B3]
设备 3:       [F1][F2][F3][B1][B2][B3]
  • GPipe: 微批次流水线 + 激活值重计算,减少内存
  • PipeDream: 异步流水线,减少泡沫时间
  • Zero Bubble Pipeline (2023): 前向-后向调度优化,理论上消除流水线泡沫

优点: 适合模型层数多、设备数量有限的场景 缺点: 流水线泡沫影响设备利用率

3D Parallelism

现代大模型训练通常组合三种并行策略:

并行类型分割对象解决的瓶颈代表框架
Data Parallelism数据 batch模型太大放不下PyTorch DDP
Tensor Parallelism单层参数单节点内存/计算不足Megatron-LM
Pipeline Parallelism模型层层数过多GPipe / DeepSpeed

例如: GPT-3 (175B) 训练使用了数据并行 (跨节点) + 张量并行 (跨 GPU) + 流水线并行 (跨节点)。

通信与同步

关键通信原语

  • AllReduce: 所有设备将本地梯度求和后分发给所有设备
  • AllGather: 所有设备收集所有其他设备的张量片段
  • ReduceScatter: 先求和再分散给各设备

通信优化

  • Ring-AllReduce: 将梯度切分后沿环形拓扑传输,降低带宽压力
  • Gradient Compression: 梯度量化、稀疏化减少通信量
  • Overlap Communication: 将通信与计算重叠,隐藏延迟

关键论文

论文作者年份核心贡献
"Accurate, Large Minibatch SGD"Goyal et al.2017ImageNet 1 小时训练,线性学习率缩放规则
"Megatron-LM"Shoeybi et al.2019张量并行 + 流水线并行训练 Transformer
"GPipe"Huang et al.2019 (Google)微批次流水线 + 重计算,证明大模型可扩展性
"PipeDream"Narayanan et al.2019 (MSR)异步流水线并行,减少泡沫
"Zero Bubble Pipeline"Qi et al.2023前向-后向调度优化,理论消除泡沫

重要框架与工具

  • PyTorch Distributed (DDP): 数据并行标准实现,Ring-AllReduce 梯度同步
  • Horovod: Uber 开源分布式训练框架,支持 TensorFlow/PyTorch/MXNet
  • NVIDIA NCCL: GPU 间通信优化库,提供高效的集合通信原语
  • Ray Train: 分布式训练统一接口,支持多种后端
  • DeepSpeed / FSDP: 与 3D 并行组合使用,解决内存瓶颈

与相关概念的关系

  • Data Parallel vs Communication Cost: 梯度同步是瓶颈,大 batch 可减少同步频率但影响泛化
  • Tensor Parallel vs Model Size: TP 将单节点内存瓶颈转化为节点间通信,适合层内计算密集
  • Pipeline Parallel vs Throughput: PP 通过流水线提升吞吐量,但引入泡沫和激活值内存开销
  • FSDP/ZeRO vs Memory: 与 3D 并行正交,解决优化器状态冗余问题

Sources

  • Goyal et al., "Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour" (arXiv 2017)
  • Shoeybi et al., "Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism" (2019)
  • Huang et al., "GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism" (arXiv 2019)
  • Narayanan et al., "PipeDream: Generalized Pipeline Parallelism for DNN Training" (SOSP 2019)
  • PyTorch Distributed Documentation

AI Knowledge Base — 持续积累