本文档介绍了 Collective Communication Analyzer (CoMMA),这是一个用于收集服务 NCCL 遥测数据的库。 Google Cloud NCCL 遥测数据收集 NCCL 在执行期间生成的性能指标和操作事件。 NVIDIA Collective Communication Library (NCCL) 可加速并行运行的 GPU 和 分布式计算系统之间的高性能通信。这种高性能通信对于深度学习和高性能计算 (HPC) 尤其有用。
对于 NCCL 2.23 及更高版本,NVIDIA 推出了 NCCL 分析器插件 API, 开发者可以使用该 API 注册函数回调,以便在 NCCL 集体操作期间收集遥测数据。Google 提供了 Collective Communication Analyzer (CoMMA), 这是一个使用 NVIDIA 的 NCCL 分析器插件 API 来收集服务 NCCL 遥测数据的库。 Google Cloud CoMMA 会自动安装并针对某些映像启用,但您也可以停用、重新启用 CoMMA,或者手动安装并启用 CoMMA 以控制数据收集。
已启用 CoMMA 的映像
对于 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器类型,当您使用任何打包了 gIB NCCL 插件的映像时,系统都会安装并自动启用 CoMMA。以下映像包含 gIB NCCL 插件:
- 带有 containerd 的 Container-Optimized OS (cos_containerd)
节点映像:Google Kubernetes Engine (GKE) 使用这些映像来创建
GKE Autopilot 集群。CoMMA 二进制文件位于
/home/kubernetes/bin/gib目录中。 - 深度学习软件层容器映像: 您可以使用这些映像在 GKE 集群上部署和配置 AI 和机器学习框架 与库。
如果您使用上述任何映像,并且想要停用 CoMMA 收集 NCCL 遥测数据,请参阅 停用 CoMMA。 不过,您必须启用 CoMMA,才能使用 延迟任务检测或 无响应工作负载检测 等功能。如果您未使用这些映像,并且想要启用 CoMMA 来收集 NCCL 遥测数据,请参阅 安装 CoMMA。
优势
CoMMA 收集的 NCCL 遥测数据有助于识别 GPU 通信中的性能瓶颈,尤其是延迟任务。CoMMA 会收集精细数据,例如集体通信操作的延迟时间直方图。然后,诊断服务可以处理和使用此数据来找出延迟任务。
使用 CoMMA 收集遥测数据具有以下优势:
延迟任务检测和无响应工作负载检测的必要条件: CoMMA 会收集精细的 NCCL 遥测数据,以识别 GPU 到 GPU 通信中的性能 瓶颈或延迟任务。CoMMA 提供详细的 NCCL 遥测数据,有助于识别和解决大规模 AI 和机器学习训练工作负载中的问题。
例如,CoMMA 会捕获 NCCL 操作中使用的算法。此信息对于性能分析和调整非常有用,因为不同的算法可能会根据工作负载和系统配置而具有显著不同的性能特征。
CoMMA 还有助于排查性能欠佳和错误问题。它可以将源自较低层传输层(例如 TCP、RDMA 或交换机网络)的错误追溯到特定的 NCCL 集体和启动节点。它可以识别心跳遥测信号何时停止响应,并跟踪无响应工作负载的潜在原因。
低开销跟踪:CoMMA 在 主动收集 NCCL 遥测数据期间使用的计算资源极少,因此非常适合对性能敏感且 长时间运行的机器学习工作负载,例如大型语言模型 (LLM) 训练。
扩大 NCCL 遥测数据范围:CoMMA 使用 NCCL 分析器插件 API。 与基于传输的插件相比,此 API 可收集范围更广的 NCCL 遥测数据。基于传输的插件主要收集有关底层网络传输的遥测数据,包括通过网络硬件和网络协议进行的数据传输。分析器插件会收集 NCCL 通信操作的遥测数据,包括集体通信、代理操作和数据传输的时序。
了解 CoMMA 的工作原理
在应用运行时,NCCL 会自动加载安装在 LD_LIBRARY_PATH 环境变量指定位置的 CoMMA 库。然后,CoMMA
会收集 NCCL 遥测数据,其他 Google 服务随后可以使用这些数据。您还可以选择将此数据导出到本地文件系统。
后续步骤
- 了解如何 启用、停用和配置 CoMMA。
- 了解如何 排查 CoMMA 问题。
- 了解如何 检测和解决延迟任务。
- 了解如何 检测无响应工作负载。