Cloud TPU-Knoten überwachen

In dieser Anleitung wird erläutert, wie Sie Ihre Cloud TPU-Knoten 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 verwendet werden, um den Zustand Ihrer Cloud TPU und der Compute Engine zu überwachen.

Mit Messwerten können Sie eine numerische Menge im Zeitverlauf verfolgen, z. B. die CPU-, Netzwerk- oder MXU-Auslastung. In Logs 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 Messwerte auch 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 und Sie erfahren, wie Sie:

  • Cloud TPU-Messwerte ansehen
  • Benachrichtigungsrichtlinien für Cloud TPU-Messwerte 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 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 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

Mit dem Messwert cpu/utilization wird die aktuelle CPU-Auslastung auf dem Cloud TPU-Worker in Prozent erfasst. Die Werte liegen in der Regel zwischen 0,0 und 100,0, können aber auch über 100,0 liegen. Die Stichprobenerhebung erfolgt alle 60 Sekunden. Es kann bis zu 180 Sekunden dauern, bis ein Wert generiert und angezeigt wird.

Arbeitsspeichernutzung

Der Messwert memory/usage erfasst den aktuell von der Cloud TPU-VM verwendeten Arbeitsspeicher in Byte. Dieser Messwert wird alle 60 Sekunden erfasst. 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 verfolgt die Anzahl der kumulativen Byte an Daten, 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 verfolgt die Anzahl der kumulativen Byte, 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.

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 Inaktivitätsdauer auf null zurückgesetzt. Wenn TensorCore nicht mehr verwendet wird, steigt der Wert für die Inaktivitätsdauer.

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

Image

MXU-Auslastung

Der Messwert tpu/mxu/utilization verfolgt die aktuelle MXU-Auslastung auf dem TPU-Worker, dargestellt als Prozentsatz. Üblicherweise sind dies Zahlen zwischen 0,0 und 100,0. Die Stichprobenerhebung erfolgt alle 60 Sekunden. Nach der Stichprobenerhebung 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 ansehen.

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 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 im Abschnitt Anfragetext eine Abfrage hinzu. Im Folgenden finden Sie eine Beispielabfrage zum Abrufen des Messwerts „Dauer der Inaktivität“ 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 Referenzdokument zur Monitoring Query Language.

Sie können Benachrichtigungsrichtlinien erstellen, die Google Cloud Monitoring anweisen, eine Benachrichtigung zu senden, wenn eine Bedingung erfüllt ist.

Alerts erstellen

Die Schritte in diesem Abschnitt zeigen anhand eines Beispiels, wie Sie eine Benachrichtigungsrichtlinie für den Messwert TensorCore Idle Duration hinzufügen. 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 NEUES 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 Inaktivitätsdauer von Tensorcore aus und klicken Sie auf ANWENDEN.
  8. Klicken Sie auf WEITER und dann auf Schwellenwert.
  9. Wählen Sie unter Auslöser für Benachrichtigung die Option Bei jedem Verstoß aus.
  10. Wählen Sie für Grenzwertposition die Option Über dem Grenzwert aus.
  11. Geben Sie 86400000 als Schwellenwert ein.
  12. Klicke auf WEITER.
  13. Wählen Sie unter Benachrichtigungskanäle Ihren E-Mail-Benachrichtigungskanal aus und klicken Sie auf OK.
  14. Geben Sie einen Namen für die Benachrichtigungsrichtlinie ein
  15. Klicke 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 der Loganzeige oder der Logs API ansehen. Weitere Informationen zum Google Cloud-Logging finden Sie unter Google Cloud Logging.

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

  • Cloud TPU-Worker -> 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-Logs enthalten Informationen zu einem bestimmten Cloud TPU-Worker in einer bestimmten Zone, z. B. die Größe des auf dem Cloud TPU-Worker verfügbaren Speichers (system_available_memory_GiB).

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.

Ihr Code kann Logs in Google Cloud Logging schreiben. Weitere Informationen finden Sie unter Standardlogs schreiben und Strukturierte Logs schreiben.

Cloud TPU-Logs ansehen

  1. Zur Google Cloud-Loganzeige
  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 Logs für geprüfte Ressourcen auf:

  1. Zur 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. Gewünschte Cloud TPU API auswählen
  5. Klicken Sie auf Anwenden. Logs werden in den Abfrageergebnissen angezeigt
  6. Wählen Sie die APIs aus, die mit google.cloud.tpu.v1.Tpu beginnen

Google Cloud-Logs abfragen

Wenn Sie Logs in der Google Cloud Console aufrufen, wird auf der Seite eine Standardabfrage ausgeführt. 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.

Erläuterungen zur Logausgabe für Logs zu geprüften Ressourcen

Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Daraufhin wird das Feld protoPayload angezeigt. Wenn Sie protoPayload maximieren, sehen Sie eine Reihe von untergeordneten Feldern:

  • 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
  • request -> node: Details zum Cloud TPU-Knoten
  • request -> node_id: der Name der TPU
  • severity: Die Wichtigkeitsstufe des Logs

Erläuterungen zur Logausgabe für Cloud TPU-Worker-Logs

Klicken Sie auf einen Logeintrag, um ihn zu maximieren. Daraufhin wird das Feld jsonPayload angezeigt. Wenn Sie jsonPayload maximieren, sehen Sie eine Reihe von untergeordneten Feldern:

  • 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 Arbeitsspeicher des Cloud TPU-Workers (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 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 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 "matrix_unit_utilization_percent" und "MXU-Auslastung" in die Felder Name und Beschreibung 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 programmatisch erstellen

Sie können auch über die Cloud Logging API logbasierte Messwerte 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 Benutzerdefinierte Dashboards verwalten und Messwertbasierte Benachrichtigungsrichtlinien erstellen.

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 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. Titel für das Dashboard eingeben
  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 -> Dauer der Tensorcore-Inaktivität aus.
  8. Klicken Sie auf Anwenden.
  9. Klicken Sie auf DASHBOARD-FILTER ERSTELLEN, um Dashboard-Inhalte zu filtern.
  10. Legen Sie im Feld Label für project_id Ihr Projekt fest.
  11. Klicken Sie auf HINZUFÜGEN und legen Sie als Zone die Zone fest, in der Sie die TPU erstellt haben.
  12. Fügen Sie einen weiteren Filter für node_id hinzu und geben Sie Ihren Cloud TPU-Namen an