Cloud TPU-VMs überwachen
In diesem Leitfaden wird die Verwendung von Google Cloud Monitoring erläutert. um Ihre Cloud TPU-VMs zu ü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. Netzwerkauslastung oder die Inaktivitätsdauer von TensorCore. Logs erfassen Ereignisse um zu einem bestimmten Zeitpunkt. Logeinträge werden von Ihrem eigenen Code, Google Cloud, Drittanbieteranwendungen und die Google Cloud-Infrastruktur. Sie können auch Messwerte aus den Daten in einem Logeintrag generieren, indem Sie einen logbasierten Messwert. 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 eine Cloud TPU haben Ressourcen, die erstellt wurden, bevor Sie Google Cloud Monitoring 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:
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 TPU Worker
generiert
Ressource und verfolgt die Anzahl der kumulativen Datenbyte, die die TPU-VM empfangen hat
zu einem bestimmten Zeitpunkt
über das Netzwerk übertragen werden.
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 Ressource TPU Worker
und
verfolgt die aktuelle CPU-Auslastung
auf dem TPU-Worker, dargestellt als Prozentsatz,
pro Minute erfasst. 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.
Die folgende Grafik zeigt den Messwert tpu/tensorcore/idle_duration
für eine Version von v2-8.
TPU-VM 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 generiert für:
Ressource GCE TPU Worker
und verfolgt den aktuellen Prozentsatz des Beschleunigers
die verwendete Speicherbandbreite. 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 0
auf 100. Ein höherer Wert bedeutet eine bessere TensorCore-Auslastung. Dieser Messwert ist
wenn eine Arbeitslast für maschinelles Lernen auf der TPU-VM ausgeführt wird. Die
Der Messwert für den Accelerator Duty Cycle wird für JAX unterstützt
0.4.14 und höher,
PyTorch
2.1 und höher und
TensorFlow
2.14.0 und
.
Accelerator-Arbeitsspeicher insgesamt
Der Messwert accelerator/memory_total
wird für GCE TPU Worker
generiert
Ressource und verfolgt den gesamten dem Beschleuniger zugeteilten Arbeitsspeicher in Byte.
Dieser Messwert wird gemeldet, wenn eine Arbeitslast für maschinelles Lernen auf der TPU ausgeführt wird
VM: 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 GCE TPU Worker
generiert
Ressource und verfolgt den gesamten verwendeten Accelerator-Arbeitsspeicher in Byte. 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 nach TPU Worker
.
oder GCE TPU Worker
, je nachdem, für welchen Messwert Sie sich interessieren.
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.
Verwenden Sie die Schaltfläche Jetzt testen! in der Dokumentation zu projects.timeSeries.query. um den Wert für einen Messwert innerhalb des angegebenen Zeitraums abzurufen.
- Geben Sie den Namen im folgenden Format ein:
projects/{project-name}
. Fügen Sie im Abschnitt 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, um Cloud Monitoring darüber zu informieren. um 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, Cloud Monitoring sendet eine E-Mail an die registrierte E-Mail-Adresse.
- Zur Monitoring-Konsole
- Klicken Sie im Navigationsbereich auf Benachrichtigungen.
- Klicken Sie auf Edit notification channels (Benachrichtigungskanäle bearbeiten).
- Klicken Sie unter E-Mail auf Neue hinzufügen. Geben Sie eine E-Mail-Adresse, einen Anzeigenamen und klicken Sie auf Speichern.
- Klicken Sie auf der Seite Benachrichtigungen auf Richtlinie erstellen.
- Klicken Sie auf Messwert auswählen und wählen Sie dann Tensorcore Idle Duration aus. Klicken Sie dann auf Übernehmen.
- Klicken Sie auf Weiter und dann auf Schwellenwert.
- Wählen Sie unter Auslöser für Benachrichtigung die Option Any timeseries violation 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 von TensorCore 24 Stunden überschreitet, wird eine E-Mail an den der angegebenen E-Mail-Adresse.
Logging
Logeinträge werden von Google Cloud-Diensten, Drittanbieterdiensten und ML geschrieben Frameworks oder Ihren Code. Sie können Logs mit dem Log-Explorer oder den Logs ansehen. der API erstellen. Weitere Informationen zum Google Cloud-Logging 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 Logs werden von Umgebungsvariablen gesteuert und vom Training gelesen .
Ihr Code kann Logs 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, führt die Seite eine Standardabfrage aus.
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 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 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 Logtyp
- 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 -> Anfrage -> node_id: Name der TPU
- severity: der Schweregrad des Logs
TPU-Worker-Logs
So rufen Sie TPU-Worker-Logs auf:
- Rufen Sie den Log-Explorer von Google Cloud 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 zu Logbasierte Messwerte programmatisch erstellen, siehe Mit der Cloud Logging REST API logbasierte Messwerte programmatisch erstellen
Im folgenden Beispiel wird das Unterfeld system_available_memory_GiB verwendet, um Demonstrieren, wie ein logbasierter Messwert für das Monitoring von Cloud TPU erstellt wird für Worker verfügbarer Arbeitsspeicher.
- Rufen Sie den Log-Explorer von Google Cloud auf.
Geben Sie im Abfragefeld die folgende Abfrage ein, um alle Logeinträge, in denen system_available_memory_GiB für den Primärer Cloud TPU-Worker:
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 die 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 sind nützlich, um Metriken zu visualisieren (mit einer Verzögerung von ca. 2 Minuten). Warnungen sind hilfreich, um beim Auftreten von Fehlern Benachrichtigungen zu senden. 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 die Tensorcore-Inaktivitätsdauer: Messwert:
- Ö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-Worker -> Tpu -> Inaktivitätsdauer von Tensorcore:
- Um den Inhalt des Dashboards zu filtern, 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.