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 VM 工作器收集的堆栈轨迹条目数。
  2. 日志面板:显示所有堆栈轨迹条目,以及严重性列、 时间戳和条目摘要。您可以按 字符串或 TPU 工作器标签(如 node_idworker_id)。例如,添加过滤条件 resource.labels.node_id:"testing" 会显示为 ID 设为“testing”的 TPU VM 工作器收集的所有轨迹条目。

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

如需查看日志信息中心,请前往 Google Cloud 控制台,依次选择 MonitoringDashboards。在以下位置选择 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 Dashboard Configuration Editor”和“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 个使用“test”作为信息中心生成的节点名称前缀的离群 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": &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

此配置会创建一个信息中心,其中显示了 5 个离群虚拟机,并使用“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": "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

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

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: {}