Cloud TPU-VMs überwachen

In dieser Anleitung wird erläutert, wie Sie Ihre Cloud TPU-VMs mit Google Cloud Monitoring überwachen. Google Cloud Monitoring erfasst automatisch metrics und Logs aus Ihrer Cloud TPU und der zugehörigen Host-Compute Engine. Diese Daten können zur Überwachung des Zustands Ihrer Cloud TPU und Ihrer Compute Engine verwendet werden.

Mit Messwerten können Sie eine numerische Menge im Zeitverlauf verfolgen, z. B. die CPU-Auslastung, die Netzwerknutzung oder die Dauer der Inaktivität von TensorCore. Logs erfassen Ereignisse zu einem bestimmten Zeitpunkt. 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 Messwerten oder Logeinträgen festlegen.

In diesem Leitfaden wird Google Cloud Monitoring erläutert. Außerdem erfahren Sie, 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 Visualisierung 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 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

Zwischen der Generierung eines Messwerts und der Anzeige im Metrics Explorer kann es bis zu 180 Sekunden dauern.

Weitere Informationen zu TPU-bezogenen Messwerten finden Sie unter TPU-Messwerte.

Arbeitsspeichernutzung

Der Messwert memory/usage verfolgt den von der TPU-VM verwendeten Arbeitsspeicher in Byte. Dieser Messwert wird alle 60 Sekunden erfasst.

Anzahl der vom Netzwerk empfangenen Byte

Der Messwert network/received_bytes_count verfolgt die Anzahl der kumulativen Byte an Daten, 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 verfolgt die Anzahl der kumulativen Byte, die die TPU-VM zu einem bestimmten Zeitpunkt über das Netzwerk gesendet hat.

CPU-Auslastung

Der Messwert cpu/utilization verfolgt die aktuelle CPU-Auslastung auf dem TPU-Worker, angegeben als Prozentsatz, die einmal pro Minute Stichprobe wird. Die Werte liegen normalerweise zwischen 0,0 und 100,0, können aber auch größer als 100,0 sein.

TensorCore-Inaktivitätsdauer

Der Messwert tpu/tensorcore/idle_duration erfasst die Anzahl der Sekunden, die der TensorCore-Prozessor 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 Dauer der Inaktivität auf null zurückgesetzt. Wenn TensorCore nicht mehr verwendet wird, erhöht sich der Wert für die Dauer der Inaktivität.

Das folgende Diagramm zeigt den Messwert tpu/tensorcore/idle_duration für eine v2-8-TPU-VM mit einem Worker. Jeder Mitarbeiter hat vier Chips. In diesem Beispiel haben alle vier Chips dieselben Werte für tpu/tensorcore/idle_duration, sodass die Diagramme einander überlagern.

Image

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

Messwerte ansehen

Sie können Messwerte mit dem Metrics Explorer in der Google Cloud Console ansehen.

Klicken Sie im Metrics Explorer auf MESSWERT AUSWÄHLEN und suchen Sie nach TPU Worker. Wenn Nur aktive Ressourcen und Messwerte anzeigen aktiviert ist, werden nur Messwerte von aktiven Ressourcen angezeigt. Klicken Sie auf TPU-Worker, um alle verfügbaren Messwerte anzuzeigen.

Sie können auch mithilfe von curl-HTTP-Aufrufen 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 dem Abschnitt Anfragetext eine Abfrage hinzu. Mit der folgenden Beispielabfrage rufen Sie den Messwert „Dauer der Inaktivität“ für die angegebene Zone in den letzten fünf Minuten ab. 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 anzusehen.

Weitere Informationen zum Anpassen dieser Abfrage finden Sie im Referenzdokument zur Monitoring Query Language.

Sie können Benachrichtigungsrichtlinien erstellen, die Cloud Monitoring anweisen, eine Benachrichtigung zu senden, 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. Zur Monitoring-Konsole
  2. Klicken Sie im Navigationsbereich auf Benachrichtigungen.
  3. Klicke auf BENACHRICHTIGUNGSKANÄLE BEARBEITEN.
  4. Klicke unter E-Mail auf NEUE HINZUFÜGEN. Geben Sie eine E-Mail-Adresse und einen Anzeigenamen ein und klicken Sie auf SPEICHERN.
  5. Klicke auf RICHTLINIE ERSTELLEN.
  6. Klicke auf MESSWERT AUSWÄHLEN, wähle Inaktivitätsdauer von Tensorcore aus und klicke auf ANWENDEN.
  7. Klicken Sie auf WEITER und dann auf Schwellenwert.
  8. Wählen Sie für Trigger für Benachrichtigungen die Option Bei jedem Verstoß aus.
  9. Wählen Sie für Grenzwertposition die Option Über Grenzwert aus.
  10. Geben Sie unter Grenzwert den Wert 86400000 ein.
  11. Tippen Sie auf Weiter.
  12. Wählen Sie unter Benachrichtigungskanäle Ihren 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 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 ansehen. Weitere Informationen zum Google Cloud Logging finden Sie unter Google Cloud Logging.

Wählen Sie im Log-Explorer einen Ressourcentyp aus:

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

Cloud 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 (system_available_memory_GiB) verfügbaren Arbeitsspeichers.

Geprüfte Ressourcenlogs enthalten Informationen darüber, wann eine bestimmte Cloud TPU API aufgerufen wurde und von wem der Aufruf stammt. Beispiel: CreateNode, UpdateNode und DeleteNode.

ML-Frameworks können Logs in stdout und stderr generieren. Diese Logs werden von Umgebungsvariablen gesteuert und von Ihrem Trainingsskript gelesen.

Über Ihren Code können Logs in Google Cloud Logging geschrieben werden. Weitere Informationen finden Sie unter Standardlogs schreiben und Strukturierte Logs schreiben.

So rufen Sie Cloud TPU-Logs auf:

  1. Zur Loganzeige von Google Cloud
  2. Klicken Sie auf das Drop-down-Menü Ressource.
  3. Klicken Sie auf Cloud TPU Worker
  4. Zone auswählen
  5. Gewünschte Cloud TPU auswählen
  6. Klicken Sie auf Anwenden. Logs werden in den Abfrageergebnissen angezeigt

So rufen Sie geprüfte Ressourcenlogs auf:

  1. Zur Loganzeige von Google Cloud
  2. Klicken Sie auf das Drop-down-Menü Ressource.
  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. Logs werden in den Abfrageergebnissen angezeigt
  6. APIs auswählen, die mit google.cloud.tpu.v2alpha1.Tpu beginnen

Google Cloud-Logs abfragen

Wenn Sie Logs in der Google Cloud Console aufrufen, führt die Seite eine Standardabfrage aus. Sie können die Abfrage mit der Ein/Aus-Schaltfläche „Show query“ aufrufen. Sie können die Standardabfrage ändern oder eine neue erstellen. Weitere Informationen finden Sie unter Abfragen im Log-Explorer erstellen.

Geprüfte Ressourcenlogs

Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Daraufhin wird ein Feld namens protoPayload angezeigt. Maximieren Sie protoPayload. Daraufhin werden einige 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: der Anfragetyp
  • Anfrage -> Knoten: Details zum Cloud TPU-Knoten
  • request -> node_id: der Name der TPU
  • severity: Die Wichtigkeitsstufe des Logs

TPU-Worker-Logs

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

  • accelerator_type: Beschleunigertyp
  • consumer_project: das Projekt, in dem sich die Cloud TPU befindet
  • evententry_timestamp: Zeitpunkt, zu dem das Log generiert wurde
  • system_available_memory_GiB: der verfügbare Arbeitsspeicher auf dem Cloud TPU-Worker (0 ~ 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 logbasierter Messwerte finden Sie unter Logbasierte Messwerte programmatisch mit der Cloud Logging REST API erstellen.

Im folgenden Beispiel wird anhand des Unterfelds system_available_memory_GiB gezeigt, wie ein logbasierter Messwert zum Überwachen des verfügbaren Cloud TPU-Worker-Arbeitsspeichers 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 sind:

    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 den Feldern Name bzw. Beschreibung "matrix_unit_utilization_percent" und "MXU-Auslastung" ein.

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

  7. Klicken Sie auf MESSWERT ERSTELLEN.

  8. Klicken Sie auf Messwerte 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 protokollbasierten Messwerten erstellen

Dashboards sind nützlich, um Messwerte zu visualisieren (mit einer Verzögerung von ca. 2 Minuten). Benachrichtigungen sind hilfreich, um Benachrichtigungen zu senden, wenn Fehler auftreten. Weitere Informationen finden Sie unter:

Dashboards erstellen

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

  1. Zur 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 Linie aus.
  5. Titel für das Widget eingeben
  6. Klicken Sie auf das Drop-down-Menü Messwert auswählen und geben Sie „Dauer der Tensorcore-Inaktivität“ in das Filterfeld ein.
  7. Wählen Sie in der Liste der Messwerte TPU-Worker -> Tpu -> Dauer der Inaktivität für Tensorcore aus.
  8. Klicken Sie zum Filtern des Dashboard-Inhalts 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 in das Feld Wert einen Wert ein.
  11. Klicken Sie auf Anwenden.