跳到主要内容

集合通信总览

分布式推理和训练把一个模型切分到数百乃至数千个加速器上,这些加速器在每一步计算后必须交换中间结果——梯度、激活、KV 缓存、专家路由 token——才能继续推进。集合通信(Collective Communication)就是这套交换协议的总称:它定义了"谁向谁发送什么数据、最终每个节点得到什么",并提供经过带宽优化的算法实现。正确选择集合通信原语和算法,直接决定了 TP/DP/EP 并行策略的效率上限。


名词定义

名词定义
集合通信(Collective Communication)分布式计算中多个节点协同完成的数据交换操作,定义"谁向谁发什么、每个节点最终得到什么"的通信语义
规约(Reduce)对多份等形状数据按元素执行可交换结合运算(SUM/MAX/MIN 等),产生一份合并结果
带宽下界(Bus Bandwidth Lower Bound)由带宽约束决定的时间下界——即使启动延迟 $\alpha = 0$,在有限带宽下传输必需的数据量也至少需要的时间。不是"带宽的下界",而是"带宽所决定的时间下界",与延迟下界共同构成总时间下界
节点(Node / Rank)参与集合通信的一个计算单元,可以是 GPU、NPU 等加速器,集合通信原语中通常用 rank 编号标识
Root 节点在一对多或多对一操作(Broadcast/Scatter/Reduce/Gather)中,作为数据源或汇聚目标的特定节点
分片(Shard / Chunk)将完整数据按节点数均分后,每个节点负责的那一份,大小为 $M/N$$M$ 为总数据量,$N$ 为节点数)
带宽利用率(Bus Bandwidth Utilization)算法实际使用的有效传输量与理论带宽下界之比,Ring AllReduce 的带宽利用率约为 $\frac{N-1}{N}$,趋近 1
步数(Step Count)完成一次集合通信所需的通信轮次;带宽型算法步数多但利用率高,延迟型算法步数少但利用率低
网内计算(In-network Computing)在交换机芯片内部直接执行规约运算,而非在终端节点上做软件规约,代表技术为 NVLS(NVLink SHARP)
AllReduce规约后每个节点都得到完整结果的全对称操作,等价于 ReduceScatter + AllGather,是 TP/DP 的核心原语
ReduceScatter全局规约后将结果按分片分发,每个节点只保留 $1/N$ 的结果,是 ZeRO 优化器和序列并行的基础
AllGather每个节点贡献一个分片,操作完成后每个节点都持有所有节点分片的完整拼接,与 ReduceScatter 互为对偶
AllToAll每个节点向每个其他节点发送不同数据,等价于对 $N \times N$ 数据矩阵做转置,是 MoE 专家路由的核心原语

符号定义

符号含义单位
$N$参与通信的节点数--
$M$总消息大小Byte
$\alpha$启动延迟(单次通信的固定开销)$\mu s$
$\beta$单链路带宽GB/s
$d$节点度(直连链路数)--
$D$拓扑直径(最长最短路径跳数)hops
$T$通信总时间$\mu s$
$\oplus$规约运算符(SUM/MAX/MIN/MUL)--
$k$端口数(k-port 模型中节点可同时使用的独立链路数)--
$p$有效并行端口数,$p = \min(k, d)$--
$B_{\text{bisection}}$Bisection Bandwidth(割集带宽)GB/s

分类与核心概念

集合通信原语按数据流向分为五类:

P2P(点对点):Send/Recv,一对一传输,是所有集合操作的原子构建块。

一对多:单个 root 节点向所有节点分发数据。Broadcast 发送相同内容,Scatter 分发不同分片。

多对一:多个节点将数据汇聚到单个 root。Reduce 执行规约运算,Gather 执行拼接。

全局对称:每个节点既是发送方也是接收方,最终所有节点状态对等。

  • AllReduce:规约后每个节点都获得完整结果,等价于 ReduceScatter + AllGather。
  • ReduceScatter:规约后将结果按分片分发,每节点保留 $1/N$
  • AllGather:每节点贡献一个分片,操作后每节点持有完整拼接。

全交换AllToAll 中每个节点向每个其他节点发送不同数据,等价于对 $N \times N$ 数据矩阵做转置。

硬件加速NVLS(NVLink SHARP)将规约操作下沉到 NVSwitch 交换芯片内置引擎,把每个 GPU 的传输量从 $\frac{2(N-1)}{N}M$ 压缩到 $M$,打破软件算法的带宽下界。


横向对比

原语通信模式数据流向带宽下界(每节点)典型应用拓扑要求
P2P一对一单向$M / \beta$PP 流水线阶段间激活传递两端直连或低跳数路径
Broadcast一对多root → all(相同内容)$M / \beta$参数广播、初始化同步低直径,tree 或 switch
Scatter一对多root → all(各取分片)$M/N / \beta$数据分发、初始 token 分片同 Broadcast
Reduce多对一all → root(规约)$M / \beta$梯度汇总(非 DP 主流)同 Broadcast
Gather多对一all → root(拼接)$M/N / \beta$结果收集同 Broadcast
AllReduce全对称,规约环形/树形多步$2\frac{N-1}{N}M / \beta$DP 梯度同步、TP 激活同步高 bisection bandwidth,环形或 switch
ReduceScatter全对称,规约+分片环形多步$\frac{N-1}{N}M / \beta$ZeRO 优化器、SP 序列并行高 bisection bandwidth
AllGather全对称,拼接环形多步$\frac{N-1}{N}M / \beta$ZeRO 参数重建、SP 序列并行高 bisection bandwidth
AllToAll全交换,转置全对称多对多$(N-1)M/N / \beta$EP 专家路由(MoE)全连通或低阻塞 Fat-tree
NVLS AllReduce全对称,硬件规约GPU → switch → GPU(单步)$M / \beta$TP/DP(NVSwitch 域内)必须接入 NVSwitch;域外退化为软件算法

文档导航

文档内容
01-理论下界延迟下界、带宽下界推导框架、汇总表、综合下界、bisection 下界、最优算法分类
02-p2pP2P Send/Recv 语义、单跳与多跳代价、流水线与并发优化
03-一对多Broadcast 与 Scatter:二叉树/binomial tree 算法及理论下界
04-多对一Reduce 与 Gather:对偶性分析及 root 瓶颈规避策略
05-reduce-scatterReduceScatter:与 AllGather 的对偶关系,Ring 实现与带宽利用率
06-all-gatherAllGather:Ring 实现、在 ZeRO 和 SP 中的具体用法
07-all-reduceAllReduce:Ring / Double Binary Tree / Halving-Doubling 算法对比与选型
08-all-to-allAllToAll:矩阵转置语义、Pairwise/Ring/Bruck 算法,MoE 路由建模
09-nvlsNVLS 硬件归约:如何突破软件 AllReduce 带宽下界及建模方法
10-拓扑影响Ring/Torus/Fat-Tree 等拓扑对各原语性能的系统性影响与分层策略
11-端口模型与硬件成本k-port 模型的硬件实现、端口增加的成本与收益递减、瓶颈转移分析