Cloud TPU-VMs überwachen
In diesem Leitfaden wird erläutert, wie Sie mit Monitoring inGoogle Cloud Ihre Cloud TPU-VMs überwachen. Monitoring in Google Cloud erfasst automatisch Messwerte und Logs von Ihrer Cloud TPU und dem zugehörigen Compute Engine-Host. Mit diesen Daten können Sie den Zustand Ihrer Cloud TPU und Compute Engine überwachen.
Mit Messwerten können Sie eine numerische Größe im Zeitverlauf verfolgen, z. B. die CPU-Auslastung, die Netzwerknutzung oder die Inaktivitätsdauer der TensorCores. In Logs werden Ereignisse zu einem bestimmten Zeitpunkt erfasst. Logeinträge werden von Ihrem eigenen Code, Diensten von Google Cloud, Anwendungen von Drittanbietern und der Infrastruktur von Google Cloud erstellt. Sie können auch Messwerte aus den Daten in einem Logeintrag generieren, indem Sie einen logbasierten Messwert erstellen. Sie können auch Benachrichtigungsrichtlinien auf Grundlage von Messwerten oder Logeinträgen festlegen.
In diesem Leitfaden wird Monitoring in Google Cloud behandelt und es wird gezeigt, wie Sie:
- Cloud TPU-Messwerte ansehen
- Benachrichtigungsrichtlinien für Cloud TPU-Messwerte einrichten
- Cloud TPU-Logs abfragen
- Logbasierte Messwerte zum Einrichten von Benachrichtigungen und zur Darstellung von Dashboards erstellen
Sie können zur Überwachung von TPUs auch Capacity Planner (Vorabversion) verwenden. Mit Capacity Planner können Sie TPU-Nutzungs- und Prognosedaten für Ihr Projekt, Ihren Ordner oder Ihre Organisation ansehen. Diese Daten werden alle 24 Stunden aktualisiert. Sie können sie verwenden, um Nutzungstrends zu analysieren und den zukünftigen Kapazitätsbedarf zu planen. Weitere Informationen finden Sie unter Übersicht über Capacity Planner.
In diesem Dokument werden Grundkenntnisse über Monitoring inGoogle Cloud vorausgesetzt. Sie müssen eine Compute Engine-VM und Cloud TPU-Ressourcen erstellt haben, bevor Sie mit dem Monitoring inGoogle Cloud beginnen und arbeiten können. Weitere Informationen finden Sie in der Cloud TPU-Kurzanleitung.
Messwerte
Messwerte inGoogle Cloud 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 im Metrics 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 Ressource TPU Worker
generiert und erfasst den von der TPU-VM verwendeten Arbeitsspeicher in Byte. 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 kumulierte Datenmenge in Byte, 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 Ressource TPU Worker
generiert und erfasst die Menge der kumulativen Byte, die die TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk gesendet hat.
CPU-Auslastung
Der Messwert cpu/utilization
wird für die Ressource TPU Worker
generiert und erfasst die aktuelle CPU-Auslastung auf dem TPU-Worker, dargestellt als Prozentsatz. Die Erfassung erfolgt einmal pro Minute. Die Werte liegen in der Regel zwischen 0,0 und 100,0. Sie können aber auch über 100,0 liegen.
TensorCore-Inaktivitätsdauer
Der Messwert tpu/tensorcore/idle_duration
wird für die Ressource TPU Worker
generiert und gibt die Anzahl der Sekunden an, 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 vom Typ v2-8 mit einem Worker. Jeder Worker hat vier Chips. In diesem Beispiel haben alle vier Chips dieselben Werte für tpu/tensorcore/idle_duration
. Die Grafiken werden also übereinander dargestellt.
TensorCore-Auslastung
Die Metrik accelerator/tensorcore_utilization
wird für die Ressource GCE TPU
Worker
generiert und erfasst den aktuellen Prozentsatz der TensorCore-Auslastung. 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 größerer Wert bedeutet eine bessere Auslastung. Der Messwert „TensorCore-Auslastung“ wird von TPU-Generationen ab v4 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 genutzte Arbeitsspeicherbandbreite durch die maximal unterstützte Bandbreite im selben Stichprobenzeitraum geteilt wird. Ein größerer Wert bedeutet eine bessere Auslastung. Der Messwert „Auslastung der Arbeitsspeicherbandbreite“ wird von TPU-Generationen ab v4 unterstützt.
Arbeitszyklus des Beschleunigers
Der Messwert accelerator/duty_cycle
wird für die Ressource GCE TPU Worker
generiert und erfasst den Prozentsatz der Zeit im Stichprobenzeitraum, in dem der TensorCore des Beschleunigers aktiv Daten verarbeitet hat. Die Werte liegen zwischen 0 und 100. Ein größerer Wert bedeutet eine bessere TensorCore-Auslastung. Dieser Messwert wird gemeldet, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert für den Arbeitszyklus des Beschleunigers wird ab JAX 0.4.14, ab PyTorch 2.1 sowie ab
TensorFlow 2.14.0 unterstützt.
Gesamtspeicher des Beschleunigers
Der Messwert accelerator/memory_total
wird für die Ressource GCE TPU Worker
generiert und erfasst den gesamten zugewiesenen Arbeitsspeicher des Beschleunigers in Byte.
Dieser Messwert wird gemeldet, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert für den Gesamtspeicher des Beschleunigers wird ab JAX 0.4.14, ab PyTorch 2.1 sowie ab TensorFlow 2.14.0 unterstützt.
Belegter Arbeitsspeicher des Beschleunigers
Der Messwert accelerator/memory_used
wird für die Ressource GCE TPU Worker
generiert und erfasst den gesamten verwendeten Arbeitsspeicher des Beschleunigers in Byte. Dieser Messwert wird gemeldet, wenn eine ML-Arbeitslast auf der TPU-VM ausgeführt wird. Der Messwert für den belegten Arbeitsspeicher des Beschleunigers wird ab JAX 0.4.14, ab PyTorch 2.1 sowie ab TensorFlow 2.14.0 unterstützt.
Messwerte ansehen
Sie können Messwerte über den Metrics Explorer in der Google Cloud Console aufrufen.
Klicken Sie im Metrics Explorer auf Messwert auswählen und suchen Sie je nach dem gewünschten Messwert nach TPU Worker
oder GCE TPU Worker
.
Wählen Sie eine Ressource aus, um alle verfügbaren Messwerte für diese Ressource aufzurufen.
Wenn Aktiv aktiviert ist, werden nur Messwerte mit Zeitreihendaten aus den letzten 25 Stunden aufgeführt. Deaktivieren Sie Aktiv, um alle Messwerte aufzulisten.
Benachrichtigungen erstellen
Sie können Benachrichtigungsrichtlinien erstellen, mit denen Cloud Monitoring angewiesen wird, 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-Inaktivitätsdauer. 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 Benachrichtigungskanäle bearbeiten
- Klicken Sie unter E-Mail auf Neue 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 Anwenden.
- Klicken Sie auf Weiter und dann auf Grenzwert.
- Wählen Sie unter Benachrichtigungstrigger die Option Bei jedem Zeitreihenverstoß.
- Wählen Sie für Grenzwertposition die Option Über Grenzwert aus.
- Geben Sie für Grenzwert den Wert
86400000
ein. - Klicken Sie auf Weiter.
- Wählen Sie unter Benachrichtigungskanäle Ihren 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 TensorCore 24 Stunden überschreitet, wird eine E-Mail an die von Ihnen angegebene E-Mail-Adresse gesendet.
Logging
Logeinträge werden von Diensten von Google Cloud , Drittanbieterdiensten, 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-Logs enthalten Informationen zu einem bestimmten Cloud TPU-Worker in einer bestimmten Zone, z. B. die Menge des auf dem Cloud TPU-Worker verfügbaren Arbeitsspeichers (system_available_memory_GiB
).
Logs der geprüften Ressource enthalten Informationen dazu, wann eine bestimmte Cloud TPU-API aufgerufen wurde und wer den Aufruf getätigt hat. Sie können beispielsweise Informationen zu Aufrufen der APIs CreateNode
, UpdateNode
und DeleteNode
abrufen.
ML-Frameworks können Logs in die Standardausgabe und den Standardfehlerkanal schreiben. Diese Logs werden durch Umgebungsvariablen gesteuert und von Ihrem Trainingsskript gelesen.
Ihr Code kann Logs ins Logging von Google Cloud schreiben. Weitere Informationen finden Sie unter Standardlogs schreiben und Strukturierte Logs schreiben.
Logging des seriellen Ports
Cloud TPU verwendet das Logging für den seriellen Port zur Fehlerbehebung, zum Monitoring und zum Debugging. Standardmäßig ist das Logging des seriellen Ports aktiviert. Wenn das Logging des seriellen Ports nicht aktiviert ist, schlägt die Erstellung der TPU-VM fehl und es wird die folgende Fehlermeldung generiert.
"Cloud TPU received a bad request. Constraint
`constraints/compute.disableSerialPortLogging` violated. Create TPUs with
serial port logging enabled or remove the Organization Policy Constraint."
Diese Meldung weist darauf hin, dass die Einschränkung constraints/compute.disableSerialPortLogging
verletzt wurde.
Um diesen Fehler zu vermeiden, muss das Logging serieller Ports für Ihre TPU-Projekte zulässig sein. Es empfiehlt sich, die Organisationsrichtlinie auf Projektebene zu überschreiben.
Weitere Informationen zum Aktivieren des Loggings des seriellen Ports finden Sie unter Logging der Ausgabe des seriellen Ports aktivieren und deaktivieren.
Logs in Google Cloud abfragen
Wenn Sie sich Logs in der Google Cloud Console ansehen, wird auf der Seite eine Standardsuchanfrage ausgeführt.
Sie können die Abfrage aufrufen, indem Sie die Ein/Aus-Schaltfläche Show query
auswählen. Sie können die Standardanfrage ändern oder eine neue erstellen. Weitere Informationen finden Sie unter Abfragen im Log-Explorer erstellen.
Logs der geprüften Ressource
So rufen Sie Logs von geprüften Ressourcen auf:
- Rufen Sie den Log-Explorer von Google Cloud 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 Cloud TPU API aus, die von Interesse ist.
- Klicken Sie auf Anwenden. Die Logs werden in den Abfrageergebnissen angezeigt.
Klicken Sie auf einen beliebigen 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:
- Wechseln Sie zum Explorer von Google Cloud .
- 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. Die Logs werden in den Abfrageergebnissen angezeigt.
Klicken Sie auf einen beliebigen Logeintrag, um ihn zu maximieren. Jeder Logeintrag hat ein Feld namens jsonPayload
. Maximieren Sie jsonPayload
, um mehrere Felder aufzurufen, darunter:
- accelerator_type: der Beschleunigertyp
- consumer_project: das Projekt, in dem sich die Cloud TPU befindet
- evententry_timestamp: der Zeitpunkt, zu dem das Log generiert wurde
- system_available_memory_GiB: der verfügbare Speicher auf dem Cloud TPU-Worker (0 bis 350 GiB)
Logbasierte Messwerte erstellen
In diesem Abschnitt wird beschrieben, wie Sie logbasierte Messwerte erstellen, die für die Einrichtung von Dashboards und Benachrichtigungen zum Monitoring 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 die Vorgehensweise zum Erstellen eines logbasierten Messwerts zur Überwachung des verfügbaren Speichers von Cloud TPU-Workern veranschaulicht.
- Wechseln Sie zum Explorer von Google Cloud .
Geben Sie im Feld für die Abfrage die folgende Abfrage ein, um alle Logeinträge zu extrahieren, bei denen 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 Messwerteditor 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 für dieses Beispiel „matrix_unit_utilization_percent“ und „MXU-Auslastung“ in die Felder Name und Beschreibung ein. Der Filter ist bereits mit dem Script vorausgefü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 Ihre 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 Verteilungsmesswert erstellen.
Dashboards und Benachrichtigungen mit logbasierten Messwerten erstellen
Dashboards eignen sich zur Visualisierung von Messwerten (mit einer Verzögerung von etwa 2 Minuten). Warnungen sind hilfreich, um Benachrichtigungen zu senden, wenn Fehler auftreten. Weitere Informationen finden Sie unter:
- Dashboards für Monitoring und Logging
- Benutzerdefinierte Dashboards verwalten
- Messwertbasierte Benachrichtigungsrichtlinien erstellen
Dashboards erstellen
So erstellen Sie ein Dashboard in Cloud Monitoring für den Messwert TensorCore-Inaktivitätsdauer
- Ö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 Linie aus.
- Geben Sie einen Titel für das Widget ein.
- Klicken Sie auf das Drop-down-Menü Messwert auswählen und geben Sie „Tensorcore-Inaktivitätsdauer“ in das Filterfeld ein.
- Wählen Sie in der Liste der Messwerte TPU-Worker -> TPU -> Tensorcore-Inaktivitätsdauer aus.
- Wenn Sie die Dashboard-Inhalte 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 einen Wert in das Feld Wert ein.
- Klicken Sie auf Anwenden.