Cloud TPU の健全性をモニタリングする

Cloud TPU の健全性モニタリングでは、TPU VM とスライスの健全性ステータスに関するリアルタイム情報が提供されます。 Cloud Monitoring コンソールまたは Google Cloud CLI を使用すると、ハードウェア障害の発生時に特定してリソースを再割り当てできるため、ジョブの失敗を回避し、パフォーマンスの低下を最小限に抑えることができます。

TPU の健全性モニタリングでは、使用中の各 TPU インスタンスに HEALTHY または UNHEALTHY ステータスが割り当てられます。TPU が想定どおりに機能している場合は HEALTHY ステータスが割り当てられ、機能しなくなった場合やパフォーマンスが大幅に 低下した場合は UNHEALTHY ステータスが割り当てられます。

TPU の健全性モニタリングでは、健全性ステータスに加えて、特定のジョブのロギング指標も提供されます。これらの指標を使用すると、ハードウェアの問題が原因ではない TPU の健全性とパフォーマンスの問題をさらに診断できます。

異常な TPU の検出

TPU の健全性モニタリングで TPU に UNHEALTHY ステータスが割り当てられると、compute.googleapis.com/instance/tpu/infra_health サービス エンドポイントを介して、障害が発生した TPU の識別情報が提供されます。

TPU の健全性ステータスの原因

物理ハードウェアに問題がある場合、マシンは UNHEALTHY と分類されます。マシンが UNHEALTHY と分類されると、TPU の健全性モニタリングによって次のいずれかの原因が提供されます。

  • BAD_TPU_CHIP: TPU ハードウェア自体に物理的な障害が発生しています。VM は意図したとおりに実行されている可能性がありますが、VM に接続されている TPU に障害があります。
  • NETWORKING_ISSUE: 分散 TPU システムのさまざまなワーカーまたはコンポーネント間の基盤となるネットワーク通信でハードウェアの問題が発生しています。たとえば、転送リモート プロシージャ コール(RPC)がドロップしています。
  • BAD_SC_CHIP: TPU チップの SparseCore内に物理的な障害が発生しています。

指標ラベル

TPU の健全性モニタリングでは、特定の異常な TPU を識別するために、次の指標ラベルが提供されます。

ラベル名 型 説明
health_status STRING TPU インスタンスの全体的な健全性ステータス。
unhealthy_category STRING 健全性ステータスの原因。このラベルは、指標の値が UNHEALTHY の場合にのみ入力されます。
machine_type STRING インスタンスの Compute Engine マシンタイプ。
reservation_id STRING 物理マシンの予約の ID。

TPU の健全性モニタリングでは、次のリソースラベルも提供されます。

ラベル名 型 説明
project STRING プロジェクト番号。
service STRING API サービス(compute.googleapis.com)。
resource_type STRING VM インスタンス。
location STRING インスタンスのゾーン。
resource_id STRING Compute Engine インスタンス ID。

TPU の健全性モニタリングでは、TPU Cluster Director を介した All Capacity モードの予約に対して、次の追加の指標ラベルが提供されます。

ラベル名 型 説明
machine_id STRING VM をホストしている物理マシンの ID。
block_id STRING VM をホストしているクラスタ内のブロックの ID。
cluster_id STRING VM をホストしているクラスタの ID。
subblock_id STRING VM をホストしているサブブロックの ID。

ロギング

物理的な問題がないマシンでも、ハードウェアとは関係のない問題が原因で、機能が低下したり、機能しなくなったりすることがあります。このような場合、TPU の健全性モニタリングでは、マシンは引き続き HEALTHY と分類されますが、関連するプロジェクトの Cloud Logging に問題の原因となる可能性のあるものが記録されます。ログには、問題の詳細(簡単な説明、疑わしい根本原因、考えられる原因、実施可能な次のステップなど)が記録されます。

ログには、次のいずれかの原因が含まれます。

  • FINGERPRINT_MISMATCH: 同じ TPU モジュールを実行すると想定されるプログラムに、異なるバイナリ フィンガープリントが含まれています。コンパイラの問題が原因で不整合が発生している可能性があります。
  • DATA_INPUT_STALL: TPU がダイレクト メモリアクセス(DMA)オペレーションまたはデータ転送中に停止しています。DMA オペレーションが完了するまで TPU は続行できません。
  • UNRECOVERABLE_ERROR: 1 つ以上のワーカーで回復不能なエラーが発生し、未定義の状態になっています。
  • DIFFERENT_MODULE: ワーカーが同じモジュールを実行すると想定されるときに、異なる TPU モジュールを実行しています。
  • UNKNOWN_CAUSE: エラーの原因が不明です。

ログ エクスプローラまたは Logs API を使用してログを表示できます。ロギングの詳細については、 ロギングをご覧ください。 Google Cloud Google Cloud

コンソールでのモニタリング

コンソールのモニタリング ダッシュボードには、マシンの健全性ステータス、過去の傾向、合計数がリアルタイムで視覚化されます。 Google Cloud [障害イベント] テーブルには、ジョブの失敗とその根本原因がリンクされています。

Cloud Monitoring で事前構築済みのダッシュボードを表示するには:

  1. コンソールで、[Cloud Monitoring] ページに移動します。 Google Cloud
    [モニタリング] コンソールに移動
  2. ナビゲーション パネルで [ダッシュボード] をクリックします。
  3. [フィルタ検索] フィールドに「TPU Instance Health Dashboard」と入力します。

デフォルトでは、ダッシュボードに次の指標が表示されます。

  • TPU インスタンスの全体的な健全性: `HEALTHY` と分類される TPU インスタンスの割合。HEALTHY
  • インスタンス数: 使用中の TPU インスタンスの合計数。
  • 正常な TPU インスタンスの数: `HEALTHY` と分類される TPU インスタンスの合計数。HEALTHY
  • 異常な TPU インスタンスの数: と分類される TPU インスタンスの合計数。UNHEALTHY
  • VM インフラの健全性の分布: 時間経過に伴う HEALTHY インスタンスの数。

カスタムクエリを追加するには、[クエリを追加] をクリックして PromQL クエリを作成します。たとえば、次のクエリはすべての異常な TPU インスタンスを取得します。

count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})

コンソールでのモニタリングの詳細については、 Cloud Monitoring のドキュメントをご覧ください。 Google Cloud

CLI でのモニタリング

Google Cloud CLI は、リアルタイムの TPU 健全性データを提供します。次のリクエスト例では、すべての UNHEALTHY TPU を取得します。

export TOKEN=$(gcloud auth application-default print-access-token)

export PROMQL_QUERY='count({__name__="compute.googleapis.com/instance/tpu/infra_health", monitored_resource="gce_instance", health_status="UNHEALTHY"})'

export LOCATION="global"

curl -G \
  --header "Authorization: Bearer ${TOKEN}" \
  --header "Content-Type: application/json" \
  --header "X-Goog-User-Project: ${PROJECT_ID}" \
  --data-urlencode "query=${PROMQL_QUERY}" \
  "https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/location/${LOCATION}/prometheus/api/v1/query"

次のようなレスポンスが返されるはずです。

{"status":"success","data":{"resultType":"vector","result":[65]}}

gcloud CLI の詳細については、gcloud CLI の概要をご覧ください。