概览

本文档介绍了 Collective Communication Analyzer (CoMMA),这是一个用于为 Google Cloud 服务收集 NCCL 遥测数据的库。NCCL 遥测会收集 NCCL 在执行期间生成的性能指标和操作事件。NVIDIA Collective Communication Library (NCCL) 可加速并行运行的 GPU 和分布式计算系统之间的高性能通信。这种高性能通信尤其适用于深度学习和高性能计算 (HPC)。

对于 NCCL 版本 2.23 及更高版本,NVIDIA 引入了 NCCL 分析器插件 API,开发者可以使用该 API 注册函数回调,以便在 NCCL 集体操作期间收集遥测数据。Google 提供了集合通信分析器 (CoMMA),这是一个使用 NVIDIA 的 NCCL 分析器插件 API 来收集 Google Cloud 服务的 NCCL 遥测数据的库。CoMMA 会自动安装并针对某些映像启用,但您也可以停用、重新启用或手动安装并启用 CoMMA 来控制数据收集。

已启用 CoMMA 的图片

对于 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器类型,当您使用封装了 NCCL Google 基础设施软件包 (gIB) 插件的任何映像时,系统会自动安装并启用 CoMMA。以下映像包含 NCCL gIB 插件:

如果您使用任何这些映像,并希望禁止 CoMMA 收集 NCCL 遥测数据,请参阅停用 CoMMA。不过,必须启用 CoMMA,落后者检测等功能才能正常运行。 如果您不使用这些映像,但想让 CoMMA 收集 NCCL 遥测数据,请参阅安装 CoMMA

优势

CoMMA 收集的 NCCL 遥测数据有助于识别 GPU 通信中的性能瓶颈,尤其是落后者。CoMMA 会收集精细的数据,例如集体通信操作的延迟时间直方图。然后,诊断服务可以处理并使用这些数据来精确定位落后者。

使用 CoMMA 收集遥测数据具有以下优势:

  • 检测落后者所需:CoMMA 会收集精细的 NCCL 遥测数据,以识别 GPU 到 GPU 通信中的性能瓶颈或落后者。CoMMA 提供详细的 NCCL 遥测数据,有助于识别和解决大规模 AI 和 ML 训练工作负载中的问题。

    例如,CoMMA 会捕获 NCCL 操作中使用的算法。此信息对于性能分析和调整非常有用,因为不同的算法可能会因工作负载和系统配置而具有显著不同的性能特征。

    CoMMA 还有助于排查次优性能和错误。它可以将源自较低级别传输层(例如 TCP、RDMA 或交换机结构)的错误追溯到特定的 NCCL 集体和启动节点。

  • 低开销跟踪:在主动收集 NCCL 遥测数据期间,CoMMA 使用的计算资源极少,因此非常适合对性能敏感且长时间运行的机器学习工作负载,例如大语言模型 (LLM) 训练。

  • 扩大 NCCL 遥测范围:CoMMA 使用 NCCL 分析器插件 API。 与基于传输的插件相比,此 API 可收集范围更广的 NCCL 遥测数据。基于传输的插件主要收集有关底层网络传输的遥测数据,包括通过网络硬件和网络协议进行的数据传输。分析器插件会收集 NCCL 通信操作的遥测数据,包括集体通信、代理操作和数据传输的时序。

了解 CoMMA 的运作方式

在应用运行时,NCCL 会自动加载安装在 LD_LIBRARY_PATH 环境变量指定位置的 CoMMA 库。然后,CoMMA 会收集 NCCL 遥测数据,供其他 Google 服务使用。您还可以选择将这些数据导出到本地文件系统。

后续步骤