Cloud TPU-Knoten überwachen

.

In diesem Leitfaden wird erläutert, wie Sie mit Google Cloud Monitoring Ihre Cloud TPU-Knoten überwachen. Google Cloud Monitoring erfasst automatisch Messwerte und Protokolle von Ihrer Cloud TPU und der zugehörigen Compute Engine-Host-Instanz. Anhand dieser Daten können Sie den Zustand Ihrer Cloud TPU und Compute Engine im Blick behalten.

Mithilfe von Messwerten können Sie eine numerische Größe im Zeitverlauf verfolgen, z. B. die CPU-Auslastung, die Netzwerknutzung oder die MXU-Auslastung. In Protokollen werden Ereignisse zu einem bestimmten Zeitpunkt erfasst. Logeinträge werden von Ihrem eigenen Code, Google Cloud Diensten, Anwendungen von Drittanbietern und 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 Protokolleinträgen festlegen.

In diesem Leitfaden erfahren Sie mehr über die Google Cloud Überwachung und wie Sie Folgendes tun:

  • Cloud TPU-Messwerte ansehen
  • Richtlinien für Benachrichtigungen zu Cloud TPU-Messwerten einrichten
  • Cloud TPU-Logs abfragen
  • protokollbasierte Messwerte zum Einrichten von Benachrichtigungen und zur Darstellung von Dashboards erstellen.

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 erstellen 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-Knoten generiert:

  • cpu/utilization
  • memory/usage
  • network/received_bytes_count
  • network/sent_bytes_count
  • tpu/mxu/utilization
  • tpu/tensorcore/idle_duration

CPU-Auslastung

Der Messwert cpu/utilization gibt die aktuelle CPU-Auslastung des Cloud TPU-Workers als Prozentsatz an. Die Werte liegen in der Regel zwischen 0,0 und 100,0, können aber auch über 100,0 liegen. Alle 60 Sekunden wird eine Stichprobe erstellt. Es kann bis zu 180 Sekunden dauern, bis ein Wert generiert und angezeigt wird.

Arbeitsspeichernutzung

Der Messwert memory/usage gibt den Arbeitsspeicher an, der derzeit von der Cloud TPU-VM verwendet wird, in Byte. Dieser Messwert wird alle 60 Sekunden abgerufen. Es kann bis zu 180 Sekunden dauern, bis ein Wert generiert und angezeigt wird.

Anzahl der vom Netzwerk empfangenen Byte

Der Messwert network/received_bytes_count gibt die Gesamtzahl der Datenbyte an, die die Cloud TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk empfangen hat. Es kann bis zu 180 Sekunden dauern, bis ein Wert generiert und angezeigt wird.

Anzahl der vom Netzwerk gesendeten Byte

Der Messwert network/sent_bytes_count gibt die Gesamtzahl der Byte an, die die Cloud TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk gesendet hat. Es kann bis zu 180 Sekunden dauern, bis ein Wert generiert und angezeigt wird.

Dauer der Inaktivität des TensorCore

Mit dem Messwert tpu/tensorcore/idle_duration wird die Anzahl der Sekunden erfasst, 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 Cloud TPU-VM der Version 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, sodass die Grafiken übereinander liegen.

Image

MXU-Auslastung

Der Messwert tpu/mxu/utilization gibt die aktuelle MXU-Auslastung auf dem TPU-Worker als Prozentsatz an. Die Werte liegen in der Regel zwischen 0,0 und 100,0. Alle 60 Sekunden wird eine Stichprobe erstellt. Nach dem Abruf werden bis zu 180 Sekunden keine Daten angezeigt.

Eine vollständige Liste der von Cloud TPU generierten Messwerte finden Sie unter Cloud TPU-Messwerte.

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 Cloud TPU Worker. Wenn Nur aktive Ressourcen und Messwerte anzeigen aktiviert ist, werden nur Messwerte angezeigt, die gerade generiert werden. Klicken Sie auf Cloud TPU-Worker, um die verfügbaren Messwerte aufzurufen.

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.

  1. Geben Sie den Namen im folgenden Format ein: projects/{project-name}
  2. Fügen Sie dem Abschnitt Request body (Anfragetext) eine Abfrage hinzu. Im Folgenden finden Sie eine Beispielabfrage zum Abrufen des Messwerts „Ruhezeit“ für die angegebene Zone in den letzten 5 Minuten. 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 die Ergebnisse der HTTP-POST-Nachricht abzurufen.

Weitere Informationen zum Anpassen dieser Abfrage finden Sie im Dokument Monitoring Query Language Reference.

Sie können Benachrichtigungsrichtlinien erstellen, mit denen Google Cloud Monitoring eine Benachrichtigung sendet, wenn eine Bedingung erfüllt ist.

Alerts erstellen

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.

  1. Monitoring-Konsole öffnen
  2. Klicken Sie im Navigationsbereich auf Benachrichtigungen.
  3. Klicke auf BENACHRICHTIGUNGSKANÄLE BEARBEITEN.
  4. Klicken Sie unter E-Mail auf NEUE E-MAIL-ADRESSE HINZUFÜGEN.
  5. Geben Sie eine E-Mail-Adresse und einen Anzeigenamen ein und klicken Sie auf SPEICHERN.
  6. Klicke auf RICHTLINIE ERSTELLEN.
  7. Klicken Sie auf MESSWERT AUSWÄHLEN, wählen Sie Tensorcore Idle Duration aus und klicken Sie auf ÜBERNEHMEN.
  8. Klicken Sie auf WEITER und dann auf Grenzwert.
  9. Wählen Sie unter Benachrichtigungstrigger die Option Bei jedem Verstoß aus.
  10. Wählen Sie für Grenzwertposition die Option Über Grenzwert aus.
  11. Geben Sie unter Grenzwert den Wert 86400000 ein.
  12. Klicken Sie auf WEITER.
  13. Wählen Sie unter Benachrichtigungskanäle den E-Mail-Benachrichtigungskanal aus und klicken Sie auf OK.
  14. Geben Sie einen Namen für die Benachrichtigungsrichtlinie ein.
  15. Klicken Sie auf WEITER und dann auf RICHTLINE ERSTELLLEN.

Wenn die Inaktivitätsdauer des TensorCores mehr als 24 Stunden beträgt, wird eine E-Mail an die von Ihnen angegebene E-Mail-Adresse gesendet.

Logging

Logeinträge werden von Google Cloud Diensten, Drittanbieterdiensten, ML-Frameworks oder Ihrem Code geschrieben. Sie können Logs mit der Loganzeige oder der Logs API aufrufen. Weitere Informationen zum Google Cloud -Logging finden Sie unter Google Cloud Logging.

Im Log Explorer können Sie einen Ressourcentyp auswählen:

  • Cloud TPU-Arbeiter -> Zone -> Knoten-ID
  • Geprüfte Ressource -> Cloud TPU -> API (google.cloud.tpu.v1.Tpu.CreateNode, google.cloud.tpu.v1.Tpu.DeleteNode, google.cloud.tpu.v1.Tpu.UpdateNode)

Cloud 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).

Audit-Logs für Ressourcen enthalten Informationen dazu, wann eine bestimmte Cloud TPU API aufgerufen wurde und wer den Aufruf getätigt hat. Beispiel: CreateNode, UpdateNode und DeleteNode.

ML-Frameworks können Protokolle für stdout und stderr generieren. Diese Protokolle werden über 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.

Cloud TPU-Logs ansehen

  1. Rufen Sie die Google Cloud Loganzeige
  2. Klicken Sie auf das Drop-down-Menü Ressource.
  3. Klicken Sie auf Cloud TPU-Worker.
  4. Zone auswählen
  5. Wählen Sie die gewünschte Cloud TPU aus.
  6. Klicken Sie auf Übernehmen. Protokolle werden in den Abfrageergebnissen angezeigt

So rufen Sie Logs zu geprüften Ressourcen auf:

  1. Rufen Sie die Google Cloud Loganzeige
  2. Klicken Sie auf das Drop-down-Menü Ressource.
  3. Klicken Sie auf Geprüfte Ressource und dann auf Cloud TPU.
  4. Cloud TPU API auswählen, die Sie interessieren
  5. Klicken Sie auf Übernehmen. Protokolle werden in den Abfrageergebnissen angezeigt
  6. Wählen Sie die APIs aus, die mit google.cloud.tpu.v1.Tpu beginnen.

Google Cloud Abfrageprotokolle

Wenn Sie Logs in der Google Cloud Console aufrufen, 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.

Informationen zur Log-Ausgabe für Audit-Logs für Ressourcen

Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Daraufhin wird ein Feld namens protoPayload angezeigt. Maximieren Sie protoPayload. Daraufhin werden mehrere Unterfelder angezeigt:

  • logName: der Name des Logs
  • protoPayload -> @type: der Typ des Logs
  • resourceName: der Name Ihrer Cloud TPU
  • methodName: der Name der aufgerufenen Methode (nur Audit-Logs)
  • request -> @type: Anfragetyp
  • request -> node: Details zum Cloud TPU-Knoten
  • request -> node_id: der Name der TPU
  • severity: der Schweregrad des Logs

Informationen zur Log-Ausgabe für Cloud TPU-Arbeiterprotokolle

Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Daraufhin wird ein Feld namens jsonPayload angezeigt. Maximieren Sie jsonPayload. Daraufhin werden mehrere Unterfelder angezeigt:

  • 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–350 GB)

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.

  1. Log-Explorer aufrufen
  2. 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:*
    
  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 eine Maßeinheit für den Messwert ein. Geben Sie in die Felder Name und Beschreibung die Werte „matrix_unit_utilization_percent“ und „MXU-Auslastung“ ein.

  6. Der Filter ist bereits mit dem Script ausgefüllt, das Sie im Log-Explorer eingegeben haben.

  7. Klicken Sie auf MESSWERT ERSTELLEN.

  8. Klicken Sie auf Messwerte analysieren, um den neuen Messwert aufzurufen. Es kann einige Minuten dauern, bis die Messwerte angezeigt werden.

Logbasierte Messwerte programmatisch 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 Benutzerdefinierte Dashboards verwalten und Messwertbasierte Benachrichtigungsrichtlinien erstellen.

Dashboards erstellen

So erstellen Sie in Cloud Monitoring ein Dashboard für den Messwert Tensorcore-Ruhezeit:

  1. Monitoring-Konsole öffnen
  2. Klicken Sie im Navigationsbereich auf Dashboards.
  3. Klicken Sie auf DASHBOARD ERSTELLEN und dann auf Diagramm hinzufügen.
  4. Wählen Sie den Diagrammtyp aus, den Sie hinzufügen möchten. Wählen Sie für dieses Beispiel Linie aus.
  5. Geben Sie einen Titel für das Dashboard ein.
  6. Klicken Sie auf die Schaltfläche unter Ressource und Messwert.
  7. Scrollen Sie in der Liste der Ressourcen/Messwerte nach unten und wählen Sie Cloud TPU Worker -> Tpu -> Tensorcore-Inaktivitätsdauer aus.
  8. Klicken Sie auf Anwenden.
  9. Klicken Sie auf DASHBOARDFILTER ERSTELLEN, um den Dashboardinhalt zu filtern.
  10. Legen Sie im Feld Label die project_id für Ihr Projekt fest.
  11. Klicken Sie auf HINZUFÜGEN und legen Sie für zone die Zone fest, in der Sie Ihre TPU erstellt haben.
  12. Fügen Sie einen weiteren Filter für node_id hinzu und geben Sie den Namen Ihrer Cloud TPU an.