现代机器学习框架通常使用 NVIDIA Collective Communications Library (NCCL) 进行 GPU 间通信。
Google 的增强版 NCCL 称为 NCCL/gIB,可在 Google Cloud的 A3 Ultra、A4 和 A4X 虚拟机上使用。在 Google 基础设施上,NCCL/gIB 通常比上游 NCCL 更具性能优势。由于 NCCL 性能可能会影响整体工作负载性能,因此我们建议您使用 NCCL/gIB。
NCCL/gIB 包含 Google 特有的功能和优化,例如:
- gIB 网络插件可改进 Google 网络上的负载均衡,从而在集体操作期间更稳定地实现高吞吐量和低延迟。
- 一个自定义调谐器插件,用于在 Google Cloud 虚拟机上选择最佳调谐选项。
- CoMMA 分析器插件可为工作负载提供详细的性能指标和诊断数据。
NCCL/gIB 架构
NCCL/gIB 会与机器学习框架和集群中的 NVIDIA GPU 互动,以优化性能并收集遥测数据,如下图所示:

使用 NCCL/gIB 的优势
虽然可以在 Google Cloud 虚拟机上使用上游 NVIDIA Collective Communications Library,而不会出现稳定性问题,但 NCCL/gIB 针对 Google Cloud 进行了更好的优化,即使使用相同的 NCCL 参数,在某些通信模式下,性能差异也可能非常显著。
例如,下图显示了 NCCL/gIB 与上游 NCCL 在 AllReduce 性能方面的比较。在某些消息大小下,NCCL/gIB 的性能比上游 NCCL 高出 12 倍。

使用 A3 Ultra (H200) 在没有后台流量的情况下实现的 32 节点 NCCL AllReduce 性能。
同样,在比较 NCCL/gIB 与上游 NCCL 在具有后台流量的 AllGather 性能时,NCCL/gIB 在较大消息大小方面比上游 NCCL 表现出色约 50%,如图所示。

在具有噪声背景的共享光纤上使用 A3 Ultra (H200) 的 32 节点 NCCL AllGather 性能。
此外,CoMMA 分析器插件可为 Google 提供改进的自定义遥测数据,以便我们在出现工作负载级问题时更好地为您提供帮助。
使用 NCCL/gIB
如需在集群上运行 NCCL/gIB 测试,请从以下列表中选择最符合您要求的页面:
- 在 Compute Engine 虚拟机上运行 NCCL 测试
- 在采用默认配置的 GKE 集群上运行 NCCL
- 在采用 A4X 的自定义 GKE 集群上运行 NCCL
- 在采用 A4 或 A3 Ultra 的自定义 GKE 集群上运行 NCCL
- 在 Slurm 集群上运行 NCCL 测试
- 在 Cluster Director 中运行 NCCL 测试
如需了解如何在运行测试后解决集群的任何问题,请参阅收集和了解 NCCL/gIB 日志以进行问题排查。