Cloud TPU-Zustand überwachen

Die Cloud TPU-Zustandsüberwachung bietet Echtzeitinformationen zum Zustand von TPU-VMs und ‑Slices. Mit der Cloud Monitoring Console oder der Google Cloud CLI können Sie Hardwarefehler erkennen, sobald sie auftreten, und Ressourcen neu zuweisen, um Jobfehler zu vermeiden und die Leistungseinbußen zu minimieren.

Bei der TPU-Zustandsüberwachung wird jeder verwendeten TPU-Instanz entweder der Status HEALTHY oder UNHEALTHY zugewiesen. TPUs, die wie erwartet funktionieren, wird der Status HEALTHY zugewiesen. TPUs, die nicht mehr funktionieren oder deren Leistung stark eingeschränkt ist, wird der Status UNHEALTHY zugewiesen.

Neben dem Systemzustand bietet die TPU-Systemdiagnose auch Logging-Messwerte für bestimmte Jobs. Mit diesen Messwerten können Sie den Zustand und die Leistung von TPUs weiter analysieren, wenn die Probleme nicht durch Hardware verursacht werden.

Erkennung fehlerhafter TPUs

Wenn die TPU-Zustandsüberwachung einer TPU den Status UNHEALTHY zuweist, werden über den Dienstendpunkt compute.googleapis.com/instance/tpu/infra_health Informationen zur Identifizierung der fehlerhaften TPU bereitgestellt.

Ursachen für den TPU-Status

Ein Gerät wird als UNHEALTHY kategorisiert, wenn Probleme mit der physischen Hardware vorliegen. Wenn eine Maschine als UNHEALTHY kategorisiert wird, gibt die TPU-Zustandsüberwachung einen der folgenden Gründe an:

  • BAD_TPU_CHIP: Ein physischer Fehler in der TPU-Hardware selbst. Die VM wird möglicherweise wie vorgesehen ausgeführt, aber eine mit der VM verbundene TPU ist fehlerhaft.
  • NETWORKING_ISSUE: Hardwareprobleme bei der zugrunde liegenden Netzwerkkommunikation zwischen den verschiedenen Workern oder Komponenten des verteilten TPU-Systems, z. B. abgebrochene Remote-Prozeduraufrufe (RPCs) für die Übertragung.
  • BAD_SC_CHIP: Ein physischer Fehler in einem SparseCore eines TPU-Chips.

Messwertlabels

Das TPU-Zustandsmonitoring bietet die folgenden Messwertlabels, um die spezifische fehlerhafte TPU zu identifizieren:

Label name Typ Beschreibung
health_status STRING Der allgemeine Systemzustand der TPU-Instanz.
unhealthy_category STRING Ursache für den Systemstatus. Dieses Label wird nur ausgefüllt, wenn der Wert des Messwerts UNHEALTHY ist.
machine_type STRING Der Compute Engine-Maschinentyp der Instanz.
reservation_id STRING Die ID der Reservierung der physischen Maschine.

Die TPU-Zustandsüberwachung bietet auch die folgenden Ressourcenlabels:

Label name Typ Beschreibung
project STRING Die Projektnummer.
service STRING Der API-Dienst (compute.googleapis.com).
resource_type STRING Die VM-Instanz.
location STRING Die Zone der Instanz.
resource_id STRING Die Compute Engine-Instanz-ID.

Die TPU-Zustandsüberwachung bietet die folgenden zusätzlichen Messwertlabels für Reservierungen im Modus „Alle Kapazitäten“ über TPU Cluster Director:

Label name Typ Beschreibung
machine_id STRING Die ID der physischen Maschine, auf der die VM gehostet wird.
block_id STRING Die ID des Blocks im Cluster, in dem die VM gehostet wird.
cluster_id STRING Die ID des Clusters, in dem die VM gehostet wird.
subblock_id STRING Die ID des Unterblocks, in dem die VM gehostet wird.

Logging

Eine Maschine ohne physische Probleme kann aufgrund von Problemen, die nicht mit der Hardware zusammenhängen, beeinträchtigt oder funktionsunfähig sein. In diesen Fällen wird die Maschine weiterhin als HEALTHY kategorisiert, aber es werden auch potenzielle Ursachen des Problems mit Cloud Logging im zugehörigen Projekt protokolliert. Die Protokolle enthalten Details zum Problem, darunter eine kurze Beschreibung, die vermutete Ursache, potenzielle Verursacher und umsetzbare nächste Schritte.

Die Logs enthalten einen der folgenden Gründe:

  • FINGERPRINT_MISMATCH: Programme, die dasselbe TPU-Modul ausführen sollen, enthalten unterschiedliche binäre Fingerabdrücke. Das liegt wahrscheinlich an Inkonsistenzen, die durch Compilerprobleme verursacht werden.
  • DATA_INPUT_STALL: TPUs bleiben bei DMA-Vorgängen (Direct Memory Access) oder Datenübertragungen hängen. TPUs können erst fortgesetzt werden, wenn DMA-Vorgänge abgeschlossen sind.
  • UNRECOVERABLE_ERROR: Bei einem oder mehreren Workern ist ein nicht behebbarer Fehler aufgetreten und sie befinden sich in einem undefinierten Status.
  • DIFFERENT_MODULE: Die Worker führen unterschiedliche TPU-Module aus, obwohl sie dasselbe Modul ausführen sollten.
  • UNKNOWN_CAUSE: Unbestimmte Fehlerursache.

Sie können Logs mit dem Log-Explorer oder der Logs API aufrufen. Weitere Informationen zum Logging in Google Cloud finden Sie unter Google CloudLogging.

Monitoring mit der Console

Das Monitoring-Dashboard in der Google Cloud -Konsole bietet Echtzeitvisualisierungen des Maschinenstatus, historischer Trends und Gesamtzahlen. In der Tabelle Fehlerereignis werden Jobfehler mit ihren Ursachen verknüpft.

So rufen Sie ein vordefiniertes Dashboard in Cloud Monitoring auf:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Monitoring“ auf.
    Monitoring-Konsole öffnen
  2. Klicken Sie im Navigationsbereich auf Dashboards.
  3. Geben Sie im Feld Filtersuche „TPU Instance Health Dashboard“ ein.

Im Dashboard werden standardmäßig die folgenden Messwerte angezeigt:

  • Gesamtstatus der TPU-Instanzen: Der Prozentsatz der TPU-Instanzen, die als HEALTHY kategorisiert sind.
  • Anzahl der Instanzen: Die Gesamtzahl der verwendeten TPU-Instanzen.
  • Anzahl der fehlerfreien TPU-Instanzen: Die Gesamtzahl der TPU-Instanzen, die als HEALTHY kategorisiert sind.
  • Anzahl der fehlerhaften TPU-Instanzen: Die Gesamtzahl der TPU-Instanzen, die als UNHEALTHY kategorisiert sind.
  • Verteilung des VM-Infrastrukturzustands: Die Anzahl der HEALTHY-Instanzen im Zeitverlauf.

Wenn Sie eine benutzerdefinierte Abfrage hinzufügen möchten, klicken Sie auf Abfrage hinzufügen und schreiben Sie eine PromQL-Abfrage. Mit der folgenden Abfrage werden beispielsweise alle fehlerhaften TPU-Instanzen abgerufen:

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

Weitere Informationen zum Monitoring mit der Google Cloud Konsole finden Sie in der Cloud Monitoring-Dokumentation.

Monitoring mit der Befehlszeile

Die Google Cloud CLI bietet TPU-Zustandsdaten in Echtzeit. Die folgende Beispielanfrage ruft alle UNHEALTHY-TPUs ab:

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"

Sie sollten eine Antwort ähnlich der folgenden erhalten:

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

Weitere Informationen zur gcloud CLI finden Sie in der Übersicht zur gcloud CLI.