模型层 开放阅读

All-Reduce 全归约通信

All-Reduce

概念 ID
all-reduce
更新时间
2026-05-29
来源数量
待补

All-Reduce 全归约通信

3 秒看懂

All-Reduce 是分布式训练中让每块 GPU 拥有完全一致梯度的高效全局同步协议。它先“归约”(求和/平均)所有节点的数据,再将结果广播回每一个节点,是千卡、万卡集群训练大模型的通信基石。

3 分钟产业解释

在深度学习的数据并行训练中,所有 GPU 各自持有同一份模型副本,各自计算出一个梯度。为了让模型参数同步更新,必须把分散在各 GPU 上的梯度求和(或求平均),然后让每一块 GPU 都获得这个累加后的梯度值。这个“每个节点贡献一个数组 → 所有节点都得到该数组的全局求和”的操作,就是 All-Reduce

如果直接采用“选一个节点收集全部梯度 → 求和 → 再广播”的朴素方式,收集节点的入口带宽会成为瓶颈,千卡集群下可能让网络瞬间拥塞,GPU 大量时间空转等待同步。产业界真正落地的是 Ring All-ReduceTree All-Reduce 等带宽优化算法,它们将通信分摊到所有链路上,使得每块 GPU 的发送/接收量接近一个常数,消除了单点瓶颈,将通信时间控制在与 GPU 数量几乎无关的水平。

All-Reduce 性能直接决定了数据并行的扩展效率,已被固化为 NVIDIA NCCL、Facebook Gloo、Horovod、PyTorch DistributedDataParallel 等底层通信库的标准算子。在千亿参数大模型(例如 MoE 架构)中,除数据并行外,All-Reduce 还被广泛用于张量并行、流水线并行的梯度同步。

15 分钟专家深入

在深度学习范畴,All-Reduce 主要以求和为归约操作,沿以下路径被深度优化:

  1. 通信计算重叠(overlap) 现代框架将 All-Reduce 拆分为 Reduce-Scatter(先分散归约,使每个节点持有部分结果的唯一分片)和 All-Gather(再将分片广播至所有节点)。这种拆解可以让通信与反向传播最后一层的计算重叠执行,进一步隐藏延迟。

  2. 面向拓扑的算法选择

    • Ring All-Reduce:所有节点构成逻辑环,数据被切分为 P(节点数)个小块,通过 P-1 轮步进式发送/接收,最终完成全归约。带宽利用率接近最优(每个节点总通信量 2(N-1)/N \cdot \text{数据量},当 N 很大时趋于 2 倍数据量),但延迟随 P 线性增加。
    • Tree/Recursive Halving-Doubling:通过多级树形或蝴蝶网络以对数级步数完成归约与广播,延迟极小,但需要更多并发链路,且难以充分利用节点所有出口带宽。
    • 双二叉树/2D-Torus 算法:针对胖树或2D网状网络拓扑进行定制,避免链路争用,是超大规模集群(如 TPU Pod、某些 HPC 系统)的优选。
  3. 混合并行场景下的用量 在 3D 并行(数据并行 × 张量并行 × 流水线并行)中,张量并行通常会引发每一层内部频繁的 All-Reduce(通信量正比于每层的激活或梯度)。这时通常会将数据并行和张量并行的通信做优先级调度,或使用 NVLink/NVSwitch 短距高带宽域来承载张量并行的 All-Reduce,对外部节点间的数据并行采用 InfiniBand/RoCE 的 Ring 算法。

  4. 与 All-to-All 的区别 一个常见混淆点是:张量并行通常需要 All-Reduce(或 All-Gather + Reduce-Scatter),而 MoE 的路由分发使用 All-to-All(每个节点发送不同数据到不同节点,无归约)。如果错误地在 MoE dispatch 中使用 All-Reduce,不仅浪费带宽,还会破坏专家输入的独立性。

技术原理

数学定义

p 个进程,每个进程 i 拥有一个长度为 D 的向量 x_i。All-Reduce 操作输出向量 y 到所有进程,满足:

y = x_1 \oplus x_2 \oplus \cdots \oplus x_p

其中 \oplus 是满足交换律和结合律的二元运算。深度学习中通常为逐元素求和(sum),有时为平均(mean,通过对 sum 结果乘以 1/p 实现)。

实现核心:Ring All-Reduce

以 4 个节点(GPU0~GPU3)为例,每个节点的梯度被等分为 p = 4 个数据块。算法分两阶段:

阶段 1:Reduce-Scatter(分散归约)
节点在环上单向传递,每一步将收到的块与本地对应块归约(求和)后,再发给下一个邻居。经过 p-1 步,每个节点持有完整归约结果的一个分片。

阶段 2:All-Gather(全收集)
节点将持有的分片环上接力转发,不再做归约,只做覆盖。再经 p-1 步,所有节点收集到全部归约分片,重建完整梯度。

ASCII 示意(4 节点环)

初始:   GPU0: [A0 B0 C0 D0]    GPU1: [A1 B1 C1 D1]
        GPU2: [A2 B2 C2 D2]    GPU3: [A3 B3 C3 D3]

第一步(Reduce-Scatter,传递方向→):
  GPU0 发送 C0 给 GPU1;GPU1 计算 C0+C1 → 继续发 C0+C1 给 GPU2...
  最终 GPU3 持有完整 sum(C)
  类似地,其他分片归约完成。

第二步(All-Gather):
  GPU3 将 sum(C) 沿环传给 GPU0、GPU1、GPU2,所有节点获得 sum(C)。
  重复操作完成全部分片重组。

阶段总步数 2(p-1)。每个节点总的数据传输量 = 2 \times \frac{p-1}{p} \times D2D,与 p 无关。这意味着增加节点不会增加每个节点的通信量,理论上可实现近乎线性的扩展。

通信量与延迟

  • 通信量:当节点数 N 很大时,每个节点收发约 2D 元素(对于求和 All-Reduce)。对比朴素星型拓扑中央节点收发 N\cdot D 元素,Ring 彻底消除了瓶颈。
  • 延迟:受步数 2(N-1) 影响,节点数极多时延迟可能明显增加;可通过采用跨步更大的递归倍增(recursive doubling)或多环分割(hierarchical ring)来折中。

关键参数(定性)

  • 算法带宽利用率:实际吞吐与物理链路带宽的比值,取决于报文大小、步间 pipeline 填充和拥塞控制。
  • 初始启动延迟:树形算法以对数步数取得低延迟,但不容易完全占满带宽。
  • 支持的数据类型:FP16/BF16/FP32,以及 FP8 混合精度的归约,通常要求底层集合通信库支持对应还原操作(BF16 求和可能需转为 FP32 累积后放缩)。

技术演进史

  • MPI 时代(1990s-2010):All-Reduce 已是 MPI 标准中的原语(MPI_Allreduce),用于科学计算。算法以 Recursive Halving、Ring、Butterfly 为主,面向通用 CPU 集群。
  • CUDA 感知的 MPI(2011-):MVAPICH、OpenMPI 推出 CUDA-aware MPI,允许 GPU 内存直接参与 All-Reduce,避免 CPU 中转。
  • NCCL 诞生(2015-):NVIDIA 专为 GPU 间通信优化的集合通信库,重点实现 GPU-direct Ring All-Reduce 和 Tree All-Reduce,并利用 NVLink、NVSwitch 实现节点内超高带宽。
  • Horovod(2017-):Uber 开源,将 All-Reduce 作为分布式 TensorFlow/Keras 训练的标准同步原语,以 Ring All-Reduce 为主,大幅简化分布式深度学习。
  • PyTorch DistributedDataParallel(2019-):PyTorch 原生集成 NCCL/Gloo 后端,All-Reduce 成为默认梯度同步方式,支持异步同步与通信计算重叠。
  • 大规模定制化(2020-):在万卡级集群中,出现层次化 All-Reduce 方案(节点内 NVLink 树 + 节点间环),以及通过 SHARP(在网计算)在交换机内部直接进行归约,进一步降低通信量。

技术路线对比

方案步数复杂度每个节点通信量带宽利用效率适用网络拓扑
朴素中心化归约+广播2 步中心节点 O(ND)极低(中心瓶颈)任意(差)
Recursive HalvingO(log₂N)≈ 2D中等(需多链路并发)全互联或胖树
Ring All-Reduce2(N-1)≈ 2D极高环/线性/任意
双二叉树2log₂N≈ 2D高(无拥塞设计)胖树或定制
网内归约(SHARP)1 步(逻辑)≈ 2D极高需交换机支持

注:表中通信量指总数据量归一化到参数 D,具体常数值与环境实现有关。


上下游

  • 上游

    • 网络硬件:InfiniBand HCA、RoCE 网卡、NVLink/NVSwitch、以太网交换芯片、光电互联。
    • GPU 通信库:NCCL、Gloo、MPI、oneCCL。
    • 芯片间互连 IP:例如 NVLink-C2C、UALink 等。
  • 下游

    • 分布式训练框架:PyTorch DDP、FSDP;TensorFlow tf.distribute;Horovod;DeepSpeed。
    • 模型并行策略与编译器:Megatron-LM、SDPipe、GSPMD、Alpa(自动并行,将 All-Reduce 隐式插入计算图)。
    • 大模型训练:GPT-4、LLaMA-70B、DeepSeek V3 等千亿/万亿参数模型均重度依赖高效 All-Reduce。

关键指标

  • 总线带宽(bus bandwidth):All-Reduce 操作等效对外总线带宽 = \frac{\text{归约数据量}}{\text{耗时}},常以 GB/s 衡量。理想可接近物理链路单向带宽 × 节点数 × 利用系数。
  • 延迟(latency):小消息下主要由固定开销和步数决定;大消息下由带宽和步数划分粒度影响。
  • 扩展效率:加速比 = \frac{T_1}{T_N},通信占比越低,扩展效率越高。定性上,Ring 在数千卡内保持良好效率,万卡以上需层次化或网内归约。
  • 计算通信重叠程度:是否允许 All-Reduce 与反向传播的最后一个梯度计算同时进行,影响端到端吞吐。

具体数值高度依赖集群配置,本文不提供通用硬数字。


供需与市场数据

因检索服务受限,本节无法给出具体市场数据,仅提供产业趋势定性描述。

  • 大模型训练需求驱动了从 400Gbps 到 800Gbps 乃至 1.6Tbps 高速网络接口的快速迭代,直接服务于 All-Reduce 等集合通信对总线的饥渴需求。
  • 高速交换机和网卡(如 InfiniBand NDR/XDR 和 Spectrum-X)的市场规模随 AI 训练集群建设急剧扩张,头部云厂商的自研加速器(如 TPU、Trainium)也均在内部设计高带宽互联以承载 All-Reduce。
  • 网内计算(In-Network Computing)成为新一轮竞争焦点,通过交换机直接执行求和,将 All-Reduce 数据量削减一半,被视为突破万卡扩展瓶颈的重要方向。
  • 高性能集合通信库(尤其 NCCL)已构成事实上的生态壁垒,其与硬件深度绑定的特性使得新进入者需要付出巨大的适配成本。

代表公司与资本映射

  • NVIDIA(NVDA):拥有 NCCL 库、NVLink/NVSwitch 及 InfiniBand(收购 Mellanox)整套垂直封闭生态,All-Reduce 性能在自家 GPU 集群上有极大优势。在网计算 SHARP 技术也由其交换机支持。
  • AMD(AMD):推出 RCCL(ROCm Communication Collectives Library)对标 NCCL,与自家 Instinct GPU 配合,正在构建开放互联标准 UALink。
  • Intel(INTC):提供 oneCCL(oneAPI Collective Communications Library)以及 Gaudi 加速器内置的 RDMA over Converged Ethernet (RoCE) 方案。
  • Arista / Cisco / Broadcom:为 AI 集群提供高吞吐、低延迟交换芯片和交换机,部分厂商正推进标准化的网内计算功能。
  • 云服务商(Google / AWS / Microsoft / Oracle):自研 AI 芯片(TPU、Trainium、Maia)时,均深度自研集合通信栈和互联架构,以此获得差异化竞争力。
  • Meta(META):开源了基于 RoCE 的大规模 AI 集群设计(如 Grand Teton),并开发了集合通信库 Gloo,推动开放生态。

从投资视角看,All-Reduce 是衡量 AI 基础设施互联能力的关键维度,拥有高性能通信栈和硬件耦合能力的公司,在万卡集群构建和大模型训练上掌握更强话语权。


投资逻辑

  1. 通信即算力:当 GPU 数量足够多时,训练时间常由通信主导。能为 All-Reduce 提供更低延迟、更高总线带宽的互连技术,能够直接提升 AI 训练的可扩展性,构成芯片和网络公司的核心竞争力。
  2. 垂直整合溢价:NCCL + NVLink + InfiniBand 的深度耦合使得第三方加速器无法仅凭单卡算力打破壁垒,NVIDIA 系统级解决方案享受高定价权。
  3. 网内计算赛道:交换机内执行求和可减少一半数据量,成为下一代 AI 网络标案,相关交换芯片及设备商迎来新增量。
  4. 开放生态的机会与风险:UALink 等开放标准如果成熟,可能削弱现有闭环生态的优势,需密切关注其推广进度及性能表现。

常见误读纠偏

  • 误读 1:“All-Reduce 就是先 Reduce 再 Broadcast。”
    实际工程实现中,高效的 All-Reduce(如 Ring All-reduce)绝不会走“中心化归约后广播”的流程,而是通过 Reduce-Scatter + All-Gather 或递归对半交换分摊通信,消除中心节点瓶颈。

  • 误读 2:“All-Reduce 通信量随 GPU 数量线性增长。”
    对带宽优化的算法(例如 Ring),每个 GPU 的发送/接收总量近似为常数(约 2× 梯度总数据量),并不会随着多卡而膨胀。从每个 GPU 视角看,通信负担几乎不变,这是其能线性扩展的关键。

  • 误读 3:“All-Reduce 是 MoE 路由的通信模式。”
    MoE(混合专家)中 token 分发到不同专家使用的是 All-to-All 集合通信,不存在归约操作。两者输入输出语义完全不同,不可互换。


学习路径

  1. 基础概念:阅读 MPI 标准中关于 Collective Operations 章节,理解 Reduce、Broadcast、Gather、Scatter 等原子操作。
  2. 核心论文
    • “Bandwidth optimal all-reduce algorithms for clusters of workstations”(Thakur et al.)—— 经典最优算法分析。
    • “Horovod: fast and easy distributed deep learning in TensorFlow”(Sergeev & Balso)—— 展现 All-Reduce 在深度学习中的工程应用。
  3. 实现剖析:研读 NCCL 文档及 Ring/Tree 算法选择的源码逻辑;通过 PyTorch DDP 示例体验通信计算重叠。
  4. 前沿趋势:追踪网内归约(SHARP)、胖树拓扑下的分层 All-Reduce 以及 OCP 开放互联(UALink、CXL)的最新进展。

一句话总结

All-Reduce 是分布式训练把多块 GPU 的梯度“熔炼”成同一个更新信号的无形骨架,它的效率直接决定大模型能否从百卡平滑扩展到万卡。


延伸阅读与来源

  • Thakur R, Rabenseifner R, Gropp W. Optimization of collective communication operations in MPICH. International Journal of High Performance Computing Applications, 2005.
  • Sergeev A, Del Balso M. Horovod: fast and easy distributed deep learning in TensorFlow. arXiv:1802.05799, 2018.
  • NVIDIA Collective Communications Library (NCCL) 官方文档及源码,https://github.com/NVIDIA/nccl
  • Patarasuk P, Yuan X. Bandwidth optimal all-reduce algorithms for clusters of workstations. Journal of Parallel and Distributed Computing, 2009.
  • Graham R L et al. Scalable hierarchical aggregation protocol (SHArP): a hardware architecture for efficient data reduction. in Proc. of COM-HPC, 2016.
  • PyTorch Distributed 文档,https://pytorch.org/docs/stable/distributed.html

注:由于检索受限,上述部分论文信息基于通用学术认知回顾,如有版本或细节出入,请以原始发表文献为准。

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型