Cloud TPU 监控和日志记录信息中心

Cloud TPU 监控和调试信息中心 包含监控和管理容器所需的全部基础架构和逻辑 调试 TPU 虚拟机上运行的工作流。它需要用到Terraform 一款使用配置文件定义和管理 Google Cloud 的开源工具, 基础架构

监控信息中心

监控信息中心会显示以下 Cloud TPU 指标:

  • TPU 工作器的 CPU 利用率:cpu/utilization
  • TPU 虚拟机的内存用量:memory/usage
  • Pod 通过网络接收的网络字节数:network/received_bytes_count
  • Pod 通过网络发送的网络字节数:network/sent_bytes_count
  • TPU 芯片的 TensorCore 空闲时长:tpu/tensorcore/idle_duration

Cloud Monitoring 会自动生成指标数据。要查看监控指标,请执行以下操作: 信息中心,前往 Google Cloud 控制台,选择 Monitoring,然后 信息中心。在 信息中心列表。Cloud TPU 监控信息中心由 窗格的数量,每个窗格显示指标数据。对于每个 Cloud TPU 指标 信息中心显示当前指标值、平均值和最大值 分别显示在一个单独的窗格中通过平均值和最大值窗格,您可以识别离群值 TPU 虚拟机以进行进一步调查。

您还可以使用 Cloud Monitoring 中的 Metrics Explorer 查看 TPU 指标 Google Cloud 控制台。如需了解详情,请参阅监控 Cloud TPU 虚拟机

Logging 信息中心

日志记录信息中心显示两个部分:

  1. 日志指标:显示针对每个日志收集的堆栈轨迹条目数 TPU 虚拟机工作器。
  2. 日志面板:显示所有堆栈轨迹条目,以及严重性列、 时间戳和条目摘要。您可以按 字符串或 TPU 工作器标签(如 node_idworker_id)。例如: 添加过滤条件 resource.labels.node_id:"testing" 会显示所有跟踪记录 针对 ID 设置为“testing”的 TPU 虚拟机工作器收集的条目。

Cloud Logging 收集 Google Cloud 服务生成的日志条目, 机器学习框架和您的代码。您可以安装 cloud-tpu-diagnostics PyPi 软件包用于在发生故障或异常时,或 工作负载无响应如需了解详情,请参阅 调试 Cloud TPU 虚拟机

如需查看日志记录信息中心,请前往 Google Cloud 控制台,选择 Monitoring。 然后点击信息中心。在以下位置选择 GCE - TPU Logging Dashboard 信息中心列表。

配置指标和日志记录信息中心

请按照以下说明配置指标和日志记录信息中心。

克隆信息中心代码库

您可以直接从 Cloud TPU 监控和调试 GitHub 代码库克隆代码库。 也可以在命令行中运行以下命令:

git clone https://github.com/google/cloud-tpu-monitoring-debugging.git

安装 Terraform

  1. 安装 Terraform 本地机器上的路径
  2. 运行 terraform init 以添加必要的插件并创建 .terraform 目录。
  3. 运行 terraform init –upgrade 以安装所有可用更新。

配置监控和日志记录权限

Monitoring Admin、Monitoring 信息中心配置编辑器和 Logging Admin 角色才能将监控资源部署到 Google Cloud 项目。 如需详细了解 Monitoring 角色,请参阅授予对 Cloud Monitoring 的访问权限

创建 Cloud Storage 存储桶

创建一个 Cloud Storage 存储桶来存储 Terraform 状态文件。您还可以 使用现有的 Cloud Storage 存储桶。使用 Cloud Storage 存储桶可以确保 多个用户可以同时运行 Terraform, 基础架构

  1. 在 Cloud Shell 中,创建 Cloud Storage 存储桶:

    gcloud storage buckets create gs://${GCS_BUCKET_NAME}
    
  2. 启用对象版本控制以保留部署历史记录。正在启用 对象版本控制会增加存储费用,您可以通过以下方式缓解这一问题: 配置对象生命周期管理以删除旧状态版本。

    gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
    

初始化 Terraform

在代码库的 gcp_resources/gce 目录中运行 terraform init。 该命令提示您输入要存储的 Cloud Storage 存储桶的名称 Terraform 状态文件。

部署监控和日志记录信息中心

gcp_resources/gce 目录内运行 terraform apply,以部署 Google Cloud 项目中的 Monitoring 和 Logging 信息中心。命令 提示您为以下变量提供值:

  • var.monitoring_dashboard_config
  • var.project_name
  • var.stack_trace_bucket_config

如果您只想部署监控信息中心,请运行 terraform init gcp_resources/gce/dashboard/monitoring_dashboard内的terraform apply 目录。同样,在 gcp_resources/gce/dashboard/logging_dashboard 目录,以便仅部署 Logging 信息中心。

配置示例

当您运行 terraform apply 时,Terraform 会提示您进行一些配置 变量值。本部分提供了一些您可以使用的示例配置。 每个示例还显示了 terraform apply 命令显示的输出 建议的值(以粗体显示)。输入 必须采用用大括号(“{}”)括起来的 JSON 格式。

示例 1

此示例指定了 Google Cloud 项目名称并使用默认值 完成其余配置

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;the number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

示例 2

此示例将信息中心配置为显示 5 个离群 TPU 虚拟机。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &lt;number of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"outlier_count":5}

示例 3

此配置会创建一个信息中心,其中显示了 10 个离群 TPU 虚拟机, “test”作为信息中心生成的节点名称的前缀:

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
      "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": &ltnumber of outliers to show on dashboard, default to 10 if not set&gt;
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test"}

示例 4

此配置会创建一个使用“test”显示 5 个离群虚拟机的信息中心为 信息中心生成的节点名称的前缀。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {"node_prefix":"test", "outlier_count":5}

示例 5

本示例将配置一个 Cloud Storage 存储桶来存储堆栈轨迹。通过 堆栈轨迹采用默认的 30 天保留政策。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket"}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}

示例 6

此示例将 Cloud Storage 存储桶的保留期限配置为 20 天。

var.project_name
  Name of gcp project

  Enter a value: <gcp_project_name>

var.stack_trace_bucket_config
    Configuration to create a log bucket to store stack traces:
    {
      "bucket_name": "name of log bucket to create",
      "retention_days": &lt;number of days to retain stack traces, default to 30 days if not set&gt;
    }
    Enter {} to not create separate bucket for stack traces.

  Enter a value: {"bucket_name":"stack_trace_log_bucket", "retention_days":20}

var.monitoring_dashboard_config
    Configuration for monitoring dashboard:
    {
    "node_prefix": "prefix used to generate the node name in multislice node provision, default to empty string",
      "outlier_count": "number of outliers to show on dashboard, default to 10 if not set"
    }
    Enter {} to set default configuration for monitoring dashboard.

  Enter a value: {}