Data Parallel分布式训练的原理与局限
Data Parallel(数据并行)是最基础的分布式训练方式。请解释其同步/异步两种模式的训练流程、梯度AllReduce通信原理,以及在超大模型场景下的显存瓶颈。
回答
编译有声
数据并行:将训练数据分布到多个GPU上,每个GPU持有完整模型副本,独立计算梯度后同步。
同步模式流程:
- 每个GPU接收一个数据分片(Micro-Batch)
- 各GPU单独前向+反向,计算本地梯度
- AllReduce聚合梯度(求和平均),每个GPU获得全局梯度
- 各GPU使用相同梯度更新参数,模型保持一致
AllReduce原理:
- Ring AllReduce:在GPU之间形成环,需要2×(N-1)次通信
- Scatter-Reduce阶段:逐步求和
- AllGather阶段:分发结果
- 通信量O(N)而非O(N²),带宽利用高
异步模式:
- 各GPU独立更新参数(无同步)到PS(Parameter Server)
- 优点:无等待时间
- 缺点:梯度更新时使用过时参数(stale gradients),收敛不稳定
- PS架构已基本被AllReduce替代
显存瓶颈:
- 每个GPU需要完整的模型参数+梯度+优化器状态+激活值
- 大模型(如LLaMA-70B)单卡无法装下,数据并行失效
- 解决方案:模型并行+流水线并行+张量并行
PyTorch DDP样例:torch.nn.parallel.DistributedDataParallel(model)。
混合使用:DP常与模型并行/ZeRO结合。