Wartungsereignisse mit Cloud TPU Pods verwalten
Übersicht
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 verschiedene Ansätze zur Verarbeitung von Wartungsereignissen für lang andauernde Trainingsjobs auf Cloud TPUs erläutert.
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. Prüfpunkte nicht oft genug zu speichern birgt 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. Modellgewichtungen). Die Zeit zum Speichern eines Prüfpunkts kann zwischen Sekunden und einigen Minuten liegen.
Obwohl nach die meisten Wartungsereignisse automatisch wiederhergestellt wird 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.
Die Verfahren zum Speichern und Laden von Prüfpunkten unterscheiden sich je nach ML-Framework. 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.
Wartungsereignisse erkennen
Mit dem folgenden gcloud describe
-Befehl können Sie erkennen, ob und wann ein Wartungsereignis auf Ihrer TPU auftritt:
$ 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
In den Audit-Logs zu Systemereignissen finden Sie Verlaufsprotokolle zu Wartungsereignissen auf Ihrer TPU.
Klicken Sie im Navigationsmenü der Google Cloud Console auf Compute Engine > VM-Instanzen und suchen Sie beispielsweise nach:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Innerhalb des Suchzeitraums werden alle Unterbrechungen und Reparaturen Ihrer TPU-Worker angezeigt. Die Protokolle enthalten das Datum und die Uhrzeit des Ereignisses, die Art des Ereignisses und bei Ereignissen vom Typ „Beenden“ den Grund für die Beendigung in protoPayload.metadata.terminateReason
.
Wartungsereignisse verarbeiten
Es gibt mehrere Möglichkeiten, Unterbrechungen von Wartungsereignissen zu minimieren.
Prüfpunkte regelmäßig speichern
Im Idealfall wird das Training beim letzten Prüfpunkt fortgesetzt, wenn ein „Unterbrechungsereignis“ auftritt.
Wiederholungsversuche von Trainingsskripts
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. 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. Sie können ein
bash
-Skript implementieren, um das Trainingsskript kontinuierlich bis zum Trainings-Abschluss zu wiederholen. Beispiel:while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 [training command]"; do sleep 1; done
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 dieses Script finden Sie hier. Weitere Informationen zum manuellen Löschen und Neuerstellen von TPUs finden Sie unter TPUs verwalten.
Wenn Sie eine TPU-VM erstellen oder neu erstellen, können Sie mit dem Parameter
--metadata startup-script
ein Startskript angeben. Ein Startskript wird immer dann ausgeführt, wenn eine TPU-VM erstellt wird. Weitere Informationen finden Sie unter Standardinstallationsscripts ausführen.