监控 Compute Engine 实例和 Slurm 集群

本文档介绍了如何监控使用预留容量创建的 A4X Max、A4X、A4、A3 Ultra 或 A3 Mega Compute Engine 实例。具体而言,本文档介绍了如何使用 Cloud Monitoring 信息中心来识别和排查独立计算实例或 Slurm 集群中的性能瓶颈。使用这些信息中心有助于最大限度地减少工作负载的停机时间和性能问题。

创建或使用预构建的 Monitoring 信息中心来监控独立计算实例或 Slurm 集群时,您可以监控以下内容:

  • 计算实例健康状况

  • GPU 性能

  • 网络传输效率

  • 块和子块之间的网络效率

  • 机器学习 (ML) 工作负载效率

  • Straggler 检测

准备工作

在监控工作负载之前,请先完成以下步骤(如果尚未完成):

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

限制

  • 本文档中的指标仅适用于在满足以下所有条件的计算实例上运行的工作负载:

    • 计算实例必须创建为独立的 Compute Engine 实例或 Slurm 集群的一部分。
    • 计算实例必须是使用预留容量创建的。
    • 计算实例必须使用 A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 机器系列
      • 不过,异常检测功能也支持使用 A3 Mega 机器系列的虚拟机 (VM) 实例。
  • 如需监控机器学习工作负载指标,您必须为工作负载设置监控

  • 异常值检测指标还存在以下限制:

    • 对于 A3 Mega 以外的受支持的机器系列,落后者检测仅支持启用 Collective Communication Analyzer (CoMMA) 库以将 NCCL 遥测数据导出到 Google Cloud 服务的计算实例。如需了解详情,请参阅 CoMMA 概览
    • Straggler 检测通常最多需要 10 分钟才能报告 Straggler。
    • 与本文档中的其他指标不同,您无法按集群、块、子块或计算实例过滤项目的落后者检测指标。不过,您可以按一个或多个疑似落后者的计算实例的 ID 来过滤用于检测落后者的查询日志。

所需的角色

如需获得监控 AI Hypercomputer 工作负载的指标所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 如需在 Cloud Monitoring 中查看指标,您需要拥有项目的 Monitoring Editor (roles/monitoring.editor)
  • 如需在 Logging 中查看滞后检测日志,请执行以下操作:针对项目的 Logs Viewer (roles/logging.viewer)

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含监控 AI Hypercomputer 工作负载的指标所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需监控 AI Hypercomputer 工作负载的指标,需要以下权限:

  • 查看信息中心:项目的 monitoring.dashboards.get 权限
  • 创建信息中心:项目的 monitoring.dashboards.create 权限
  • 如需查看日志条目,请执行以下操作: 针对项目的 logging.logEntries.list 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

可用指标

根据您的使用场景,以下指标可用于监控计算实例和 Slurm 集群:

如需了解如何查看这些指标,请参阅本文档中的直观呈现指标

基础架构指标

如需监控附加到计算实例的 GPU 的健康状况、性能和网络性能,您可以使用以下指标:

如需大致了解 Compute Engine 中的可用指标,请参阅Google Cloud 指标

GPU 健康指标

如需监控 GPU 的健康状况,请使用以下指标:

名称 指标类型 支持的机器系列 说明
机器状态 machine/machine_status A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 计算实例所用机器的健康状况,即机器是否健康或健康状况不佳,需要维修。
NVSwitch 状态 instance/gpu/nvswitch_status A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 连接到计算实例的 NVIDIA GPU 上的 NVLink 交换机是否遇到问题。
虚拟机基础架构健康状况 instance/gpu/infra_health A4X、A4、A3 Ultra 或 A3 Mega 集群、块、子块以及运行计算实例的主机的健康状况。如果此指标显示计算实例的基础设施运行状况不佳,则该指标还会描述相应问题。
虚拟机故障预测得分 instance/gpu/failure_prediction_score A4X、A4、A3 Ultra 或 A3 Mega 计算实例所运行的主机在未来 5 小时内性能下降的可能性。此值介于 0.01.0 之间。如果该值在一段时间内持续接近 1.0,则计算实例的性能可能会下降。在这种情况下,我们建议您将作业移至其他计算实例,如果遇到计算实例问题,请报告其主机存在故障。

GPU 性能指标

如需监控 GPU 的性能,请使用以下指标:

名称 指标类型 支持的机器系列 说明
累积上下文利用率 instance/gpu/accumulated_context_utilization_seconds A4X Max、A4X、A4、A3 Ultra 或 A3 Mega GPU 忙于处理工作负载的总时间(以秒为单位)。
GPU 功耗 instance/gpu/power_consumption A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 主机上各个 GPU 的功耗(以瓦特 [W] 为单位,以十进制值表示)。对于附加了多个 GPU 的计算实例,该指标会分别提供主机上每个 GPU 的功耗。
SM 利用率 instance/gpu/sm_utilization A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 非零值表示 GPU 上的流式多处理器 (SM) 正在被积极使用。
GPU 温度 instance/gpu/temperature A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 主机上各个 GPU 的温度(以摄氏度 [℃] 为单位,以十进制值表示)。对于挂接了多个 GPU 的计算实例,该指标会分别提供主机上每个 GPU 的温度。
GPU 热边际 instance/gpu/tlimit A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 单个 GPU 在因温度过高而需要减速之前所具有的散热空间(以摄氏度 [℃] 为单位,以十进制值表示)。对于挂接了多个 GPU 的计算实例,该指标会分别提供主机上每个 GPU 的散热空间。

GPU 网络性能指标

如需监控 GPU 的网络性能,请使用以下指标:

名称 指标类型 支持的机器系列 说明
链接运营商变更 instance/gpu/link_carrier_changes A4X、A4、A3 Ultra 或 A3 Mega 网络链路载波在一分钟内更改的频率。
网络 RTT instance/gpu/network_rtt A4X、A4、A3 Ultra 或 A3 Mega 网络数据在来源和目的地之间往返所需的时间(以微秒为单位)。
块间网络流量 instance/gpu/network/inter_block_tx A4X、A4、A3 Ultra 或 A3 Mega 块之间的网络流量字节数。
子块间的网络流量 instance/gpu/network/inter_subblock_tx A4X、A4、A3 Ultra 或 A3 Mega 子块之间的网络流量字节数。
子块内网络流量 instance/gpu/network/intra_subblock_tx A4X、A4、A3 Ultra 或 A3 Mega 单个子块内的网络流量字节数。
NVLink 有效速度 instance/gpu/nvlink_active_speed A4X Max、A4X、A4、A3 Ultra 或 A3 Mega 当前接入链路端口速度,以 GBps 为单位。
吞吐量 Rx 字节数 instance/gpu/throughput_rx_bytes A4X、A4、A3 Ultra 或 A3 Mega 从网络流量接收的字节数。
吞吐量 TX 字节数 instance/gpu/throughput_tx_bytes A4X、A4、A3 Ultra 或 A3 Mega 传输到网络流量的字节数。

GPU 严重错误指标

如需监控 GPU 遇到的可能会导致计算实例停止或对其性能产生负面影响的错误,请使用以下指标:

名称 指标类型 支持的机器系列 说明
NVLink 运行时错误 instance/gpu/nvlink_runtime_error A4X Max 或 A4X 是否发生了 NVLink 运行时错误。
无法更正的 DRAM ECC 错误 instance/gpu/dram_uncorrectable_ecc_error_count A4X Max 或 A4X GPU 动态随机存取存储器 (DRAM) 中无法纠正的纠错码 (ECC) 的数量。
不可纠正的 DRAM 行重映射次数 instance/gpu/dram_uncorrectable_row_remapping_count A4X Max 或 A4X GPU DRAM 中不可纠正的错误导致的行重映射数量。
无法更正的 DRAM 行重映射失败 instance/gpu/dram_row_remapping_failed A4X Max 或 A4X GPU DRAM 中的行重映射是否因以下问题之一而失败:
  • 内存库的重映射尝试失败,因为内存库已重新映射了 8 个不可纠正的错误行。
  • 对行进行重新映射的尝试失败,因为该行已被重新映射。
  • 重映射尝试失败,因为总共发生了 512 次重映射。
无法纠正的 PCIe 错误 instance/gpu/pcie_fatal_error_count A4X Max 或 A4X 无法更正的外部设备互联高速 (PCIe) 错误的数量。
无法纠正的缓存 ECC 错误 instance/gpu/cache_uncorrectable_ecc_error_count A4X Max 或 A4X 缓存内存中无法更正的 ECC 数量。

机器学习工作负载指标

如需监控机器学习工作负载的效率(具体而言是有效吞吐量),请使用以下指标:

名称 指标类型 支持的机器系列 说明
有效产出时间 workload/goodput_time A4X、A4、A3 Ultra 或 A3 Mega 工作负载花费在有效吞吐量活动上的时间(以秒为单位)。这些活动是核心的实用任务,例如模型训练期间的前向或后向传递。
非有效产出时间 workload/badput_time A4X、A4、A3 Ultra 或 A3 Mega 工作负载花费在 badput 活动上的时间(以秒为单位)。 这些活动是开销任务,例如加载或预处理用于训练的数据。

Straggler 检测指标

通过离群检测指标,您可以发现并精确定位疑似离群点。 Straggler 是指单点、非崩溃故障,最终会拖慢整个工作负载的速度。

如需监控虚拟机的落后任务检测情况,请使用以下指标:

名称 指标类型 支持的机器系列 说明
疑似 Straggler instance/gpu/straggler_status A4X、A4、A3 Ultra 或 A3 Mega 虚拟机是否被怀疑为影响工作负载性能的落后者。我们建议您仅在其他指标表明工作负载存在问题时,才对疑似落后者采取行动。

您还可以在 A4X、A4、A3 Ultra 或 A3 Mega 实例的日志条目中查看落后者检测指标。例如,您可以使用以下查询:

说明 查询
特定虚拟机的疑似延迟日志。使用此查询可检查项目中特定工作负载是否存在任何可疑的 Straggler。
    logName=~ "/logs/compute.googleapis.com%2Fworkload_diagnostic" AND jsonPayload.suspectedStragglersDetection.numNodes > 0 AND jsonPayload.suspectedStragglersDetection.nodes.instanceId="INSTANCE_ID"
    

INSTANCE_ID 替换为虚拟机的 ID。 对于要指定的每个其他虚拟机,请向查询添加以下条件:

    OR jsonPayload.suspectedStragglersDetection.nodes.instanceId="INSTANCE_ID"
    
项目中的所有滞后检测日志。使用此查询可验证在未检测到可疑的落后者时,落后者检测服务是否正在运行。(由于存在限制,您无法按特定虚拟机过滤日志,以排除疑似落后者。)
    logName=~ "/logs/compute.googleapis.com%2Fworkload_diagnostic"
    

Straggler 检测指标对于大规模机器学习工作负载特别有用,原因如下:

  • 大规模机器学习工作负载非常容易受到落后任务的影响。大规模机器学习工作负载使用同步和大规模分布式计算。(换句话说,它们具有许多高度相互依赖的组件,这些组件同时运行。)这种架构使得大规模机器学习工作负载非常容易受到单点故障(例如落后者)的影响。

  • 在大规模机器学习工作负载中,很难发现并精确定位 Straggler。 作为参考,请注意单点故障分为两种类型:

    • 停止故障:导致整个系统停止的故障;例如主机错误和维护事件。 它们相对容易检测和解决。

    • 缓慢失败:导致严重性能下降但不会崩溃的失败。它们很难精确定位和调试。

    由于 Straggler 的故障速度较慢,因此很难发现和精确定位,尤其是在大规模同步工作负载中。

查看指标

如需查看计算实例和 Slurm 集群的指标,请按如下方式使用监控信息中心:

如果您在使用信息中心时遇到问题,请参阅排查性能缓慢问题

使用预构建的信息中心

您可以使用为 AI Hypercomputer 预构建的 Monitoring 信息中心来查看计算实例和 Slurm 集群的指标。您还可以复制预构建的信息中心,并根据需要对其进行修改。

如需使用 AI Hypercomputer 的预建信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 名称列中,根据要查看的指标,点击以下某个信息中心的名称:

    • 如需监控计算实例健康状况、GPU 性能和检测落后者,请使用 Cluster Director 健康状况监控信息中心。

      如需详细了解如何使用这些指标来识别和分析问题,您还可以使用 GCE 互动式剧本 - 集群 Director 健康状况监控剧本信息中心。

    • 如需监控网络传输效率,请使用集群导向器传输效率信息中心。

    • 如需监控块和子块之间的网络效率,请使用 Cluster Director Block Network 信息中心。

      如需详细了解如何使用这些指标来识别和分析问题,请使用 GCE 互动式剧本 - Cluster Director 阻止网络剧本信息中心。

    系统会打开所选信息中心的详情页面。您可以使用工具栏中的时间范围选择器更改数据的时间范围。

  3. 可选:如需复制信息中心并根据需要进行自定义,请点击 复制信息中心

创建自定义信息中心

如需创建自定义 Monitoring 信息中心,请执行以下操作:

  1. 选择要监控的指标。如果您尚未这样做,请参阅本文档中的可用指标

  2. 创建和管理自定义信息中心

查看 Straggler 检测日志

如需使用日志浏览器查看落后者检测日志,请完成以下步骤:

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    默认情况下,该页面会查询项目中的所有日志。点击停止查询

  2. 使用工具栏中的时间范围选择器选择要分析的时间范围。

  3. 查询窗格中,输入用于检测滞后日志的查询

  4. 点击 Run Query

以下是落后者检测日志条目的示例。

  {
    ...
    "jsonPayload": {
      ...
      "@type": "type.googleapis.com/ml.aitelemetry.performancedebugging.output.NetworkStragglersOutput",
      "suspectedStragglersDetection": {
        "numNodes": 4,
        "nodes": [
          {
            "latencyMs": 9,
            "instanceId": "INSTANCE_ID_1"
          },
          {
            "latencyMs": 9,
            "instanceId": "INSTANCE_ID_2"
          },
          {
            "instanceId": "INSTANCE_ID_3",
            "latencyMs": 4
          },
          {
            "instanceId": "INSTANCE_ID_4",
            "latencyMs": 0
          }
        ],
        "message": "Suspected stragglers detected."
      }
    },
    "resource": {
      "type": "project",
      "labels": {
        "project_id": "PROJECT_NUMBER"
      }
    },
    ...
    "severity": "INFO",
    "logName": "projects/PROJECT_ID/logs/compute.googleapis.com%2Fworkload_diagnostic",
    ...
  }
  

该日志条目包含以下字段:

  • numNodes:项目中检测到的疑似落后计算实例的数量。在此示例中,系统检测到 4 个疑似落后计算实例。
  • instanceId:被检测为疑似落后者的计算实例的 ID。

后续步骤