技术指南

集体沟通和 NCCL

集体通信是一组 GPU 交换和组合数据的方式,而 NCCL 是 NVIDIA 的库,可以使这些交换变得异常快速。

阅读时间:2分钟最后更新

概述

像 all-reduce 这样的操作是分布式训练的核心,每一步都在每个 GPU 上同步梯度。

深入探讨

训练大型模型意味着每个 GPU 在自己的数据切片上计算梯度,然后所有 GPU 必须在下一步之前就组合结果达成一致。这种协调是通过集体操作完成的:对 GPU 上的值进行 all-reduce 求和,并为每个人提供结果; all-gather 将每个 GPU 的片段收集到所有 GPU 的完整副本中;广播将一个 GPU 的数据发送给其余 GPU;减少分散组合然后分裂。 NCCL(NVIDIA Collective Communications Library)使用拓扑感知算法(例如环和树全归约)跨服务器中的 GPU 以及跨服务器高效地实现这些功能。它利用节点内部的 NVLink 以及节点之间的 InfiniBand 或 RoCE,是 PyTorch DDP、FSDP、DeepSpeed 和 Megatron 下的通信主干。

技术洞察

Ring all-reduce 是经典算法:GPU 形成一个逻辑环,数据被分成循环的块,因此每个步骤都重叠通信,从而使总传输带宽最优并且大致独立于 GPU 数量。对于许多节点,基于树的算法通过分层组合结果来减少延迟。 NCCL 自动检测拓扑,选择最佳算法,并可以使用 NVIDIA SHARP 将简化数学卸载到网络中,从而将必须遍历链路的数据减半。

战略影响

成本与预算

多年来,架构决策决定着性能和运营成本。

更清晰的判决

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

质量控制

更好的工程选择可以减少生产中的可靠性事故。

集体沟通和 NCCL 的未来

随着集群扩展到数十万个 GPU,通信越来越主导训练时间,因此集体库是一个热门领域。期望更深入的网络内计算(交换机进行减少),更好的计算和通信重叠以隐藏延迟,以及缩小移动字节的低精度集合。随着跨供应商的努力和基于以太网的 RDMA 推动替代方案,竞争也在加剧,而 NCCL 不断加强与 NVLink、NVSwitch 和新兴光学结构的集成。

现实世界的实施

使用 PyTorch DistributedDataParallel 中的 all-reduce 同步所有 GPU 上的每个训练步骤的梯度

通过 FSDP 或 DeepSpeed ZeRO 中的全收集和减少分散功能对分片优化器状态进行按需收集参数

在训练运行开始时将初始模型权重从一个 GPU 广播到所有其他 GPU

在 NVLink 和 InfiniBand 上使用环 all-reduce 来保持多节点 GPU 集群的高带宽

风险与防护栏

优化一项基准测试可以隐藏更广泛的系统弱点。

基础设施和维护成本常常被低估。

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

2

在实际负载和数据条件下进行基准测试。

3

仪器监控错误、漂移和用户影响。

4

在扩展之前准备回滚和事件响应路径。

不断探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Collective Communication and NCCL quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

开始测验

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一个指南

线上和线下功能服务偏差

常见问题

什么是集体沟通和 NCCL?

集体通信是一组 GPU 交换和组合数据的方式,而 NCCL 是 NVIDIA 的库,可以使这些交换变得异常快速。像 all-reduce 这样的操作是分布式训练的核心,每一步都在每个 GPU 上同步梯度。

all-reduce 操作在分布式训练中能完成什么?

All-reduce 对每个 GPU 上的值求和(或以其他方式组合),并将相同的结果分配回所有 GPU,这就是梯度同步的方式。

缩写词 NCCL 代表什么?

NCCL是NVIDIA集体通信库,它实现了快速的多GPU和多节点集体操作。

为什么环全归约被认为是带宽最优的?

通过对数据进行分块并在逻辑环上传递数据块,每个链路都会同时使用,并且总传输量大致独立于 GPU 的数量。

哪个集体操作将每个 GPU 的数据收集到所有 GPU 持有的完整副本中?

All-gather 收集每个 GPU 中的不同部分,并在所有 GPU 上组装完整的集合,在 FSDP 等分片训练中大量使用。

NVIDIA SHARP 对集体运算有何作用?

SHARP 执行网络内计算,在交换机内部进行部分减少,从而减少必须经过链路的数据,从而加快集合速度。