返回顶部
返回首页 会员充值 我的足迹 返回上一页
具身智能
情绪经济
商业航天
十五五
银发经济

集合通信算法NCCL

在数千个GPU同步训练万亿参数模型时,NCCL集合通信算法决定了数据如何在节点间流动——它们是分布式AI训练的“交通规则”。VIAVI这份白皮书将RingAllReduce、AlltoAll、双二叉树、Halving Doubling四种核心算法逐一拆解:环状拓扑如何实现接近最优的带宽利用率,全对全通信为何对交换结构提出极致要求,双二叉树如何在延迟与带宽之间取得平衡。理解这些算法,是优化AI数据中心网络的起点。

NCCL——AI分布式训练的通信骨架

从GPU到网络:NCCL的角色定位

集合通信库(CCL)是一个软件库,旨在促进并行和分布式计算环境中多个进程之间的高效数据交换和同步。NVIDIA的NCCL实现了针对NVIDIA GPU和网络优化的多GPU与多节点通信原语。

NCCL提供全收集、全归约、广播、归约-分散以及点对点发送和接收等例程,这些例程经过优化,可通过节点内的PCIe和NVLink高速互连以及跨节点的Mellanox网络实现高带宽和低延迟。NCCL在深度学习框架中具有重要应用,其中AllReduce全归约集合通信被广泛用于神经网络训练。

CCL与AI流量模式的关系

AI工作负载依赖于一种独特的流量模式,专为分布式系统中的大容量并行数据处理而设计。训练现代AI模型涉及将大规模数据集分成块,并将它们分布在多个xPU上进行同时处理。这些操作的结果必须在训练期间反复同步,需要精确的协调和超可靠的网络通信。

AI流量模式的关键特征包括:包含大量大象流、数据和计算密集型、需要大量短小的远程内存访问操作、节点同时开始传输、任何一个流发生延迟都会拖慢所有节点的处理进度。CCL正是为管理这种复杂通信而设计的软件层。

RingAllReduce——环状拓扑的高效同步

两阶段同步的完整拆解

RingAllReduce是一种分布式算法,主要用于深度学习中跨多个设备有效地平均梯度。设备排列在逻辑环中,每台设备只与其直接相邻的设备通信。算法分为ReduceScatter与AllGather两个阶段。

在ReduceScatter阶段,总数据被分成N个块。每台设备向下一台设备发送一个数据块,同时接收来自前一台设备的数据块,执行归约操作(如求和)。这个过程持续N-1个步骤,之后每个设备将持有归约结果的一个块。在第一次迭代后,每个GPU将拥有一个由两个不同GPU上相应块总和组成的块。

在AllGather阶段,每台设备将其归约的块传递给下一台设备,同时从前一台设备接收另一个缺失的块。经过N-1个步骤后,所有设备都将接收到完整的聚合数据。在NCCL运算参数中,可指定归约运算类型,如sum(求和)、prod(乘积)、min(最小值)、max(最大值)、avg(平均值)。

RingAllReduce的优缺点

RingAllReduce的核心优势在于其通信模式的高度结构化——每个节点只与两个邻居通信,避免了全连接拓扑中的拥塞风险。通过流水线化处理,实现了接近最优的带宽利用率。

其局限性在于延迟与环中节点数量成正比。在数百甚至数千个GPU的集群中,每个数据块需要经过N-1步才能完成传播,这可能在超大规模集群中成为瓶颈。正是这一局限性催生了双二叉树等更优算法。

AlltoAll——全对全通信的极致挑战

最密集的通信模式

AlltoAll是另一项极具挑战性的通信模式,集群中的每个处理器都要与其他所有处理器交换数据,导致极其密集的通信流,对交换结构提出很高要求。这在Transformer类模型的大规模并行训练中尤为常见,因为每个计算节点都需要与其他节点交换数据。

在NCCL 2.12中,NVIDIA引入了PXN功能以优化消息路径效率。在Rail优化网络拓扑中,每个DGX系统的NIC连接到同一个叶交换机。若无PXN,消息需经过三跳网络交换机,可能导致争用并因其他流量干扰而变慢。

AlltoAll的优化方向

在同一对NIC之间传递的消息被聚合,以最大化有效消息速率和网络带宽。PXN功能的核心价值在于优化了跨Rail的消息路径,减少了交换机跳数,降低了争用风险。

对于网络架构师而言,AlltoAll流量模式意味着交换结构必须具备无阻塞的全互联能力,任何链路或交换机的带宽不足都可能成为整个集群的瓶颈。这也是为什么AI数据中心普遍采用叶脊架构和高带宽交换机的原因。

双二叉树与Halving Doubling——不同规模下的最优选择

双二叉树:对数级延迟的突破

NCCL 2.4引入的双二叉树提供了满带宽和对数级延迟,甚至低于2D环的延迟。在双二叉树中,第一二叉树中的一半秩是节点,另一半是叶;第二个二叉树将其反转,使用叶作为节点,反之亦然。

两棵树叠加后,除了根秩具有一个父级和一个子级之外,所有秩都有两个父级和两个子级。如果用两棵树分别处理一半的数据,每个秩最多会接收和发送两次半量数据——在发送和接收数据量方面,这与环算法同样最优,但延迟显著降低。

Halving Doubling:递归折半的同步策略

Halving Doubling算法结合ReduceScatter通过递归向量折半和距离倍增实现,随后是AllGather通过递归向量倍增和递归距离折半实现。

在第一步中,进程数量p减少到2的幂值。前2r个进程成对执行,从每个偶数秩向奇数秩传递输入向量的后半部分,从每个奇数秩向偶数秩传递输入向量的前半部分。所有进程各自计算其对应一半部分的归约。第一步结束时,将每个奇数进程的结果发送至秩-1。在第二步中,偶数秩/奇数秩的进程交换缓冲区数据,缓冲区递归折半,距离倍增,直到ReduceScatter阶段完成。
点击阅读报告原文: VIAVI:2026年AI ML 数据中心网络验证:概念、挑战和测试解决方案(18页)
相关报告