监控 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 CloudMonitoring 有一些基本了解。您必须先创建 Compute Engine 虚拟机和 Cloud TPU 资源,然后才能开始生成和使用 Google Cloud Monitoring。如需了解详情,请参阅 Cloud TPU 快速入门。
指标
Google Cloud 指标由 Compute Engine 虚拟机和 Cloud TPU 运行时自动生成。以下指标由 Cloud TPU 虚拟机生成:
memory/usagenetwork/received_bytes_countnetwork/sent_bytes_countcpu/utilizationtpu/tensorcore/idle_durationaccelerator/tensorcore_utilizationaccelerator/memory_bandwidth_utilizationaccelerator/duty_cycleaccelerator/memory_totalaccelerator/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 虚拟机上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本和 TensorFlow 2.14.0 及更高版本支持加速器工作周期指标。
加速器内存总量
系统会针对 GCE TPU Worker 资源生成 accelerator/memory_total 指标,用于跟踪分配的加速器内存总量(以字节为单位)。当机器学习工作负载在 TPU 虚拟机上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本和 TensorFlow 2.14.0 及更高版本支持加速器内存总量指标。
使用的加速器内存
系统会针对 GCE TPU Worker 资源生成 accelerator/memory_used 指标,用于跟踪使用的加速器内存总量(以字节为单位)。当机器学习工作负载在 TPU 虚拟机上运行时,系统会报告此指标。JAX 0.4.14 及更高版本、PyTorch 2.1 及更高版本和 TensorFlow 2.14.0 及更高版本支持使用的加速器内存指标。
查看指标
您可以使用 Google Cloud 控制台中的 Metrics Explorer 查看指标。
在 Metrics Explorer 中,点击选择指标,然后根据您感兴趣的指标搜索 TPU Worker 或 GCE TPU Worker。选择资源以显示该资源的所有可用指标。
如果启用活跃,系统仅会列出过去 25 小时内包含时序数据的指标。停用活跃可列出所有指标。
创建提醒
您可以创建提醒政策,以便在满足某个条件时告知 Cloud Monitoring 发送提醒。
本部分中的步骤展示了如何为 TensorCore 空闲时长指标添加提醒政策的示例。只要此指标超过 24 小时,Cloud Monitoring 就会向注册的邮箱发送邮件。
- 前往 Monitoring 控制台。
- 在导航窗格中,点击提醒。
- 点击修改通知渠道。
- 在邮件下方,点击新增。输入邮箱和显示名称,然后点击保存。
- 在“提醒”页面上,点击创建政策。
- 点击选择指标,然后选择 Tensorcore 空闲时长,再点击应用。
- 点击下一步,然后点击阈值。
- 在提醒触发器部分,选择任何时序违反。
- 在阈值位置部分,选择高于阈值。
- 在阈值部分,输入
86400000。 - 点击下一步。
- 在通知渠道下,选择您的邮件通知渠道,然后点击确定。
- 为提醒政策输入名称。
- 点击下一步,然后点击创建政策。
当 TensorCore 空闲时长超过 24 小时时,系统会向您指定的邮箱发送邮件。
日志记录
日志条目由 Google Cloud 服务、第三方服务、机器学习框架或您的代码编写。您可以使用 Logs Explorer 或 Logs API 查看日志。如需详细了解 Google Cloud 日志记录,请参阅 Google Cloud Logging。
TPU 工作进程日志包含有关特定可用区中的特定 Cloud TPU 工作进程的信息,例如 Cloud TPU 工作进程上可用的内存量 (system_available_memory_GiB)。
已审核的资源日志包含有关特定 Cloud TPU API 何时被调用以及谁发出了调用的信息。例如,您可以找到有关对 CreateNode、UpdateNode 和 DeleteNode API 的调用的信息。
机器学习框架可以生成标准输出和标准错误的日志。这些日志由环境变量控制,并由训练脚本读取。
您的代码可以将日志写入 Google Cloud Logging。如需了解详情,请参阅写入标准日志和写入结构化日志。
串行端口日志记录
Cloud TPU 依赖于串行端口日志记录来进行问题排查、监控和调试。默认情况下,串行端口日志记录处于启用状态。 如果未启用串行端口日志记录,TPU 虚拟机的创建过程会失败,并生成以下错误消息。
"Cloud TPU received a bad request. Constraint
`constraints/compute.disableSerialPortLogging` violated. Create TPUs with
serial port logging enabled or remove the Organization Policy Constraint."
此消息表明违反了限制 constraints/compute.disableSerialPortLogging。
为防止出现此错误,您需要确保您的 TPU 项目允许串行端口输出日志记录。最佳实践是在项目级层替换组织政策。
如需详细了解如何启用串行端口日志记录功能,请参阅启用和停用串行端口输出日志记录功能。
查询 Google Cloud 日志
在 Google Cloud 控制台中查看日志时,相应页面会执行默认查询。您可以通过选择 Show query 切换开关来查看查询。您可以修改默认查询或创建新查询。如需了解详情,请参阅在 Logs Explorer 中构建查询。
已审核的资源日志
如需查看已审核的资源日志,请执行以下操作:
- 前往 Google Cloud Logs Explorer。
- 点击所有资源下拉列表。
- 点击已审核的资源,然后点击 Cloud TPU。
- 选择您感兴趣的 Cloud TPU API。
- 点击应用。日志会显示在查询结果中。
点击任意日志条目将其展开。每个日志条目都包含多个字段,包括:
- 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 工作器日志,请执行以下操作:
- 前往 Google Cloud Logs Explorer。
- 点击所有资源下拉列表。
- 点击 TPU 工作器。
- 选择一个可用区。
- 选择您感兴趣的 Cloud TPU。
- 点击应用。日志会显示在查询结果中。
点击任意日志条目将其展开。每个日志条目都有一个名为 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 工作器可用内存的基于日志的指标。
- 前往 Google Cloud Logs Explorer。
在查询框中,输入以下查询,以提取为主要 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:*
点击创建指标以显示指标编辑器。
在指标类型下,选择分布。
为指标输入名称、可选说明和计量单位。在此示例中,分别在名称和说明字段中输入“matrix_unit_utilization_percent”和“MXU 利用率”。过滤条件中会预先填充您在 Logs Explorer 中输入的脚本。
点击创建指标。
点击在 Metrics Explorer 中查看以查看新指标。系统可能需要几分钟的时间才会显示指标。
使用 Cloud Logging REST API 创建基于日志的指标
您还可以通过 Cloud Logging API 创建基于日志的指标。如需了解详情,请参阅创建分布指标。
使用基于日志的指标创建信息中心和提醒
信息中心可用于直观显示指标(预计会延迟大约 2 分钟);提醒有助于在出现错误时发送通知。如需了解详情,请参阅以下主题:
创建信息中心
如需在 Cloud Monitoring 中为 Tensorcore 空闲时长指标创建信息中心,请执行以下操作:
- 前往 Monitoring 控制台。
- 在导航窗格中,点击信息中心。
- 点击创建信息中心,然后点击添加 widget。
- 选择要添加的图表类型。在此示例中,选择线条。
- 输入 widget 的标题。
- 点击选择指标下拉菜单,然后在过滤条件字段中输入“Tensorcore 空闲时长”。
- 在指标列表中,选择 TPU 工作器 -> Tpu -> Tensorcore 空闲时长。
- 如需过滤信息中心内容,请点击过滤条件下拉菜单。
- 在资源标签下,选择 project_id。
- 选择比较条件,然后在值字段中输入一个值。
- 点击应用。