技术指南

集体沟通和 NCCL

集体通信协调参与设备组之间的数据。

听听这个指南AI叙述 · ~2 min

在本页阅读时间:2分钟
  1. 概述
  2. 深入探讨
  3. 现实世界的实施
  4. 集体沟通和 NCCL 的未来
  5. 付诸实践
  6. 不断探索
  7. 常见问题

概述

NCCL 实现 GPU 通信操作,如 all-reduce、all-gather 和 broadcast;其性能取决于消息大小、拓扑、硬件和配置。

深入探讨

训练大型模型意味着每个 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 下的通信主干。

现实世界的实施

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

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

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

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

集体沟通和 NCCL 的未来

更大的模型和集群促使人们研究计算/通信重叠、拓扑感知路由和网络卸载。这些可以在某些工作负载中提升性能,同时增加配置和调试需求。比较算法时请使用代表性张量大小并记录版本和拓扑。即使库自动化了大部分路由,正确的参与和缓冲区处理仍然至关重要。仅凭链路带宽声明无法确定端到端训练速度。

付诸实践

为什么这很重要

  • 成本与预算. 多年来,架构决策决定着性能和运营成本。
  • 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
  • 质量控制. 更好的工程选择可以减少生产中的可靠性事故。

留意

  • 优化一项基准测试可以隐藏更广泛的系统弱点。
  • 基础设施和维护成本常常被低估。
  • 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

后续步骤

  1. 在实施之前定义延迟、质量和成本目标。
  2. 在实际负载和数据条件下进行基准测试。
  3. 仪器监控错误、漂移和用户影响。
  4. 在扩展之前准备回滚和事件响应路径。

不断探索

免费通讯

获取每日AI简报

每个工作日早晨提供三条经过验证的AI故事,使用简明英文撰写。永久免费,无广告。

每个工作日发送一封邮件。一键退订。我们永不出售或分享您的地址。

测试一下自己

参加集体通信与 NCCL 测验

每个答案即时反馈,课程通过后可获得可验证ID的可分享证书。

开始测验

支持免费AI教育。AI Understanding是一家501(c)(3)非营利组织——无广告,无付费墙,永不收费。 捐款

常见问题

什么是集体沟通和 NCCL?

集体通信协调参与设备组之间的数据。NCCL 实现 GPU 通信操作,如 all-reduce、all-gather 和 broadcast;其性能取决于消息大小、拓扑、硬件和配置。

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

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

缩写词 NCCL 代表什么?

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

为什么分块环形通信对大张量有用?

环形组织块移动,但性能仍取决于网络和工作负载。

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

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

支持的网络归约卸载(如 SHARP)会做什么?

卸载能力取决于配置,必须进行评估。