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」。Cloud TPU 監控資訊主頁由多個窗格組成,每個窗格都會顯示指標資料。對於每項 Cloud TPU 指標,資訊主頁都會在個別窗格中顯示目前的指標值、平均值和最大值。您可以在「平均值」和「最大值」窗格中找出離群的 TPU VM,以供進一步調查。

您也可以使用 Cloud Monitoring Google Cloud 控制台中的 Metrics Explorer 查看 TPU 指標。詳情請參閱「監控 Cloud TPU VM」。

記錄資訊主頁

記錄資訊主頁會顯示兩個部分:

  1. 記錄指標:顯示為每個 TPU VM 工作站收集的堆疊追蹤項目數。
  2. 「記錄」面板:顯示所有堆疊追蹤記錄項目,以及嚴重性、時間戳記和項目摘要的資料欄。您可以依字串或 TPU 工作站標籤 (例如 node_idworker_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

  1. 在本機電腦上安裝 Terraform
  2. 執行 terraform init,新增必要的外掛程式並建立 .terraform 目錄。
  3. 執行 terraform init -upgrade 安裝所有可用更新。

設定監控和記錄的權限

如要將監控資源部署至 Google Cloud 專案,您必須具備 Monitoring 管理員、Monitoring 資訊主頁設定編輯者和 Logging 管理員角色。如要進一步瞭解監控角色,請參閱「授予 Cloud Monitoring 存取權」一文。

建立 Cloud Storage 值區

建立 Cloud Storage bucket 來儲存 Terraform 狀態檔案。您也可以使用現有的 Cloud Storage bucket。使用 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 bucket 的名稱,以儲存 Terraform 狀態檔案。

部署監控和記錄資訊主頁

gcp_resources/gce 目錄中執行 terraform apply,即可在 Google Cloud 專案中部署監控和記錄資訊主頁。系統會提示您為下列變數提供值:

  • var.monitoring_dashboard_config
  • var.project_name
  • var.stack_trace_bucket_config
中。

如要只部署監控資訊主頁,請在 gcp_resources/gce/dashboard/monitoring_dashboard 目錄中執行 terraform initterraform 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": &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: {}

範例 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": &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}

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

範例 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": &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"}

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

範例 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": &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: {}

範例 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": &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"}


範例 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": &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}