监控 Cloud TPU 运行状况

Cloud TPU 健康状况监控功能可提供有关 TPU 虚拟机和切片的健康状况的实时信息。借助 Cloud Monitoring 控制台或 Google Cloud CLI,您可以及时发现硬件故障并重新分配资源,从而避免作业失败并最大限度地减少性能下降。

TPU 健康状况监控会为每个正在使用的 TPU 实例分配 HEALTHYUNHEALTHY 状态。运行正常的 TPU 会被分配 HEALTHY 状态,而不再正常运行或性能严重下降的 TPU 会被分配 UNHEALTHY 状态。

除了健康状况之外,TPU 健康状况监控还提供特定作业的日志记录指标。您可以使用这些指标进一步诊断并非由硬件问题引起的 TPU 运行状况和性能问题。

检测 TPU 健康状况不佳的情况

当 TPU 健康状况监控为 TPU 分配 UNHEALTHY 状态时,它会通过 compute.googleapis.com/instance/tpu/infra_health 服务端点提供出现故障的 TPU 的标识信息。

TPU 健康状况状态原因

当物理硬件存在问题时,机器会被归类为 UNHEALTHY。当机器被归类为 UNHEALTHY 时,TPU 健康状况监控会提供以下原因之一:

  • BAD_TPU_CHIP:TPU 硬件本身发生物理故障。虚拟机可能正在按预期运行,但连接到虚拟机的 TPU 存在故障。
  • NETWORKING_ISSUE:分布式 TPU 系统的不同工作器或组件之间底层网络通信中的硬件问题,例如传输远程过程调用 (RPC) 丢弃。
  • BAD_SC_CHIP:TPU 芯片的 SparseCore 内的物理故障。

指标标签

TPU 健康状况监控功能提供以下指标标签,用于识别具体的不健康 TPU:

标签名称 类型 说明
health_status STRING TPU 实例的总体健康状态。
unhealthy_category STRING 健康状况原因。仅当指标的值为 UNHEALTHY 时,系统才会填充此标签。
machine_type STRING 相应实例的 Compute Engine 机器类型。
reservation_id STRING 物理机预留的 ID。

TPU 健康状况监控还提供以下资源标签:

标签名称 类型 说明
project STRING 项目编号。
service STRING API 服务 (compute.googleapis.com)。
resource_type STRING 虚拟机实例。
location STRING 实例所在的可用区。
resource_id STRING Compute Engine 实例 ID。

通过 TPU Cluster Director,TPU 健康状况监控功能可为全容量模式预留提供以下额外的指标标签:

标签名称 类型 说明
machine_id STRING 托管虚拟机的物理机器的 ID。
block_id STRING 托管虚拟机的集群中的块的 ID。
cluster_id STRING 托管虚拟机的集群的 ID。
subblock_id STRING 托管虚拟机的子块的 ID。

日志记录

没有物理问题的机器可能会因与硬件无关的问题而受损或无法正常运行。在这些情况下,TPU 健康状况监控会继续将相应机器归类为 HEALTHY,但也会在关联的项目中通过 Cloud Logging 记录问题的潜在原因。日志会详细说明问题,包括简要说明、疑似根本原因、潜在的罪魁祸首,以及富有实用价值的后续步骤。

日志包含以下原因之一:

  • FINGERPRINT_MISMATCH:预期运行相同 TPU 模块的程序包含不同的二进制指纹。这可能是由于编译器问题导致的不一致所致。
  • DATA_INPUT_STALL:TPU 在直接内存访问 (DMA) 操作或数据传输期间卡住。在 DMA 操作完成之前,TPU 无法继续运行。
  • UNRECOVERABLE_ERROR:一个或多个工作器遇到无法恢复的错误,处于未定义状态。
  • DIFFERENT_MODULE:工作器正在执行不同的 TPU 模块,但它们本应运行相同的模块。
  • UNKNOWN_CAUSE:不确定的错误原因。

您可以使用 Logs Explorer 或 Logs API 查看日志。如需详细了解 Google Cloud 日志记录,请参阅 Google CloudLogging

使用控制台进行监控

Google Cloud 控制台中的监控信息中心可实时直观呈现机器的健康状况、历史趋势和总数。失败事件表将作业失败与其根本原因相关联。

如需在 Cloud Monitoring 中查看预构建的信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud Monitoring 页面。
    前往 Monitoring 控制台
  2. 在导航窗格中,点击信息中心
  3. 过滤条件搜索字段中,输入“TPU 实例健康状况信息中心”。

信息中心默认显示以下指标:

  • 总体 TPU 实例健康状况:归类为 HEALTHY 的 TPU 实例所占的百分比。
  • 实例数:正在使用的 TPU 实例总数。
  • 健康 TPU 实例的数量:归类为 HEALTHY 的 TPU 实例总数。
  • 健康状况不佳的 TPU 实例数量:归类为 UNHEALTHY 的 TPU 实例总数。
  • 虚拟机基础设施健康状况分布HEALTHY 实例随时间变化的数量。

如需添加自定义查询,请点击添加查询,然后编写 PromQL 查询。例如,以下查询会检索所有健康状况不佳的 TPU 实例:

count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})

如需详细了解如何使用 Google Cloud 控制台进行监控,请参阅 Cloud Monitoring 文档

使用 CLI 进行监控

Google Cloud CLI 提供实时 TPU 健康状况数据。以下示例请求会检索所有 UNHEALTHY TPU:

export TOKEN=$(gcloud auth application-default print-access-token)

export PROMQL_QUERY='count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})'

export LOCATION="global"

curl -G \
  --header "Authorization: Bearer ${TOKEN}" \
  --header "Content-Type: application/json" \
  --header "X-Goog-User-Project: ${PROJECT_ID}" \
  --data-urlencode "query=${PROMQL_QUERY}" \
  "https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/location/${LOCATION}/prometheus/api/v1/query"

您应该会看到如下所示的响应:

{"status":"success","data":{"resultType":"vector","result":[65]}}

如需详细了解 gcloud CLI,请参阅 gcloud CLI 概览