多卡训练的一切同步都可归结为集合通信原语。设每卡持有数据分片
S 字节、共 N 卡: ①
AllGather(各卡把自己的分片广播给其余 N−1 卡, 最终每卡持有全部
NS 字节): 每卡需要接收 N−1 个分片, 通信量
(N−1)S——每卡数据被其余 N−1 卡各读一遍; ②
ReduceScatter(各卡数据归约后只保留自己那份结果): 每卡
NN−1S; ③
AllReduce(归约后分发给所有卡)=
ReduceScatter + AllGather 两步: 环形实现下每卡
2NN−1S→2S(N 很大时每卡只传自己数据的两倍, 带宽与 N 无关); ④
AllToAll(每卡把数据发给其余所有卡、也接收来自所有卡)——MoE 专家并行的 token 路由就是 AllToAll: 均匀负载时每卡
NN−1S。硬件带宽对比: NVLink 4.0(H100)每卡 900GB/s, NVLink 5.0(B200/GB200)每卡 1.8TB/s; InfiniBand 800Gbps(XDR)= 100GB/s, 400Gbps(NDR)= 50GB/s——NVLink 5.0 是单条 IB 800Gbps 的约 18 倍。
轨优化(rail-optimized)拓扑: 每个节点的第 i 张 GPU 的网卡接入同一台叶交换机(第 i 条“轨”), 跨节点通信固定发生在同号 GPU 之间, 避免 AllReduce/AllGather 流量在多条轨之间横跳造成热点与拥塞; 配合节点内 NVSwitch 全互连与节点间叶脊/3D-Torus, 构成 NCCL 的顶层拓扑设计。