监控 Cloud TPU 虚拟机
本指南介绍如何使用 Google Cloud Monitoring 来监控您的 Cloud TPU 虚拟机。Google 云端监控 自动收集指标 和日志 及其主机 Compute Engine这些数据可用于监控 Cloud TPU 和 Compute Engine 的基础。
通过指标,您可以跟踪一段时间内的数值(例如 CPU) 利用率、网络用量或 TensorCore 空闲时长。记录捕获事件的时间 特定时间点日志条目由您自己的代码 Google Cloud 写入 服务、第三方应用和 Google Cloud 基础架构。 您还可以创建一个 基于日志的指标。您还可以根据指标值或日志条目设置提醒政策。
本指南介绍了 Google 云端监控,并向您展示了如何执行以下操作:
前提条件
本文档假定您具备 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
从生成指标值到 指标。
如需查看 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
指标
并跟踪
。
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/tensorcore/idle_duration
指标
具有一个工作器的 TPU 虚拟机。每个 worker 有四个条状标签。在此示例中,所有四个条状标签的 tpu/tensorcore/idle_duration
值相同,因此图表会相互叠加。
TensorCore 利用率
系统会针对 GCE TPU
Worker
资源生成 accelerator/tensorcore_utilization
指标,并跟踪
。该指标的计算方法是 TensorCore 的数量除以
在一个采样周期内执行的操作(按操作数上限)
可在同一采样周期内执行的多项指标值越大表示效果越好
利用率。v4 及更高版本的 TPU 支持 TensorCore 利用率指标
新生代。
内存带宽利用率
accelerator/memory_bandwidth_utilization
指标是针对
GCE TPU Worker
资源,并跟踪加速器的当前百分比
使用的内存带宽。该指标的计算方法是
一个采样周期内使用的内存带宽(由支持的最大带宽)
所有指标。值越大,利用率越高。记忆
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 上运行时,系统会报告此指标
虚拟机。JAX 支持 Accelerator Memory Total 指标
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 和
。
查看指标
您可以使用 Metrics Explorer 查看指标 Google Cloud 控制台中。
在 Metrics Explorer 中,点击选择指标,然后搜索 TPU Worker
或 GCE TPU Worker
,具体取决于您感兴趣的指标。
选择一项资源以显示该资源的所有可用指标。
如果已启用活跃,则系统仅会显示过去 25 天内包含时序数据的指标
。停用有效可列出所有指标。
您还可以使用 curl
HTTP 调用访问指标。
使用 projects.timeSeries.query 文档中的试试看!按钮 检索指定时间范围内的指标值。
- 按以下格式填写名称:
projects/{project-name}
。 将查询添加到请求正文部分。以下是一个示例查询 用于检索指定可用区在最后一个 五分钟。
fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
点击执行以进行调用,并查看 HTTP POST 消息的结果。
Monitoring 查询语言参考文档 文档详细介绍了如何自定义此查询。
创建提醒
您可以创建提醒政策,以便告知 Cloud Monitoring 在满足条件时发送提醒。
本部分中的步骤举例说明了如何为 TensorCore 空闲时长指标。只要此指标超过 24 小时 Cloud Monitoring 会向注册的电子邮件地址发送一封电子邮件。
- 转到 Monitoring 控制台。
- 在导航窗格中,点击提醒。
- 点击修改通知渠道。
- 在电子邮件下,点击新增。输入电子邮件地址、显示名称 然后点击保存。
- 在“提醒”页面上,点击创建政策。
- 点击选择指标,然后选择 TensorCore 空闲时长,并点击 应用。
- 点击 Next,然后点击 Threshold。
- 在提醒触发器部分,选择任何违反时序的情况。
- 在阈值位置部分,选择高于阈值。
- 对于阈值,输入
86400000
。 - 点击下一步。
- 在通知渠道下,选择您的电子邮件通知渠道并 点击确定。
- 输入提醒政策的名称。
- 点击下一步,然后点击创建政策。
当 TensorCore 空闲时长超过 24 小时时,系统会向您指定的电子邮件地址发送电子邮件。
日志记录
日志条目由 Google Cloud 服务、第三方服务、机器学习生成 框架或代码您可以使用日志浏览器或日志查看日志 API。如需详细了解 Google Cloud Logging,请参阅 Google Cloud Logging。
TPU 工作器日志包含有关特定
特定可用区中的 Cloud TPU 工作器,例如
适用于 Cloud TPU 工作器 (system_available_memory_GiB
)。
已审核的资源日志包含有关特定 Cloud TPU API 的调用时间以及调用者的信息。例如,您可以
CreateNode
、UpdateNode
和 DeleteNode
API 的调用。
机器学习框架可以生成标准输出和标准错误的日志。这些 日志由环境变量控制,并由您的训练读取 脚本。
您的代码可以将日志写入 Google Cloud Logging。如需更多信息 请参阅写入标准日志和写入 结构化日志
查询 Google Cloud 日志
当您在 Google Cloud 控制台中查看日志时,该页面会执行默认查询。
您可以选择 Show query
切换开关来查看查询。您可以修改默认查询或创建新的查询。如需了解详情,请参阅
在日志浏览器中构建查询。
审核的资源日志
如需查看“已审核的资源”日志,请执行以下操作:
- 转到 Google Cloud Logs Explorer。
- 点击所有资源下拉菜单。
- 点击已审核的资源,然后点击 Cloud TPU。
- 选择您感兴趣的 Cloud TPU API。
- 点击应用。日志会显示在查询结果中。
点击任意日志条目以将其展开。每个日志条目都包含多个字段,包括:
- logName:日志的名称
- proto 载荷 ->@type:日志类型
- proto 载荷 ->resourceName:您的 Cloud TPU 的名称
- proto 载荷 ->methodName:调用的方法的名称(仅限审核日志)
- proto 载荷 ->请求 ->@type:请求类型
- proto 载荷 ->请求 ->节点:有关 Cloud TPU 节点的详细信息
- proto 载荷 ->请求 ->node_id:TPU 的名称
- severity:日志的严重性
TPU 工作器日志
如需查看 TPU 工作器日志,请执行以下操作:
- 转到 Google Cloud Logs Explorer。
- 点击所有资源下拉菜单。
- 点击 TPU Worker。
- 选择一个可用区。
- 选择所需的 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 日志浏览器。
在查询框中输入以下查询,以提取所有 定义了 system_available_memory_GiB 的日志条目, 主 Cloud TPU 工作器:
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 利用率”在名称中 Description 字段。过滤器会使用您在 Logs Explorer。
点击创建指标。
点击在 Metrics Explorer 中查看,查看您的新指标。这可能需要几分钟的时间 然后再显示指标
使用 Cloud Logging REST API 创建基于日志的指标
您还可以通过 Cloud Logging API 创建基于日志的指标。 如需了解详情,请参阅创建分布指标。
使用基于日志的指标创建信息中心和提醒
信息中心对于直观呈现指标非常有用(预计大约会延迟 2 分钟);提醒 有助于在发生错误时发送通知。如需了解详情,请参阅以下主题:
创建信息中心
在 Cloud Monitoring 中创建 TensorCore 空闲时长的信息中心 指标:
- 转到 Monitoring 控制台。
- 在导航窗格中,点击信息中心。
- 点击创建信息中心,然后点击添加微件。
- 选择要添加的图表类型。本例中选择直线。
- 输入微件的标题。
- 点击选择指标下拉菜单,然后键入“TensorCore 空闲时长” 。
- 在指标列表中,选择 TPU 工作器 ->Tpu ->TensorCore 空闲时长。
- 如需过滤信息中心内容,请点击过滤条件下拉菜单。
- 在资源标签下,选择 project_id。
- 选择一个比较运算符,然后在值字段中输入一个值。
- 点击应用。