使用 NCCL/gIB 优化集群网络

现代机器学习框架通常使用 NVIDIA Collective Communications Library (NCCL) 来实现 GPU 间通信原语。

Google 的增强版 NCCL 称为 NCCL/gIB,可在Google Cloud的 A5X、A4X Max、A4X、A4 和 A3 Ultra 实例上使用。在 Google 基础设施上,NCCL/gIB 通常比上游 NCCL 性能更高。由于 NCCL 性能可能会影响整体工作负载性能,因此我们建议您使用 NCCL/gIB。

NCCL/gIB 包含 Google 专属功能和优化,例如:

  • gIB 网络插件可在 Google 网络上提供更出色的负载均衡,从而在集体操作期间更稳定地实现高吞吐量和低延迟。
  • 自定义调优器插件,用于在 Google Cloud 虚拟机上选择最佳调优选项。
  • CoMMA 性能分析器插件可为您的工作负载提供详细的性能指标和诊断数据。
  • env 插件可为 Google Cloud 虚拟机提供特定于平台的变量配置。

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 倍。

图表显示 NCCL/gIB 在 AllReduce 任务中的表现优于上游 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 测试之前,您必须在运行时环境中安装 NCCL/gIB。

使用 NCCL/gIB

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

如需了解如何在 A5X GKE 集群上运行 NCCL/gIB,请与您的 Google Cloud 代表联系。

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