监控 Cloud TPU 节点

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

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

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

  • 查看 Cloud TPU 指标
  • 设置 Cloud TPU 指标提醒政策
  • 查询 Cloud TPU 日志
  • 创建基于日志的指标,用于设置提醒和直观显示信息中心。

前提条件

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

指标

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

  • cpu/utilization
  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • tpu/mxu/utilization
  • tpu/tensorcore/idle_duration

CPU 利用率

cpu/utilization 指标用于跟踪 Cloud TPU 工作器的当前 CPU 利用率(以百分比表示)。值通常介于 0.0 和 100.0 之间,但可以超过 100.0。每 60 秒采样一次。从生成值到显示该值,最长可能需要 180 秒。

内存用量

memory/usage 指标用于跟踪 Cloud TPU 虚拟机当前使用的内存(以字节为单位)。系统每 60 秒对此指标进行一次采样。从生成值到显示该值,最长可能需要 180 秒。

网络接收的字节数

network/received_bytes_count 指标跟踪 Cloud TPU 虚拟机在某个时间点通过网络收到的累计数据的字节数。从生成值到显示该值,最长可能需要 180 秒。

网络发送的字节数

network/sent_bytes_count 指标跟踪某个时间点 Cloud TPU 虚拟机通过网络发送的累计字节数。从生成值到显示该值,最长可能需要 180 秒。

TensorCore 空闲时长

tpu/tensorcore/idle_duration 指标用于跟踪每个 TPU 芯片的 TensorCore 处于空闲状态的秒数。该指标适用于所有正在使用的 TPU 上的每个芯片。如果 TensorCore 正在使用中,空闲时长值将重置为零。当 TensorCore 不再使用时,空闲时长值开始增加。

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

图片

MXU 利用率

tpu/mxu/utilization 指标跟踪 TPU 工作器的当前 MXU 利用率(以百分比表示)。值通常为 0.0 到 100.0 之间的数字。每 60 秒采样一次。采样后,数据在最长 180 秒的时间内不会显示。

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

查看指标

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

在 Metrics Explorer 中,点击选择指标,然后搜索 Cloud TPU Worker。如果开启仅显示活跃的资源和指标,则只会显示当前生成的指标。点击 Cloud TPU Worker 以显示可用的指标。

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

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

  1. 请按如下格式填写名称:projects/{project-name}
  2. 请求正文部分添加查询。以下示例查询用于检索指定可用区过去 5 分钟的空闲时长指标 fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m"
  3. 点击执行以检索 HTTP POST 消息的结果

Monitoring 查询语言参考文档文档详细介绍了如何自定义此查询。

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

创建提醒

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

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

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

日志记录

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

在日志浏览器中,您可以选择资源类型:

  • Cloud TPU 工作器 -> 可用区 -> 节点 ID
  • 已审核的资源 -> Cloud TPU -> API(google.cloud.tpu.v1.Tpu.CreateNodegoogle.cloud.tpu.v1.Tpu.DeleteNodegoogle.cloud.tpu.v1.Tpu.UpdateNode

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

已审核的资源日志包含有关特定 Cloud TPU API 的调用时间和调用者的信息。例如 CreateNodeUpdateNodeDeleteNode

机器学习框架可以生成到 stdoutstderr 的日志。这些日志由环境变量控制并由训练脚本读取。

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

查看 Cloud TPU 日志

  1. 转到 Google Cloud 日志查看器
  2. 点击资源下拉菜单
  3. 点击 Cloud TPU Worker
  4. 选择区域
  5. 选择您感兴趣的 Cloud TPU
  6. 点击应用。日志显示在查询结果中

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

  1. 转到 Google Cloud 日志查看器
  2. 点击资源下拉菜单
  3. 点击已审核的资源,然后点击 Cloud TPU
  4. 选择您感兴趣的 Cloud TPU API
  5. 点击应用。日志显示在查询结果中
  6. 选择以 google.cloud.tpu.v1.Tpu 开头的 API

查询 Google Cloud 日志

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

了解“已审核资源”日志的日志输出

点击任意日志条目将其展开,然后您会看到一个名为 protoPayload 的字段。展开 protoPayload,您会看到多个子字段:

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

了解 Cloud TPU 工作器日志的日志输出

点击任意日志条目将其展开,然后您会看到一个名为 jsonPayload 的字段。展开 jsonPayload,您会看到多个子字段:

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

创建基于日志的指标

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

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

  1. 导航到 Logs Explorer
  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 usage”

  6. 此过滤条件会预先填充您在日志浏览器中输入的脚本

  7. 点击创建指标

  8. 点击浏览指标以查看新指标。指标可能要过几分钟

使用 Cloud Logging REST API 以编程方式创建基于日志的指标

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

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

信息中心非常适合直观呈现指标(预计延迟大约 2 分钟);提醒有助于在出现错误时发送通知。如需了解详情,请参阅管理自定义信息中心创建基于指标的提醒政策

创建信息中心

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

  1. 转到 Monitoring 控制台
  2. 在导航窗格中,点击信息中心
  3. 点击创建信息中心,然后点击添加图表
  4. 选择要添加的图表类型。在本示例中,请选择直线
  5. 输入信息中心的标题
  6. 点击 Resource & Metric(资源和指标)下方的按钮
  7. 向下滚动资源/指标列表,然后依次选择 Cloud TPU 工作器 -> Tpu -> Tensorcore 空闲时长
  8. 点击应用
  9. 要过滤信息中心内容,请点击创建信息中心过滤条件
  10. 标签字段中,将 project_id 设置为您的项目
  11. 点击添加,并将可用区设置为您创建 TPU 的可用区
  12. node_id 添加另一个过滤条件并指定 Cloud TPU 名称