张芷铭的个人博客

AllReduce 是分布式训练梯度同步的核心操作,让所有节点获得相同的全局归约结果。

核心定义

AllReduce = All(所有节点)+ Reduce(归约)

本质:所有节点先做归约操作(求和/平均/最大值),再将结果广播给所有节点。

多 GPU 训练场景

场景梯度处理
单 GPU本地梯度直接更新参数
多 GPU需汇总所有 GPU 梯度后同步更新

基础版流程(3 GPU 示例)

初始:GPU0 梯度=1,GPU1=2,GPU2=3

  1. Reduce:主节点(GPU0)收集并求和 → G=6
  2. Broadcast:主节点广播 G=6 给所有 GPU

Ring AllReduce(优化版)

核心改进:无主节点瓶颈,通信量降至 1/N。

1
2
3
4
5
阶段1 Scatter-Reduce:
GPU0 → GPU1 → GPU2 → GPU0(逐步累加)

阶段2 AllGather:
GPU0 → GPU1 → GPU2 → GPU0(广播全局结果)
特性基础版Ring AllReduce
主节点瓶颈存在
通信量O(N²)O(N)
框架采用较少PyTorch DDP、DeepSpeed

应用场景

场景作用
DDP 训练同步所有 GPU 梯度
大模型训练分布式参数同步
特征融合汇总多卡计算结果
集群统计汇总损失值、精度

Comments