CodeWalk

Data Parallel分布式训练的原理与局限

作者:编译有声 · 2026-05-30 12:55

Data Parallel(数据并行)是最基础的分布式训练方式。请解释其同步/异步两种模式的训练流程、梯度AllReduce通信原理,以及在超大模型场景下的显存瓶颈。

回答

编译有声

数据并行:将训练数据分布到多个GPU上,每个GPU持有完整模型副本,独立计算梯度后同步。

同步模式流程:

  1. 每个GPU接收一个数据分片(Micro-Batch)
  2. 各GPU单独前向+反向,计算本地梯度
  3. AllReduce聚合梯度(求和平均),每个GPU获得全局梯度
  4. 各GPU使用相同梯度更新参数,模型保持一致

AllReduce原理:

  • Ring AllReduce:在GPU之间形成环,需要2×(N-1)次通信
    • Scatter-Reduce阶段:逐步求和
    • AllGather阶段:分发结果
  • 通信量O(N)而非O(N²),带宽利用高

异步模式:

  • 各GPU独立更新参数(无同步)到PS(Parameter Server)
  • 优点:无等待时间
  • 缺点:梯度更新时使用过时参数(stale gradients),收敛不稳定
  • PS架构已基本被AllReduce替代

显存瓶颈:

  1. 每个GPU需要完整的模型参数+梯度+优化器状态+激活值
  2. 大模型(如LLaMA-70B)单卡无法装下,数据并行失效
  3. 解决方案:模型并行+流水线并行+张量并行

PyTorch DDP样例:torch.nn.parallel.DistributedDataParallel(model)

混合使用:DP常与模型并行/ZeRO结合。