Cloud TPU 監控和記錄資訊主頁
Cloud TPU 監控和偵錯資訊主頁存放區包含監控及偵錯在 TPU VM 上執行的工作流程所需的所有基礎架構和邏輯。這項功能需要 Terraform,這是一項開放原始碼工具,可使用設定檔定義及管理基礎架構 Google Cloud。
Monitoring 資訊主頁
監控資訊主頁會顯示下列 Cloud TPU 指標:
- TPU 工作站的 CPU 使用率:
cpu/utilization - TPU VM 的記憶體用量:
memory/usage - Pod 透過網路接收的網路位元組數:
network/received_bytes_count - Pod 透過網路傳送的網路位元組數:
network/sent_bytes_count - TPU 晶片的 TensorCore 閒置時間:
tpu/tensorcore/idle_duration
Cloud Monitoring 會自動產生指標資料。如要查看監控資訊主頁,請前往 Google Cloud 控制台,依序選取「Monitoring」(監控) 和「Dashboards」(資訊主頁)。在資訊主頁清單中選取「GCE - TPU Monitoring Dashboard」(GCE - TPU 監控資訊主頁)。Cloud TPU 監控資訊主頁由多個窗格組成,每個窗格都會顯示指標資料。資訊主頁會為每個 Cloud TPU 指標顯示目前的指標值、平均值和最大值 (分別顯示在不同窗格中)。您可透過平均值和最大值窗格找出離群的 TPU VM,以供進一步調查。
您也可以在 Cloud Monitoring Google Cloud 控制台使用 Metrics Explorer 查看 TPU 指標。如要進一步瞭解 TPU 指標,請參閱「TPU 指標」。
記錄資訊主頁
記錄資訊主頁會顯示兩個部分:
- 記錄指標:顯示為每個 TPU VM 工作站收集的堆疊追蹤項目數。
- 「記錄」面板:顯示所有堆疊追蹤項目,並提供嚴重性、時間戳記和項目摘要的資料欄。您可以依字串或 TPU 工作站標籤 (例如
node_id、worker_id) 篩選這個記錄面板。舉例來說,新增resource.labels.node_id:"testing"篩選器會顯示為 ID 設為「testing」的 TPU VM 工作站收集的所有追蹤項目。
Cloud Logging 會收集 Google Cloud 服務、第三方服務、ML 架構和程式碼產生的記錄項目。您可以安裝 cloud-tpu-diagnostics PyPi 套件,在發生錯誤或例外狀況時,或工作負載沒有回應時,寫入 Python 堆疊追蹤。詳情請參閱「偵錯 Cloud TPU VM」。
如要查看記錄資訊主頁,請前往 Google Cloud 控制台,依序選取「Monitoring」(監控)和「Dashboards」(資訊主頁)。在資訊主頁清單中選取「GCE - TPU Logging Dashboard」。
設定指標和記錄資訊主頁
請按照下列操作說明設定指標和記錄資訊主頁。
複製資訊主頁存放區
您可以直接從 Cloud TPU Monitoring and Debugging GitHub 存放區複製存放區,也可以從指令列複製:
git clone https://github.com/google/cloud-tpu-monitoring-debugging.git
安裝 Terraform
- 在本機電腦上安裝 Terraform。
- 執行
terraform init來新增必要的外掛程式,並建立.terraform目錄。 - 執行
terraform init -upgrade安裝所有可用的更新。
設定監控和記錄的權限
您必須具備 Monitoring 管理員、Monitoring 資訊主頁設定編輯者和 Logging 管理員角色,才能將監控資源部署至 Google Cloud 專案。如要進一步瞭解監控角色,請參閱「授予 Cloud Monitoring 存取權」。
建立 Cloud Storage bucket
建立 Cloud Storage bucket 來儲存 Terraform 狀態檔案。您也可以使用現有的 Cloud Storage bucket。使用 Cloud Storage 值區可確保多位使用者能同時執行 Terraform,並存取相同的基礎架構。
在 Cloud Shell 中,建立 Cloud Storage 值區:
gcloud storage buckets create gs://${GCS_BUCKET_NAME}啟用物件版本管理功能,以保留部署的記錄。啟用這項功能會增加儲存空間成本,您可以設定物件生命週期管理將舊的狀態版本刪除,藉此降低相關費用的支出。
gcloud storage buckets update gs://${GCS_BUCKET_NAME} --versioning
初始化 Terraform
在存放區的 gcp_resources/gce 目錄中執行 terraform init。系統會提示您輸入 Cloud Storage bucket 名稱,以儲存 Terraform 狀態檔案。
部署監控和記錄資訊主頁
在 gcp_resources/gce 目錄中執行 terraform apply,在 Google Cloud 專案中部署監控和記錄資訊主頁。指令會提示您提供下列變數的值:
var.monitoring_dashboard_configvar.project_namevar.stack_trace_bucket_config
如要只部署監控資訊主頁,請在 gcp_resources/gce/dashboard/monitoring_dashboard 目錄中執行 terraform init 和 terraform apply。同樣地,如要只部署記錄資訊主頁,請在 gcp_resources/gce/dashboard/logging_dashboard 目錄中執行這些指令。
設定範例
執行 terraform apply 時,Terraform 會提示您輸入部分設定變數值。本節提供一些可用的設定範例。每個範例都會顯示 terraform apply 指令的輸出內容,以及以粗體字標示的各項設定變數建議值。輸入內容必須是 JSON 格式,並以大括號「{}」括住。
範例 1
這個範例指定了 Google Cloud 專案名稱,其餘設定則使用預設值。
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": <the number of outliers to show on dashboard, default to 10 if not set>
}
Enter {} to set default configuration for monitoring dashboard.
Enter a value: {}
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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {}
範例 2
這個範例會將資訊主頁設定為顯示 5 個離群 TPU VM。
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: {"outlier_count":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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {}
範例 3
這項設定會建立資訊主頁,顯示 10 個離群 TPU VM,並使用「test」做為資訊主頁產生的節點名稱前置字串:
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"}
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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {}
範例 4
這項設定會建立資訊主頁,顯示 5 個離群 VM,並使用「test」做為資訊主頁產生的節點名稱前置字串。
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}
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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {}
範例 5
這個範例會設定 Cloud Storage bucket,用於儲存堆疊追蹤記錄。堆疊追蹤記錄的預設保留政策為 30 天。
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: {}
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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {"bucket_name":"stack_trace_log_bucket"}
範例 6
這個範例會設定 Cloud Storage bucket,保留期限為 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: {}
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": <number of days to retain stack traces, default to 30 days if not set>
}
Enter {} to not create separate bucket for stack traces.
Enter a value: {"bucket_name":"stack_trace_log_bucket", "retention_days":20}