使用 NCCL/gIB 优化集群网络

现代机器学习框架通常使用 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 互动,以优化性能并收集遥测数据,如下图所示:

机器学习工作负载由连接到 NVIDIA GPU 和 NCCL 的机器学习框架管理,而 NCCL 连接到各种 Google 工具和插件。

使用 NCCL/gIB 的优势

虽然可以在 Google Cloud 虚拟机上使用上游 NVIDIA Collective Communications Library,而不会出现稳定性问题,但 NCCL/gIB 针对 Google Cloud 进行了更好的优化,即使使用相同的 NCCL 参数,在某些通信模式下,性能差异也可能非常显著。

例如,下图显示了 NCCL/gIB 与上游 NCCL 在 AllReduce 性能方面的比较。在某些消息大小下,NCCL/gIB 的性能比上游 NCCL 高出 12 倍。

一张图表,显示了在 AllReduce 任务中,NCCL/gIB 的性能优于上游 NCCL。

使用 A3 Ultra (H200) 在没有后台流量的情况下实现的 32 节点 NCCL AllReduce 性能。

同样,在比较 NCCL/gIB 与上游 NCCL 在具有后台流量的 AllGather 性能时,NCCL/gIB 在较大消息大小方面比上游 NCCL 表现出色约 50%,如图所示。

一张图表,显示了 NCCL/gIB 在 AllGather 任务中优于上游 NCCL。

在具有噪声背景的共享光纤上使用 A3 Ultra (H200) 的 32 节点 NCCL AllGather 性能。

此外,CoMMA 分析器插件可为 Google 提供改进的自定义遥测数据,以便我们在出现工作负载级问题时更好地为您提供帮助。

使用 NCCL/gIB

如需在集群上运行 NCCL/gIB 测试,请从以下列表中选择最符合您要求的页面:

如需了解如何在运行测试后解决集群的任何问题,请参阅收集和了解 NCCL/gIB 日志以进行问题排查