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:

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.

Image

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.

  1. Geben Sie den Namen im folgenden Format ein: projects/{project-name}.
  2. 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
    
  3. 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.

  1. Zur Monitoring-Konsole
  2. Klicken Sie im Navigationsbereich auf Benachrichtigungen.
  3. Klicken Sie auf Edit notification channels (Benachrichtigungskanäle bearbeiten).
  4. Klicken Sie unter E-Mail auf Neue hinzufügen. Geben Sie eine E-Mail-Adresse, einen Anzeigenamen und klicken Sie auf Speichern.
  5. Klicken Sie auf der Seite Benachrichtigungen auf Richtlinie erstellen.
  6. Klicken Sie auf Messwert auswählen und wählen Sie dann Tensorcore Idle Duration aus. Klicken Sie dann auf Übernehmen.
  7. Klicken Sie auf Weiter und dann auf Schwellenwert.
  8. Wählen Sie unter Auslöser für Benachrichtigung die Option Any timeseries violation aus.
  9. Wählen Sie für Grenzwertposition die Option Über Grenzwert aus.
  10. Geben Sie unter Grenzwert den Wert 86400000 ein.
  11. Klicken Sie auf Weiter.
  12. Wählen Sie unter Benachrichtigungskanäle den E-Mail-Benachrichtigungskanal aus und klicken Sie auf OK.
  13. Geben Sie einen Namen für die Benachrichtigungsrichtlinie ein.
  14. 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:

  1. Rufen Sie den Log-Explorer von Google Cloud auf.
  2. Klicken Sie auf das Drop-down-Menü Alle Ressourcen.
  3. Klicken Sie auf Geprüfte Ressource und dann auf Cloud TPU.
  4. Wählen Sie die gewünschte Cloud TPU API aus.
  5. 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:

  1. Rufen Sie den Log-Explorer von Google Cloud auf.
  2. Klicken Sie auf das Drop-down-Menü Alle Ressourcen.
  3. Klicken Sie auf TPU-Worker.
  4. Wählen Sie eine Zone aus.
  5. Wählen Sie die gewünschte Cloud TPU aus.
  6. 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.

  1. Rufen Sie den Log-Explorer von Google Cloud auf.
  2. 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:*
  3. Klicken Sie auf Messwert erstellen, um den Messwert-Editor aufzurufen.

  4. Wählen Sie unter Messwerttyp die Option Verteilung aus.

  5. 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.

  6. Klicken Sie auf Messwert erstellen.

  7. 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:

Dashboards erstellen

So erstellen Sie in Cloud Monitoring ein Dashboard für die Tensorcore-Inaktivitätsdauer: Messwert:

  1. Öffnen Sie die Monitoring-Konsole.
  2. Klicken Sie im Navigationsbereich auf Dashboards.
  3. Klicken Sie auf Dashboard erstellen und dann auf Widget hinzufügen.
  4. Wählen Sie den Diagrammtyp aus, den Sie hinzufügen möchten. Wählen Sie für dieses Beispiel Zeile aus.
  5. Geben Sie einen Titel für das Widget ein.
  6. Klicken Sie auf das Drop-down-Menü Messwert auswählen und geben Sie im Filterfeld „Tensorcore-Inaktivitätsdauer“ ein.
  7. Wählen Sie in der Liste der Messwerte TPU-Worker -> Tpu -> Inaktivitätsdauer von Tensorcore:
  8. Um den Inhalt des Dashboards zu filtern, klicken Sie auf das Drop-down-Menü Filter.
  9. Wählen Sie unter Ressourcenlabels die Option project_id aus.
  10. Wählen Sie einen Vergleichsoperator aus und geben Sie im Feld Wert einen Wert ein.
  11. Klicken Sie auf Anwenden.