監控 TPU
本指南說明如何使用 Cloud Monitoring 監控 TPU VM。Cloud Monitoring 會自動收集 TPU 和主機 VM 的指標和記錄。這些資料可用於監控 TPU 和 Compute Engine 的健康狀態。
指標可讓您追蹤一段時間內的數值,例如 CPU 使用率、網路用量或 TensorCore 閒置時間長度。記錄檔會擷取特定時間點的事件,記錄檔項目是由您自己的程式碼、服務、第三方應用程式和基礎架構所寫入。Google Cloud Google Cloud 您也可以建立記錄指標,從記錄項目中的資料產生指標。您也可以根據指標值或記錄項目設定快訊政策。
您也可以使用 Capacity Planner (預覽版) 監控 TPU。您可以使用 Capacity Planner,查看專案、資料夾或機構的 TPU 用量和預測資料。這項資料每 24 小時更新一次,可用於分析用量趨勢,並規劃未來的容量需求。詳情請參閱「容量規劃工具總覽」。
存取 TPU 指標
Compute Engine 會產生兩種類型的 TPU 指標:TPU 執行階段指標和 TPU VM 基礎架構指標。您可以透過下列兩種方式取得指標:
TPU 監控程式庫:使用 TPU 監控程式庫,從 LibTPU SDK 取得 TPU 執行階段指標。這樣一來,應用程式就能從訪客環境內部取得即時遙測資料。詳情請參閱「TPU 監控程式庫」。
AI 遙測資料收集器:透過 AI 遙測資料收集器取得執行階段指標和 VM 基礎架構指標。AI 遙測資料收集器會在 TPU VM 內執行,讓您透過 Cloud Monitoring 或自己的 Prometheus 監控管道存取指標。詳情請參閱「AI 遙測收集器」。
TPU 指標
Google Cloud Cloud TPU 的指標是由 Compute Engine VM 和 Cloud TPU 執行階段自動產生。下表中的指標是由 Compute Engine VM 產生。
這個表格中的「指標類型」字串開頭必須為 compute.googleapis.com/。表格中的項目已省略該前置字串。查詢標籤時,請使用 metric.labels 前置字串,例如 metric.labels.LABEL="VALUE"。
| 指標類型 推出階段 (資源階層層級) 顯示名稱 |
|
|---|---|
| 種類、類型、單位 受監控資源 |
說明 標籤 |
instance/tpu/accelerator/duty_cycle
BETA 版
(專案)
加速器工作週期 |
|
GAUGE、DOUBLE、%
gce_instance |
在取樣期間內,加速器主動處理作業的時間百分比。值介於 [0,100] 之間。
accelerator_id:
加速器的裝置 ID。
|
instance/tpu/accelerator/memory_bandwidth_utilization
BETA 版
(project)
加速器記憶體頻寬使用率 |
|
GAUGE、DOUBLE、%
gce_instance |
目前所用加速器記憶體頻寬的百分比。計算方式為取樣期間內使用的記憶體頻寬,除以相同期間內支援的最大頻寬。
accelerator_id:
加速器的裝置 ID。
|
instance/tpu/accelerator/memory_total
BETA 版
(project)
Accelerator Memory Total |
|
GAUGE、INT64、By
gce_instance |
目前分配的加速器記憶體總量,以位元組為單位。
accelerator_id:
加速器的裝置 ID。
|
instance/tpu/accelerator/memory_used
BETA
(project)
Accelerator Memory Used |
|
GAUGE、INT64、By
gce_instance |
目前使用的加速器記憶體總量,以位元組為單位。
accelerator_id:
加速器的裝置 ID。
|
instance/tpu/accelerator/tensorcore_utilization
BETA
(專案)
加速器 TensorCore 使用率 |
|
GAUGE、DOUBLE、%
gce_instance |
目前的 Tensor Core 使用量百分比。將取樣期間內執行的 Tensorcore 作業數量,除以相同期間內支援的 Tensorcore 作業數量,即可得出這項指標。
accelerator_id:
加速器的裝置 ID。
|
instance/tpu/active_chips
BETA 版
(project)
Active TPU Chips Count |
|
GAUGE、INT64、1
gce_instance |
目前正在使用的晶片數量 (即非閒置狀態)。
accelerator_type:
加速器類型和世代。
reservation_id:
實體機器預留的 ID。
provisioning_model:相關聯的佈建模型。protection_tier:
相關聯的保護模型。
block_id:
託管 VM 的叢集內區塊 ID。
subblock_id:
託管 VM 的子區塊 ID。
is_exr:
(BOOL)
指出晶片是否為延長預訂的一部分。
|
instance/tpu/chip_state
BETA 版
(project)
TPU 晶片狀態計數 |
|
GAUGE、INT64、1
gce_instance |
處於各種狀態 (例如健康、不健康和不明) 的 TPU 晶片數量。
state:晶片狀態。accelerator_type:
加速器類型和世代。
block_id:
託管 VM 的叢集內區塊 ID。
subblock_id:
託管 VM 的子區塊 ID。
reservation_id:
實體機器預留的 ID。
is_exr:
(BOOL)
指出晶片是否為延長預訂的一部分。
|
instance/tpu/infra_health
BETA 版
(project)
TPU 執行個體健康狀態 |
|
GAUGE、INT64、1
gce_instance |
顯示 TPU 執行個體的整體健康狀態。指標標籤可協助您找出 TPU 執行個體健康狀態不佳或異常的原因,主要著重於 TPU 硬體和系統健康狀態。健康狀態變更可能需要幾分鐘才會反映在這項指標中。取樣頻率為每 60 秒一次。取樣完畢後,最多會有 420 秒無法查看資料。
health_status:
TPU 執行個體的整體健康狀態。可能的值:HEALTHY (正常運作)、UNHEALTHY (偵測到重大問題)、DEGRADED (效能受到影響)、UNKNOWN (無法判斷狀態)。
unhealthy_category:
說明 VM 健康狀態不良的原因。只有在指標值為「不健康」時,才會填入這個標籤。
machine_type:
執行個體的機型 (例如 ct6e-standard-4t-tpu)。
machine_id:
託管 VM 的實體電腦 ID。
block_id:
託管 VM 的叢集內區塊 ID。
cluster_id:
託管 VM 的叢集 ID。
reservation_id:
實體機器預留的 ID。
subblock_id:
託管 VM 的子區塊 ID。
|
instance/tpu/runtime/uptime
BETA
(project)
執行階段正常運作時間 |
|
GAUGE、INT64、s
gce_instance |
自機器學習作業初始化執行階段程式庫 (libtpu.so) 後,機器學習執行階段的正常運作時間。在此期間,執行階段程式庫會封鎖 TPU 裝置,供機器學習工作使用。
ml_framework_name:
機器學習架構的名稱。
ml_framework_version:
機器學習框架版本。 |
instance/tpu/scheduled_chips
BETA 版
(project)
預定 TPU 晶片數量 |
|
GAUGE、INT64、1
gce_instance |
目前分配給 VM 的晶片數量,這些 VM 的健康狀態為「良好」,且「未停用」維護作業。
accelerator_type:
加速器類型和世代。
reservation_id:
實體機器預留的 ID。
provisioning_model:相關聯的佈建模型。protection_tier:
相關聯的保護模型。
block_id:
託管 VM 的叢集內區塊 ID。
subblock_id:
託管 VM 的子區塊 ID。
is_exr:
(BOOL)
指出晶片是否為延長預訂的一部分。
|
instance/tpu/utilized_chips
BETA 版
(project)
已使用的 TPU 晶片 |
|
GAUGE、DOUBLE、1
gce_instance |
目前使用的總容量,以有效晶片數表示。這相當於所有作用中晶片的利用率總和 (0.0 至 1.0)。
accelerator_type:
加速器類型和世代。
reservation_id:
實體機器預留的 ID。
provisioning_model:相關聯的佈建模型。protection_tier:
相關聯的保護模型。
block_id:
託管 VM 的叢集內區塊 ID。
subblock_id:
託管 VM 的子區塊 ID。
is_exr:
(BOOL)
指出晶片是否為延長預訂的一部分。
|
quota/tpus_per_tpu_family/exceeded
ALPHA
(project)
每個 TPU 系列的 TPU 數量。配額超出錯誤 |
|
DELTA、INT64、1
compute.googleapis.com/Location |
嘗試次數超出配額指標 compute.googleapis.com/tpus_per_tpu_family 的限制。取樣完畢後,會有多達 150 秒無法查看資料。
limit_name:
限制名稱。
tpu_family:
TPU 系列自訂維度。
|
quota/tpus_per_tpu_family/limit
ALPHA
(project)
每個 TPU 系列的 TPU 數量。配額限制 |
|
GAUGE、INT64、1
compute.googleapis.com/Location |
目前對配額指標 compute.googleapis.com/tpus_per_tpu_family 設有限制。取樣頻率為每 60 秒一次。取樣完畢後,會有多達 150 秒無法查看資料。
limit_name:
限制名稱。
tpu_family:
TPU 系列自訂維度。
|
quota/tpus_per_tpu_family/usage
ALPHA
(project)
每個 TPU 系列的 TPU 數量。配額用量 |
|
GAUGE、INT64、1
compute.googleapis.com/Location |
配額指標 compute.googleapis.com/tpus_per_tpu_family 的目前用量。取樣完畢後,會有多達 150 秒無法查看資料。
limit_name:
限制名稱。
tpu_family:
TPU 系列自訂維度。
|
tpu/multislice/accelerator/device_to_host_transfer_latencies
BETA 版
(專案)
裝置到主機的傳輸延遲 |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
每個資料區塊的裝置到主機傳輸延遲累積分佈。延遲時間的計算起點是發出將資料傳輸至主機的要求,終點是收到資料傳輸完成的確認訊息。
buffer_size:
緩衝區空間。
|
tpu/multislice/accelerator/host_to_device_transfer_latencies
Beta 版
(專案)
主機到裝置的傳輸延遲時間 |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
多重切片流量的每個資料區塊,主機到裝置傳輸延遲的累積分配情形。延遲時間的計算起點是發出將資料傳輸至裝置的要求,終點是收到資料傳輸完成的確認訊息。
buffer_size:
緩衝區空間。
|
tpu/multislice/network/collective_end_to_end_latencies
BETA
(project)
Collective End-to-End Latencies |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
多重切片流量的端對端集體延遲時間累積分佈。延遲時間從發出集合要求開始計算,到收到資料傳輸完成的確認訊息為止。
input_size:集合運算的輸入大小。collective_type:
集體作業類型。
|
tpu/multislice/network/dcn_transfer_latencies
BETA
(project)
DCN Transfer Latencies |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
多重切片流量的網路傳輸延遲累積分佈。延遲時間的計算起點是發出透過 DCN 傳輸資料的要求,終點是收到資料傳輸完成的確認訊息。
buffer_size:
緩衝區空間。type:
類型。
|
tpu/multislice/network/grpc_client_call_latencies
BETA
(project)
gRPC 用戶端呼叫延遲時間 |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
gRPC 程式庫完成 RPC 時,從呼叫端角度來看的網路傳輸延遲累積分佈。
buffer_size:
緩衝區空間。
|
tpu/multislice/network/grpc_server_call_latencies
BETA
(project)
gRPC 伺服器呼叫延遲時間 |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
從傳輸層的角度來看,gRPC 伺服器完成 RPC 的網路傳輸延遲累積分布。
buffer_size:
緩衝區空間。
|
tpu/multislice/network/grpc_tcp_delivery_rates
BETA 版
(project)
gRPC TCP 傳送率 |
|
CUMULATIVE、DISTRIBUTION、Mb/s
gce_instance |
TCP 連線資料傳輸速率的累積分布。每個樣本都是在最近的 TCP ACK 間隔內,特定 TCP 連線的最新平均資料傳輸速率。每 20 秒會從 Linux TCP 核心提取資料傳輸速率樣本,因此可以預期每個 TCP 連線在每 60 秒間隔內會建立大約 3 個樣本。 |
tpu/multislice/network/grpc_tcp_min_round_trip_times
BETA 版
(project)
gRPC TCP 最短往返時間 |
|
CUMULATIVE、DISTRIBUTION、us
gce_instance |
每個 TCP 連線的最低網路傳輸延遲時間累積分布。 |
tpu/multislice/network/grpc_tcp_packets_retransmitted_count
BETA 版
(project)
gRPC TCP 封包重新傳輸次數 |
|
CUMULATIVE、INT64、1
gce_instance |
重新傳輸的封包總數。 |
tpu/multislice/network/grpc_tcp_packets_sent_count
BETA
(project)
gRPC TCP 封包傳送計數 |
|
CUMULATIVE、INT64、1
gce_instance |
TCP 傳送的封包總數。 |
tpu/slice/capacity/available_chips
BETA 版
(專案)
可用 TPU 晶片數量 |
|
GAUGE、INT64、1
compute.googleapis.com/AcceleratorSlice |
目前可供使用且可用的擴展預訂 TPU 晶片數量。取樣頻率為每 60 秒一次。取樣完畢後,會有多達 360 秒無法查看資料。
accelerator_type:
加速器類型和世代。
reservation_id:
實體機器預留的 ID。
block_id:
與切片相關聯的區塊 ID。
subblock_id:
與切片相關聯的子區塊 ID。
provisioning_model:相關聯的佈建模型。protection_tier:
相關聯的保護模型。
|
tpu/slice/capacity/committed_chips
BETA 版
(project)
購買的 TPU 晶片數量 |
|
GAUGE、INT64、1
compute.googleapis.com/AcceleratorSlice |
目前購買的擴充預留 TPU 晶片數量。取樣頻率為每 60 秒一次。取樣完畢後,會有多達 360 秒無法查看資料。
accelerator_type:
加速器類型和世代。
reservation_id:
實體機器預留的 ID。
block_id:
與切片相關聯的區塊 ID。
subblock_id:
與切片相關聯的子區塊 ID。
provisioning_model:相關聯的佈建模型。protection_tier:
相關聯的保護模型。
|
如需 Compute Engine 產生的指標完整清單,請參閱「 Compute Engine 指標」。
AI 遙測收集器
AI 遙測收集器會收集並發布使用 Compute Engine API 建立的 TPU 指標,這些指標位於 compute.googleapis.com 命名空間下。這些指標是內建的系統指標,可讓您掌握健康狀態和效能。
AI 遙測收集器架構設計為輕量級的專用 OpenTelemetry (OTEL) 收集器。這項技術會使用兩個主要接收器來擷取資料:
- TPU 執行階段接收器:在機器學習工作負載處於活動狀態時,直接從 TPU 執行階段擷取執行階段和工作負載指標 (例如工作週期和記憶體用量)。
- TPU 主機接收器:直接從裝置擷取硬體使用率指標,例如 TensorCore 使用率和記憶體頻寬使用率,無論工作負載是否正在執行。
接著,AI 遙測收集器會使用處理器自動套用必要的資源標記 (例如 project_id、instance_id 和 zone),並直接將遙測資料安全地匯出至 Cloud Monitoring。
Google 的 TPU 最佳化 Ubuntu LTS 映像檔已預先安裝 AI 遙測收集器,並會在 VM 啟動時自動執行。如要使用這項設定,請在建立 TPU VM 執行個體或執行個體範本時,指定官方 Google 加速器映像檔專案和系列。VM 啟動後,AI 遙測收集器會自動將指標傳送至 Cloud Monitoring 資訊主頁。
如果您要建構自訂作業系統映像檔,可以安裝並執行 ai-telemetry-collector Docker 映像檔,然後使用 AI 遙測收集器。詳情請參閱「使用自訂 OS 映像檔」。
設定
AI 遙測收集器會自動將指標傳送至 Cloud Monitoring 資訊主頁,不需要任何額外設定步驟。不過,您可以設定 Snap 套件或 Docker 映像檔,新增外部匯出目的地、變更指標收集間隔,以及加入偵錯選項。
您可以將預設設定替換為新的設定檔,也可以將其他設定檔附加至現有的預設設定。新增設定時,系統會新增不存在的鍵,並覆寫現有的鍵。不過,陣列和清單並非加法,因此新清單必須同時包含現有和新值。
下列 YAML 檔案會設定 AI Telemetry Collector,將指標傳送至 Prometheus (開放原始碼系統監控和快訊工具包)。此外,還會啟用偵錯選項,在控制台中列印指標。
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
exporters:
- prometheus # For more: https://prometheus.io/docs/introduction/overview/
- googlecloud # If you do not include this, you'll lose Google Cloud Monitoring
- debug # print metrics within the console
預設作業系統
如果您使用 Google 的 TPU 最佳化 Ubuntu LTS 映像檔,請執行下列 Snap 指令,將新的設定檔新增至現有設定:
sudo snap set \
ai-telemetry-collector \
extra-flags="--config /home/username/additional-config.yaml"
如要覆寫並取代現有設定,請使用 config-path 旗標而非 extra-flags:
sudo snap set \
ai-telemetry-collector \
config-path="/home/username/new-config.yaml"
snap set 指令應會觸發 AI 遙測收集器自動重新啟動。如要確認收集器已重新啟動並成功套用設定,請使用下列指令查看記錄:
sudo snap logs -f ai-telemetry-collector
自訂 OS
如果您使用自訂作業系統,請執行下列 Docker 指令,將新的設定檔新增至現有設定:
# First apply the default configs via `--config=/etc/ai-telemetry-collector/config.yaml`
# Then apply your additional config by volume mount.
docker run --privileged --net=host \
-v <path>/additional-config.yaml:/etc/ai-telemetry-collector/additional-config.yaml \
ai-telemetry-collector:latest \
--config=/etc/ai-telemetry-collector/config.yaml \
--config=/etc/ai-telemetry-collector/additional-config.yaml
如要覆寫並取代現有設定,請使用下列 Docker 指令:
# Mount a volume (your config file) to `/etc/ai-telemetry-collector/config.yaml`
# The binary automatically picks up this file.
docker run --privileged --net=host \
-v <path>/my-config.yaml:/etc/ai-telemetry-collector/config.yaml \
ai-telemetry-collector:latest
稽核記錄
Google Cloud 服務會產生稽核記錄,用於記錄 Google Cloud 資源中的管理和存取活動。詳情請參閱「 Compute Engine 稽核記錄」。