Cloud TPU-VMs überwachen
In diesem Leitfaden wird erläutert, wie Sie mit Google Cloud Monitoring Ihre Cloud TPU-VMs überwachen. Google Cloud Monitoring erfasst automatisch Messwerte und Protokolle von Ihrer Cloud TPU und der zugehörigen Compute Engine-Instanz. Anhand dieser Daten können Sie den Zustand Ihrer Cloud TPU und Compute Engine im Blick behalten.
Mit Messwerten können Sie eine numerische Größe im Zeitverlauf verfolgen, z. B. die CPU-Auslastung, die Netzwerknutzung oder die Inaktivitätsdauer von TensorCores. In Protokollen werden Ereignisse zu einem bestimmten Zeitpunkt erfasst. Logeinträge werden von Ihrem eigenen Code, von Google Cloud-Diensten, von Drittanbietern-Anwendungen sowie von der Google Cloud-Infrastruktur geschrieben. Sie können auch Messwerte aus den Daten in einem Logeintrag generieren, indem Sie einen logbasierten Messwert erstellen. Sie können auch Benachrichtigungsrichtlinien basierend auf Messwertwerten oder Logeinträgen festlegen.
In diesem Leitfaden erfahren Sie mehr über Google Cloud Monitoring und wie Sie:
- Cloud TPU-Messwerte ansehen
- Richtlinien für Benachrichtigungen zu Cloud TPU-Messwerten einrichten
- Cloud TPU-Protokolle abfragen
- Logbasierte Messwerte erstellen, um Benachrichtigungen einzurichten und Dashboards zu visualisieren
Vorbereitung
In diesem Dokument werden Grundkenntnisse in Google Cloud Monitoring vorausgesetzt. Sie müssen eine Compute Engine-VM und Cloud TPU-Ressourcen erstellt haben, bevor Sie Google Cloud Monitoring-Daten generieren und damit arbeiten können. Weitere Informationen finden Sie in der Cloud TPU-Kurzanleitung.
Messwerte
Google Cloud-Messwerte werden automatisch von Compute Engine-VMs und der Cloud TPU-Laufzeit generiert. Die folgenden Messwerte werden von Cloud TPU-VMs generiert:
memory/usage
network/received_bytes_count
network/sent_bytes_count
cpu/utilization
tpu/tensorcore/idle_duration
accelerator/tensorcore_utilization
accelerator/memory_bandwidth_utilization
accelerator/duty_cycle
accelerator/memory_total
accelerator/memory_used
Es kann bis zu 180 Sekunden dauern, bis ein Messwert generiert und im Messwert-Explorer angezeigt wird.
Eine vollständige Liste der von Cloud TPU generierten Messwerte finden Sie unter Google Cloud Cloud TPU-Messwerte.
Arbeitsspeichernutzung
Der Messwert memory/usage
wird für die TPU Worker
-Ressource generiert und erfasst den von der TPU-VM verwendeten Arbeitsspeicher in Bytes. Dieser Messwert wird alle 60 Sekunden abgerufen.
Anzahl der vom Netzwerk empfangenen Byte
Der Messwert network/received_bytes_count
wird für die Ressource TPU Worker
generiert und erfasst die kumulative Anzahl der Datenbyte, die die TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk empfangen hat.
Anzahl der vom Netzwerk gesendeten Byte
Der Messwert network/sent_bytes_count
wird für die TPU Worker
-Ressource generiert und erfasst die Gesamtzahl der Byte, die die TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk gesendet hat.
CPU-Auslastung
Der Messwert cpu/utilization
wird für die TPU Worker
-Ressource generiert und erfasst die aktuelle CPU-Auslastung auf dem TPU-Worker, dargestellt als Prozentsatz, der einmal pro Minute erfasst wird. Die Werte liegen in der Regel zwischen 0,0 und 100,0, können aber auch über 100,0 liegen.
Dauer der Inaktivität des TensorCore
Der Messwert tpu/tensorcore/idle_duration
wird für die Ressource TPU Worker
generiert und erfasst die Anzahl der Sekunden, in denen der TensorCore jedes TPU-Chips inaktiv war. Dieser Messwert ist für jeden Chip auf allen verwendeten TPUs verfügbar. Wenn ein TensorCore verwendet wird, wird der Wert für die Inaktivitätsdauer auf null zurückgesetzt. Wenn der TensorCore nicht mehr verwendet wird, beginnt der Wert für die Inaktivitätsdauer zu steigen.
Das folgende Diagramm zeigt den Messwert tpu/tensorcore/idle_duration
für eine TPU-VM der Version 2.8 mit einem Worker. Jeder Worker hat vier Chips. In diesem Beispiel haben alle vier Chips dieselben Werte für tpu/tensorcore/idle_duration
, sodass die Grafiken übereinander liegen.
TensorCore-Auslastung
Der Messwert accelerator/tensorcore_utilization
wird für die Ressource GCE TPU
Worker
generiert und gibt den aktuellen Prozentsatz der genutzten TensorCores an. Dieser Messwert wird berechnet, indem die Anzahl der TensorCore-Vorgänge, die in einem Stichprobenzeitraum ausgeführt wurden, durch die maximale Anzahl von Vorgängen geteilt wird, die im selben Stichprobenzeitraum ausgeführt werden können. Ein höherer Wert bedeutet eine bessere Auslastung. Der Messwert „TensorCore-Auslastung“ wird von TPU v4 und neueren TPU-Generationen unterstützt.
Auslastung der Arbeitsspeicherbandbreite
Der Messwert accelerator/memory_bandwidth_utilization
wird für die Ressource GCE TPU Worker
generiert und gibt den aktuellen Prozentsatz der verwendeten Arbeitsspeicherbandbreite des Beschleunigers an. Dieser Messwert wird berechnet, indem die in einem Stichprobenzeitraum verwendete Arbeitsspeicherbandbreite durch die maximal unterstützte Bandbreite im selben Stichprobenzeitraum geteilt wird. Ein höherer Wert bedeutet eine bessere Auslastung. Der Messwert „Speicherbandbreitenauslastung“ wird von TPU v4 und neueren TPU-Generationen unterstützt.
Accelerator-Arbeitszyklus
Der Messwert accelerator/duty_cycle
wird für die Ressource GCE TPU Worker
generiert und gibt den Prozentsatz der Zeit im Stichprobenzeitraum an, während dessen der TensorCore des Beschleunigers aktiv verarbeitet wurde. Die Werte liegen im Bereich von 0 bis 100. Ein höherer Wert bedeutet eine bessere TensorCore-Auslastung. Dieser Messwert wird erfasst, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert „Accelerator Duty Cycle“ wird von JAX 0.4.14 und höher, PyTorch 2.1 und höher sowie
TensorFlow 2.14.0 und höher unterstützt.
Accelerator-Speicher insgesamt
Der Messwert accelerator/memory_total
wird für die Ressource GCE TPU Worker
generiert und gibt den gesamten Accelerator-Arbeitsspeicher in Byte an.
Dieser Messwert wird erfasst, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert „Accelerator Memory Total“ wird von JAX 0.4.14 und höher, PyTorch 2.1 und höher sowie
TensorFlow 2.14.0 und höher unterstützt.
Verwendeter Accelerator-Speicher
Der Messwert accelerator/memory_used
wird für die Ressource GCE TPU Worker
generiert und gibt den gesamten verwendeten Accelerator-Speicher in Byte an. Dieser Messwert wird erfasst, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert „Verwendeter Accelerator-Speicher“ wird für JAX 0.4.14 und höher, PyTorch 2.1 und höher sowie
TensorFlow 2.14.0 und höher unterstützt.
Messwerte ansehen
Sie können Messwerte mit dem Metrics Explorer in der Google Cloud Console aufrufen.
Klicken Sie im Metrics Explorer auf Messwert auswählen und suchen Sie je nach gewünschtem Messwert nach TPU Worker
oder GCE TPU Worker
.
Wählen Sie eine Ressource aus, um alle verfügbaren Messwerte für diese Ressource anzuzeigen.
Wenn Aktiv aktiviert ist, werden nur Messwerte mit Zeitreihendaten aus den letzten 25 Stunden aufgeführt. Deaktivieren Sie Aktiv, um alle Messwerte aufzulisten.
Sie können auch über curl
-HTTP-Aufrufe auf Messwerte zugreifen.
Klicken Sie in der Dokumentation zu „projects.timeSeries.query“ auf die Schaltfläche Jetzt ausprobieren, um den Wert für einen Messwert im angegebenen Zeitraum abzurufen.
- Geben Sie den Namen im folgenden Format ein:
projects/{project-name}
. Fügen Sie dem Abschnitt Request body (Anfragetext) eine Abfrage hinzu. Im folgenden Beispiel wird der Messwert „Ruhezeit“ für die angegebene Zone für die letzten fünf Minuten abgerufen.
fetch tpu_worker | filter zone = 'us-central2-b' | metric tpu.googleapis.com/tpu/tensorcore/idle_duration | within 5m
Klicken Sie auf Ausführen, um den Aufruf auszuführen und die Ergebnisse der HTTP-POST-Nachricht zu sehen.
Weitere Informationen zum Anpassen dieser Abfrage finden Sie in der Referenz für Monitoring Query Language.
Alerts erstellen
Sie können Benachrichtigungsrichtlinien erstellen, die Cloud Monitoring anweisen, eine Benachrichtigung zu senden, wenn eine Bedingung erfüllt ist.
Die Schritte in diesem Abschnitt zeigen ein Beispiel für das Hinzufügen einer Benachrichtigungsrichtlinie für den Messwert TensorCore Idle Duration. Wenn dieser Messwert 24 Stunden überschreitet, sendet Cloud Monitoring eine E-Mail an die registrierte E-Mail-Adresse.
- Öffnen Sie die Monitoring-Konsole.
- Klicken Sie im Navigationsbereich auf Benachrichtigungen.
- Klicken Sie auf Edit notification channels (Benachrichtigungskanäle bearbeiten).
- Klicken Sie unter E-Mail auf Neu hinzufügen. Geben Sie eine E-Mail-Adresse und einen Anzeigenamen ein und klicken Sie auf Speichern.
- Klicken Sie auf der Seite Benachrichtigungen auf Richtlinie erstellen.
- Klicken Sie auf Messwert auswählen, wählen Sie Tensorcore-Inaktivitätsdauer aus und klicken Sie auf Übernehmen.
- Klicken Sie auf Weiter und dann auf Grenzwert.
- Wählen Sie unter Benachrichtigungstrigger die Option Bei jedem Verstoß aus.
- Wählen Sie für Grenzwertposition die Option Über Grenzwert aus.
- Geben Sie unter Grenzwert den Wert
86400000
ein. - Klicken Sie auf Weiter.
- Wählen Sie unter Benachrichtigungskanäle den E-Mail-Benachrichtigungskanal aus und klicken Sie auf OK.
- Geben Sie einen Namen für die Benachrichtigungsrichtlinie ein.
- Klicken Sie auf Weiter und dann auf Richtlinie erstellen.
Wenn die Inaktivitätsdauer des TensorCores 24 Stunden überschreitet, wird eine E-Mail an die von Ihnen angegebene E-Mail-Adresse gesendet.
Logging
Logeinträge werden von Google Cloud-Diensten, Diensten von Drittanbietern, ML-Frameworks oder Ihrem Code geschrieben. Sie können Logs mit dem Log-Explorer oder der Logs API aufrufen. Weitere Informationen zum Logging in Google Cloud finden Sie unter Google Cloud Logging.
TPU Worker-Protokolle enthalten Informationen zu einem bestimmten Cloud TPU Worker in einer bestimmten Zone, z. B. die Menge des Arbeitsspeichers, der auf dem Cloud TPU Worker verfügbar ist (system_available_memory_GiB
).
Logs für geprüfte Ressourcen enthalten Informationen dazu, wann eine bestimmte Cloud TPU API aufgerufen wurde und wer den Aufruf getätigt hat. Sie finden dort beispielsweise Informationen zu Aufrufen der CreateNode
-, UpdateNode
- und DeleteNode
-APIs.
ML-Frameworks können Protokolle in die Standardausgabe und den Standardfehlerkanal schreiben. Diese Protokolle werden durch Umgebungsvariablen gesteuert und von Ihrem Trainingsskript gelesen.
Ihr Code kann Protokolle in Google Cloud Logging schreiben. Weitere Informationen finden Sie unter Standardprotokolle schreiben und Strukturierte Protokolle schreiben.
Google Cloud-Logs abfragen
Wenn Sie sich Logs in der Google Cloud Console ansehen, wird auf der Seite eine Standardabfrage ausgeführt.
Sie können die Abfrage aufrufen, indem Sie die Umschaltoption Show query
auswählen. Sie können die Standardabfrage ändern oder eine neue erstellen. Weitere Informationen finden Sie unter Abfragen im Log-Explorer erstellen.
Protokolle für geprüfte Ressourcen
So rufen Sie Logs zu geprüften Ressourcen auf:
- Rufen Sie den Google Cloud Log-Explorer auf.
- Klicken Sie auf das Drop-down-Menü Alle Ressourcen.
- Klicken Sie auf Geprüfte Ressource und dann auf Cloud TPU.
- Wählen Sie die gewünschte Cloud TPU API aus.
- Klicken Sie auf Anwenden. Protokolle werden in den Abfrageergebnissen angezeigt.
Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Jeder Logeintrag enthält mehrere Felder, darunter:
- logName: Der Name des Logs.
- protoPayload -> @type: der Typ des Logs
- protoPayload -> resourceName: der Name Ihrer Cloud TPU
- protoPayload -> methodName: der Name der aufgerufenen Methode (nur Audit-Logs)
- protoPayload -> request -> @type: der Anfragetyp
- protoPayload -> request -> node: Details zum Cloud TPU-Knoten
- protoPayload -> request -> node_id: der Name der TPU
- severity: der Schweregrad des Logs
TPU-Worker-Logs
So rufen Sie TPU-Worker-Logs auf:
- Rufen Sie den Google Cloud Log-Explorer auf.
- Klicken Sie auf das Drop-down-Menü Alle Ressourcen.
- Klicken Sie auf TPU-Worker.
- Wählen Sie eine Zone aus.
- Wählen Sie die gewünschte Cloud TPU aus.
- Klicken Sie auf Anwenden. Protokolle werden in den Abfrageergebnissen angezeigt.
Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Jeder Logeintrag enthält ein Feld namens jsonPayload
. Maximieren Sie jsonPayload
, um mehrere Felder zu sehen, darunter:
- accelerator_type: Beschleunigertyp
- consumer_project: das Projekt, in dem sich die Cloud TPU befindet
- evententry_timestamp: Zeitpunkt, zu dem das Protokoll generiert wurde
- system_available_memory_GiB: Verfügbarer Arbeitsspeicher auf dem Cloud TPU-Arbeitsknoten (0 bis 350 GiB)
Logbasierte Messwerte erstellen
In diesem Abschnitt wird beschrieben, wie logbasierte Messwerte erstellt werden, die für die Einrichtung von Dashboards und Benachrichtigungen zur Überwachung verwendet werden. Informationen zum programmatischen Erstellen von logbasierten Messwerten finden Sie unter Logbasierte Messwerte programmatisch mit der Cloud Logging REST API erstellen.
Im folgenden Beispiel wird mithilfe des Unterfelds system_available_memory_GiB gezeigt, wie ein logbasierter Messwert zum Überwachen des verfügbaren Arbeitsspeichers von Cloud TPU-Workern erstellt wird.
- Rufen Sie den Google Cloud Log-Explorer auf.
Geben Sie im Abfragefeld die folgende Abfrage ein, um alle Logeinträge zu extrahieren, für die system_available_memory_GiB für den primären Cloud TPU-Worker definiert ist:
resource.type=tpu_worker resource.labels.project_id=your-project resource.labels.zone=your-tpu-zone resource.labels.node_id=your-tpu-name resource.labels.worker_id=0 logName=projects/your-project/logs/tpu.googleapis.com%2Fruntime_monitor jsonPayload.system_available_memory_GiB:*
Klicken Sie auf Messwert erstellen, um den Messwert-Editor aufzurufen.
Wählen Sie unter Messwerttyp die Option Verteilung aus.
Geben Sie einen Namen, eine optionale Beschreibung und eine Maßeinheit für den Messwert ein. Geben Sie in diesem Beispiel „matrix_unit_utilization_percent“ und „MXU-Auslastung“ in die Felder Name und Beschreibung ein. Der Filter ist bereits mit dem Script ausgefüllt, das Sie im Log-Explorer eingegeben haben.
Klicken Sie auf Messwert erstellen.
Klicken Sie auf Im Metrics Explorer ansehen, um den neuen Messwert aufzurufen. Es kann einige Minuten dauern, bis die Messwerte angezeigt werden.
Logbasierte Messwerte mit der Cloud Logging REST API erstellen
Sie können logbasierte Messwerte auch über die Cloud Logging API erstellen. Weitere Informationen finden Sie unter Verteilungsmesswerte erstellen.
Dashboards und Benachrichtigungen mit protokollbasierten Messwerten erstellen
Dashboards eignen sich zur Visualisierung von Messwerten (mit einer Verzögerung von etwa 2 Minuten). Warnungen sind hilfreich, wenn Fehler auftreten. Weitere Informationen finden Sie unter:
- Monitoring- und Logging-Dashboards
- Benutzerdefinierte Dashboards verwalten
- Messwertbasierte Benachrichtigungsrichtlinien erstellen
Dashboards erstellen
So erstellen Sie in Cloud Monitoring ein Dashboard für den Messwert Tensorcore-Ruhezeit:
- Öffnen Sie die Monitoring-Konsole.
- Klicken Sie im Navigationsbereich auf Dashboards.
- Klicken Sie auf Dashboard erstellen und dann auf Widget hinzufügen.
- Wählen Sie den Diagrammtyp aus, den Sie hinzufügen möchten. Wählen Sie für dieses Beispiel Zeile aus.
- Geben Sie einen Titel für das Widget ein.
- Klicken Sie auf das Drop-down-Menü Messwert auswählen und geben Sie im Filterfeld „Tensorcore-Inaktivitätsdauer“ ein.
- Wählen Sie in der Liste der Messwerte TPU-Arbeiter -> Tpu -> Tensorcore-Inaktivitätsdauer aus.
- Wenn Sie den Dashboard-Inhalt filtern möchten, klicken Sie auf das Drop-down-Menü Filter.
- Wählen Sie unter Ressourcenlabels die Option project_id aus.
- Wählen Sie einen Vergleichsoperator aus und geben Sie im Feld Wert einen Wert ein.
- Klicken Sie auf Anwenden.