Auf Wartungsereignisse vorbereiten

TPU-VMs sind Instanzen von Compute Engine-VMs mit angehängter TPU-Hardware. Compute Engine-VMs unterliegen den VM-Wartungsereignissen der Compute Engine. Jede TPU ist mit einer Compute Engine-VM verbunden. Wenn Sie also mehr TPUs verwenden (z. B. in einem TPU-Pod), erhöht sich die Wahrscheinlichkeit, dass bei einer Ihrer VMs ein Wartungsereignis auftritt.

In diesem Dokument werden Ansätze zur Verarbeitung von Wartungsereignissen für lang andauernde Trainingsjobs auf Cloud TPUs erläutert. Informationen zum Umgang mit Wartungsereignissen für TPUs in der Google Kubernetes Engine (GKE) finden Sie unter GKE-Knotenunterbrechungen für GPUs und TPUs verwalten.

Benachrichtigungen zu anstehenden Wartungen ansehen

Sie können sich Benachrichtigungen zu anstehenden Hostwartungen anzeigen lassen. Durch Überwachung der anstehenden Wartungsfenster Ihrer Instanz können Sie Ihre Arbeitslasten proaktiv darauf vorbereiten, die bevorstehende Wartung mit minimalen Unterbrechungen abzuwickeln. Weitere Informationen finden Sie unter Wartungsbenachrichtigungen aufrufen.

Prüfpunkte für eine schnelle Wiederherstellung nach Wartungsereignissen verwenden

Prüfpunkte sind der Schlüssel zu kurzen Wiederherstellungen nach Wartungsereignissen und sollten häufig gespeichert werden. Als Faustregel gilt, dass Prüfpunkte etwa stündlich gespeichert werden. Wenn Sie nicht oft genug Prüfpunkte speichern, besteht das Risiko, dass viele Trainingsfortschritte aufgrund von Wartungsereignissen oder anderen Trainingsunterbrechungen verloren gehen.

.

Prüfpunkte beziehen sich im Allgemeinen auf alle gespeicherten Parameter, die für das Training verwendet werden, z. B. Modellgewichte. Die Zeit zum Speichern eines Prüfpunkts kann zwischen Sekunden und einigen Minuten liegen.

Obwohl TPUs nach den meisten Wartungsereignissen automatisch wiederhergestellt werden und Trainingsjobs ohne manuelles Eingreifen fortgesetzt werden, kann es in Grenzfällen vorkommen, dass der Job nicht neu gestartet und automatisch fortgesetzt wird. In diesem Fall müssen Sie die TPU-Ressourcen löschen und neu erstellen und den Trainingsjob von einem gespeicherten Prüfpunkt aus neu starten. Informationen zum Erkennen von und Wiederherstellen nach automatischen Wiederherstellungsfehlern finden Sie unter Erkennung von und Wiederherstellung nach TPU-Fehlern.

Für jedes ML-Framework gibt es unterschiedliche Mechanismen zum Speichern und Laden von Prüfpunkten. Unterstützte Cloud TPU-Modelle haben im Allgemeinen eine Prüfpunktausführung. Weitere Informationen zum Checkpointing finden Sie unter TensorFlow 2.x, PyTorch oder JAX/flax.

Autocheckpoint verwenden

Sie können die Funktion „Autocheckpoint“ verwenden, um den Trainingsfortschritt zu erhalten. Konfigurieren Sie dazu Ihren Code so, dass ein nicht geplanter Checkpoint gespeichert wird, wenn ein Wartungsereignis auftritt. Weitere Informationen zu Autocheckpoints finden Sie unter Cloud TPU-Autocheckpoint.

Trainingsskript noch einmal ausführen

Das Trainingsskript kann aufgrund eines Unterbrechungsereignisses beendet werden. Sie können ein bash-Skript verwenden, um das Trainingsskript kontinuierlich zu wiederholen, bis das Training abgeschlossen ist. Beispiel:

while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done

Jeder Wiederholungsversuch sollte vom letzten Prüfpunkt aus fortgesetzt werden. Daher sollten Wiederholungsskripts immer in Verbindung mit Prüfpunkten verwendet werden.

Produktionsreife Trainingspipelines sollten ein Ressourcenverwaltungssystem wie die Google Kubernetes Engine (GKE) verwenden. Weitere Informationen zur Verwendung der Google Kubernetes Engine mit TPU-VMs finden Sie unter TPU-Arbeitslasten bereitstellen.

TPU-Fehler erkennen und davon wiederherstellen

Wenn eine TPU nicht von einem Wartungsereignis wiederhergestellt wird, können Sie ein TPU-Wiederherstellungsskript verwenden, um den TPU-Status zu erkennen und die TPU zu löschen und neu zu erstellen. Ein Beispiel für ein Wiederherstellungsskript finden Sie unter retry.sh. Wenn der Prozess, in dem das Trainingsskript ausgeführt wird, abstürzt, können Sie das Wiederherstellungsskript so ändern, dass das Trainingsskript noch einmal ausgeführt wird.

Informationen zum manuellen Löschen und Neuerstellen einer TPU finden Sie unter TPU-Ressourcen verwalten.

Zeitplan für die Datenerhebung verwenden

Cloud TPU bietet das Konzept des Sammlungsplanung. Dabei stehen zwei Arten von Sammlungen zur Verfügung, mit denen Kunden entweder Trainings- oder Bereitstellungs- und Inferenzarbeitslasten unterstützen können. Wenn Sie diese Funktion zum Bereitstellen Ihrer Cloud TPU-Instanzen verwenden, wendet Google Cloud individuelle Wartungszeitpläne an, die am besten zur Anwendung passen. Für jeden Sammlungstyp gilt Folgendes:

  • Training (Standard): Dieser Sammlungstyp eignet sich für typische Trainingsarbeitslasten, bei denen für alle Instanzen eine minimale Ausfallzeit und nur wenige unerwartete Unterbrechungen erforderlich sind, damit der Dienst bei Wartungsereignissen schnell wiederhergestellt werden kann. Der Typ „Trainingssammlung“ ermöglicht die parallele Planung und Ausführung von Wartungsereignissen für eine Gruppe von Instanzen.

  • Bereitstellung (verfügbar mit --workload-type=AVAILABILITY_OPTIMIZED): Dieser Erhebungstyp eignet sich für die meisten Bereitstellungs- oder Inferenzlasten, bei denen für eine Teilmenge von Instanzen (Repliken) eine minimale Ausfallzeit erforderlich ist, um die Dienstkontinuität auch bei Wartungsereignissen zu gewährleisten. Der Typ „Dienstbereitstellung“ ermöglicht eine gestaffelte Planung und Ausführung von Wartungsereignissen für eine Gruppe von Instanzen. Die Angabe einer Bereitstellungssammlung wird nur auf TPU v6e unterstützt.

Weitere Informationen zum Planen von Datenerhebungen finden Sie unter Datenerhebung planen.

Wartungsereignisse erkennen

Mit dem folgenden gcloud compute tpus tpu-vm describe-Befehl können Sie erkennen, ob und wann ein Wartungsereignis auf Ihrer TPU aufgetreten ist:

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

Die Ausgabe dieses Befehls enthält den aktuellen Status der TPU und eine Beschreibung des letzten Wartungsereignisses. Die Ausgabe sollte in etwa so aussehen:

health: HEALTHY
healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z

Wartungsereignisprotokolle ansehen

In den Audit-Logs zu Systemereignissen finden Sie Verlaufsprotokolle zu Wartungsereignissen auf Ihrer TPU.

  1. Rufen Sie im Navigationsmenü der Google Cloud Console die Seite „Log-Explorer“ auf:

    Zum Log-Explorer

  2. Mit der folgenden Suchanfrage können Sie alle TPUs aufrufen, die beendet oder neu gestartet wurden:

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    Die Ergebnisse enthalten Protokolle zu Unterbrechungen und Reparaturen Ihrer TPU-Worker im angegebenen Zeitraum. Die Protokolle enthalten Folgendes:

    • Datum und Uhrzeit des Ereignisses
    • Ereignistyp
    • Bei „terminate“-Ereignissen der Grund für die Beendigung im Feld protoPayload.metadata.terminateReason

Nächste Schritte