监控 Cloud TPU 虚拟机

本指南介绍了如何使用 Google Cloud Monitoring 来监控 Cloud TPU 虚拟机。Google Cloud Monitoring 会自动从 Cloud TPU 及其主机 Compute Engine 收集指标日志。这些数据可用于监控 Cloud TPU 和 Compute Engine 的运行状况。

借助指标,您可以跟踪一段时间内的数值量,例如 CPU 利用率、网络使用情况或 TensorCore 空闲时长。日志可捕获特定时间点的事件。日志条目由您自己的代码、Google Cloud 服务、第三方应用和 Google Cloud 基础架构编写。您还可以通过创建基于日志的指标,根据日志条目中的数据生成指标。您还可以根据指标值或日志条目设置提醒政策

本指南介绍了 Google Cloud Monitoring,并向您展示了如何执行以下操作:

前提条件

本文假定您对 Google Cloud Monitoring 有一些基本了解。您必须先创建 Compute Engine 虚拟机和 Cloud TPU 资源,才能开始生成和使用 Google Cloud Monitoring。如需了解详情,请参阅 Cloud TPU 快速入门

指标

Google Cloud 指标由 Compute Engine 虚拟机和 Cloud TPU 运行时自动生成。Cloud TPU 虚拟机会生成以下指标:

  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • cpu/utilization
  • tpu/tensorcore/idle_duration
  • accelerator/tensorcore_utilization
  • accelerator/memory_bandwidth_utilization
  • accelerator/duty_cycle
  • accelerator/memory_total
  • accelerator/memory_used

指标值从生成到在 Metrics Explorer 中显示可能需要最多 180 秒的时间。

如需查看 Cloud TPU 生成的指标的完整列表,请参阅 Google Cloud Cloud TPU 指标

内存使用量

系统会为 TPU Worker 资源生成 memory/usage 指标,并以字节为单位跟踪 TPU 虚拟机使用的内存。系统每 60 秒对此指标进行一次采样。

网络接收的字节数

系统会为 TPU Worker 资源生成 network/received_bytes_count 指标,并跟踪 TPU 虚拟机在某个时间点通过网络接收的累计字节数。

网络发送的字节数

系统会为 TPU Worker 资源生成 network/sent_bytes_count 指标,并跟踪 TPU 虚拟机在某个时间点通过网络发送的累计字节数。

CPU 利用率

系统会为 TPU Worker 资源生成 cpu/utilization 指标,并跟踪 TPU 工作器的当前 CPU 利用率(以百分比表示),每分钟抽样一次。值通常介于 0.0 到 100.0 之间,但可能会超过 100.0。

TensorCore 空闲时长

系统会为 TPU Worker 资源生成 tpu/tensorcore/idle_duration 指标,并跟踪每个 TPU 芯片的 TensorCore 处于空闲状态的时长。此指标适用于所有正在使用的 TPU 上的每个芯片。如果 TensorCore 正在使用,空闲时长值会重置为零。当 TensorCore 不再使用时,空闲时长值会开始增加。

下图显示了具有一个工作器的 v2-8 TPU 虚拟机的 tpu/tensorcore/idle_duration 指标。每个工作器有四个芯片。在此示例中,所有四个条状标签的 tpu/tensorcore/idle_duration 值相同,因此图表会相互叠加。

图片

TensorCore 利用率

系统会为 GCE TPU Worker 资源生成 accelerator/tensorcore_utilization 指标,并跟踪当前使用的 TensorCore 百分比。此指标的计算方法为:将采样周期内执行的 TensorCore 操作数除以同一采样周期内可执行的最大操作数。值越大,表示利用率越高。v4 及更高版本的 TPU 支持 TensorCore 利用率指标。

内存带宽利用率

系统会为 GCE TPU Worker 资源生成 accelerator/memory_bandwidth_utilization 指标,并跟踪正在使用的加速器内存带宽的当前百分比。此指标的计算方法是将采样周期内使用的内存带宽除以同一采样周期内支持的最大带宽。值越大,表示利用率越高。v4 及更新型号的 TPU 支持“内存带宽利用率”指标。

加速器占空比

系统会为 GCE TPU Worker 资源生成 accelerator/duty_cycle 指标,并跟踪加速器 TensorCore 在采样周期内活跃处理的时间所占的百分比。值的范围为 0 到 100。值越大,TensorCore 利用率越高。当机器学习工作负载在 TPU VM 上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本,以及 TensorFlow 2.14.0 及更高版本支持“加速器占用率”指标。

加速器内存总量

系统会为 GCE TPU Worker 资源生成 accelerator/memory_total 指标,并跟踪分配的加速器内存总量(以字节为单位)。当机器学习工作负载在 TPU VM 上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本,以及 TensorFlow 2.14.0 及更高版本支持“Accelerator Memory Total”指标。

使用的加速器内存

系统会为 GCE TPU Worker 资源生成 accelerator/memory_used 指标,并跟踪已使用的加速器内存总量(以字节为单位)。当机器学习工作负载在 TPU VM 上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本以及 TensorFlow 2.14.0 及更高版本支持“Accelerator Memory Used”指标。

查看指标

您可以使用 Google Cloud 控制台中的 Metrics Explorer 查看指标。

在 Metrics Explorer 中,点击选择指标,然后根据您感兴趣的指标搜索 TPU WorkerGCE TPU Worker。选择一个资源以显示该资源的所有可用指标。如果启用活跃,系统仅会列出过去 25 小时内包含时序数据的指标。停用有效即可列出所有指标。

您还可以使用 curl HTTP 调用访问指标。

使用 projects.timeSeries.query 文档中的 Try it! 按钮,检索指定时间范围内指标的值。

  1. 填写名称时,请采用以下格式:projects/{project-name}
  2. 请求正文部分中添加查询。以下是用于检索指定区域过去五分钟的空闲时长指标的查询示例。

    fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
    
  3. 点击执行以进行调用,并查看 HTTP POST 消息的结果。

如需详细了解如何自定义此查询,请参阅 Monitoring Query Language 参考文档

创建提醒

您可以创建提醒政策,指示 Cloud Monitoring 在满足某个条件时发送提醒。

本部分中的步骤显示了如何为 TensorCore Idle Duration 指标添加提醒政策的示例。每当此指标超过 24 小时时,Cloud Monitoring 都会向注册的电子邮件地址发送电子邮件。

  1. 前往 Monitoring 控制台
  2. 在导航窗格中,点击提醒
  3. 点击修改通知渠道
  4. 电子邮件下,点击添加新地址。输入电子邮件地址和显示名称,然后点击保存
  5. “提醒”页面上,点击创建政策
  6. 点击选择指标,然后选择 Tensorcore 空闲时长,最后点击应用
  7. 点击下一步,然后点击阈值
  8. 对于提醒触发器,选择任何时序违反
  9. 阈值位置部分,选择高于阈值
  10. 阈值部分,输入 86400000
  11. 点击下一步
  12. 通知渠道下,选择您的电子邮件通知渠道,然后点击确定
  13. 输入提醒政策的名称。
  14. 点击下一步,然后点击创建政策

当 TensorCore 空闲时长超过 24 小时时,系统会向您指定的电子邮件地址发送电子邮件。

日志记录

日志条目由 Google Cloud 服务、第三方服务、机器学习框架或您的代码编写。您可以使用日志浏览器或日志 API 查看日志。如需详细了解 Google Cloud 日志记录,请参阅 Google Cloud Logging

TPU 工作器日志包含特定区域中特定 Cloud TPU 工作器的相关信息,例如 Cloud TPU 工作器 (system_available_memory_GiB) 上可用的内存量。

已审核的资源日志包含有关特定 Cloud TPU API 的调用时间以及调用者的信息。例如,您可以找到有关调用 CreateNodeUpdateNodeDeleteNode API 的信息。

ML 框架可以生成标准输出和标准错误日志。这些日志由环境变量控制,并由训练脚本读取。

您的代码可以将日志写入 Google Cloud Logging。如需了解详情,请参阅写入标准日志写入结构化日志

查询 Google Cloud 日志

在 Google Cloud 控制台中查看日志时,该页面会执行默认查询。您可以通过选择 Show query 切换开关来查看查询。您可以修改默认查询或创建新的查询。如需了解详情,请参阅在日志浏览器中构建查询

已审核的资源日志

如需查看“已审核的资源”日志,请执行以下操作:

  1. 前往 Google Cloud 日志浏览器
  2. 点击所有资源下拉菜单。
  3. 依次点击已审核的资源Cloud TPU
  4. 选择您感兴趣的 Cloud TPU API。
  5. 点击应用。日志会显示在查询结果中。

点击任意日志条目将其展开。每个日志条目都包含多个字段,包括:

  • logName:日志的名称
  • protoPayload -> @type:日志的类型
  • protoPayload -> resourceName:Cloud TPU 的名称
  • protoPayload -> methodName:所调用方法的名称(仅限审核日志)
  • protoPayload -> request -> @type:请求类型
  • protoPayload -> request -> node:Cloud TPU 节点的详细信息
  • protoPayload -> request -> node_id:TPU 的名称
  • severity:日志的严重级别

TPU 工作器日志

如需查看 TPU 工作器日志,请执行以下操作:

  1. 前往 Google Cloud 日志浏览器
  2. 点击所有资源下拉菜单。
  3. 点击 TPU 工作器
  4. 选择区域。
  5. 选择您感兴趣的 Cloud TPU。
  6. 点击应用。日志会显示在查询结果中。

点击任意日志条目将其展开。每个日志条目都有一个名为 jsonPayload 的字段。展开 jsonPayload 以查看多个字段,包括:

  • accelerator_type:加速器类型
  • consumer_project:Cloud TPU 所在的项目
  • evententry_timestamp:日志生成的时间
  • system_available_memory_GiB:Cloud TPU 工作器上的可用内存(0 ~ 350 GiB)

创建基于日志的指标

本部分介绍如何创建用于设置监控信息中心和提醒的基于日志的指标。如需了解如何以编程方式创建基于日志的指标,请参阅使用 Cloud Logging REST API 以编程方式创建基于日志的指标

以下示例使用 system_available_memory_GiB 子字段来演示如何创建用于监控 Cloud TPU 工作器可用内存的基于日志的指标。

  1. 前往 Google Cloud 日志浏览器
  2. 在查询框中,输入以下查询以提取为主要 Cloud TPU 工作器定义了 system_available_memory_GiB 的所有日志条目:

    resource.type=tpu_worker
    resource.labels.project_id=your-project
    resource.labels.zone=your-tpu-zone
    resource.labels.node_id=your-tpu-name
    resource.labels.worker_id=0
    logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor
    jsonPayload.system_available_memory_GiB:*
  3. 点击创建指标以显示指标编辑器

  4. 指标类型下,选择分布

  5. 为指标输入名称、可选说明和衡量单位。在此示例中,请在名称说明字段中分别输入“matrix_unit_utilization_percent”和“MXU utilization”。过滤条件会预先填充您在 Logs Explorer 中输入的脚本。

  6. 点击创建指标

  7. 点击在 Metrics Explorer 中查看,查看新指标。您的指标可能需要几分钟时间才会显示。

使用 Cloud Logging REST API 创建基于日志的指标

您还可以通过 Cloud Logging API 创建基于日志的指标。如需了解详情,请参阅创建分布指标

使用基于日志的指标创建信息中心和提醒

信息中心有助于直观显示指标(预计会延迟大约 2 分钟);提醒有助于您在出现错误时收到通知。如需了解详情,请参阅以下主题:

创建信息中心

如需在 Cloud Monitoring 中为 Tensorcore 空闲时长指标创建信息中心,请执行以下操作:

  1. 前往 Monitoring 控制台
  2. 在导航窗格中,点击信息中心
  3. 依次点击创建信息中心添加微件
  4. 选择要添加的图表类型。在此示例中,请选择折线图
  5. 为该微件输入标题。
  6. 点击选择指标下拉菜单,然后在过滤条件字段中输入“Tensorcore 空闲时长”。
  7. 在指标列表中,依次选择 TPU Worker -> Tpu -> Tensorcore 空闲时长
  8. 如需过滤信息中心内容,请点击过滤下拉菜单。
  9. 资源标签下,选择 project_id
  10. 选择一个比较条件,然后在字段中输入一个值。
  11. 点击应用