Auf Wartungsereignisse vorbereiten
TPU-VMs sind Instanzen von Compute Engine-VMs mit angehängter TPU-Hardware. Compute Engine-VMs unterliegen den Wartungsereignissen der Compute Engine-VMs Jede TPU ist mit einer Compute Engine-VM verbunden, sodass die Verwendung von mehr TPUs (z. B. in einem TPU-Slice) die Wahrscheinlichkeit erhöht, dass eine Ihrer VMs von einem Wartungsereignis betroffen ist.
In diesem Dokument werden Ansätze zum Umgang mit Wartungsereignissen für Trainingsjobs mit langer Laufzeit auf Cloud TPUs beschrieben. Informationen zum Umgang mit Wartungsereignissen für TPUs in Google Kubernetes Engine (GKE) finden Sie unter GKE-Knotenstörung für GPUs und TPUs verwalten.
Benachrichtigungen zu anstehenden Wartungen ansehen
Sie können sich Benachrichtigungen zu anstehenden Hostwartungen anzeigen lassen. Wenn Sie die Fenster zu anstehenden Wartungen Ihrer Instanz im Auge behalten, können Sie Ihre Arbeitslasten proaktiv so vorbereiten, dass die anstehende Wartung nur minimale Störungen verursacht. Weitere Informationen finden Sie unter Wartungsbenachrichtigungen ansehen.
Prüfpunkte für eine schnelle Wiederherstellung nach Wartungsereignissen verwenden
Prüfpunkte sind entscheidend für die schnelle Wiederherstellung nach Wartungsereignissen und sollten regelmäßig gespeichert werden. Als Faustregel gilt, dass Prüfpunkte etwa einmal pro Stunde gespeichert werden sollten. Wenn Sie Prüfpunkte nicht oft genug speichern, besteht die Gefahr, dass Sie durch Wartungsereignisse oder andere Trainingsunterbrechungen viele Trainingsfortschritte verlieren.
.Prüfpunkte beziehen sich im Allgemeinen auf alle gespeicherten Parameter, die beim Training verwendet werden (z. B. Modellgewichtungen). Das Speichern eines Prüfpunkts kann zwischen einigen Sekunden und mehreren Minuten dauern.
Obwohl TPUs sich nach den meisten Wartungsmaßnahmen automatisch wiederherstellen und Trainingsaufträge ohne manuelles Eingreifen fortgesetzt werden, kann es in Ausnahmefällen vorkommen, dass der Auftrag nicht neu gestartet und nicht 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 darüber, wie Sie Fehler bei der automatischen Wiederherstellung erkennen und beheben können, finden Sie unter TPU-Fehler erkennen und beheben.
Für jedes ML-Framework gibt es unterschiedliche Mechanismen zum Speichern und Laden von Prüfpunkten. Unterstützte Cloud TPU-Modelle haben in der Regel eine integrierte Prüfpunktfunktion. Weitere Informationen zu Prüfpunkten finden Sie unter TensorFlow 2.x, PyTorch oder JAX/flax.
Autocheckpoint verwenden
Mit der Funktion Autocheckpoint können Sie den Trainingsfortschritt erhalten. Dafür konfigurieren Sie Ihren Code so, dass bei Auftreten eines Wartungsereignis ein nicht geplanter Prüfpunkt gespeichert wird. Weitere Informationen zu Autocheckpoint finden Sie unter Cloud TPU Autocheckpoint.
Trainingsscript wiederholen
Es kann vorkommen, dass das Trainingsscript aufgrund einer Unterbrechung angehalten wird.
Mit einem bash
-Script können Sie das Trainingsscript so lange 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 erneute Versuch sollte vom letzten Prüfpunkt aus fortgesetzt werden, daher sollten Sie Wiederholungsscripts immer in Verbindung mit Prüfpunkten verwenden.
Produktionsreife Trainingspipelines sollten ein Ressourcenverwaltungssystem wie Google Kubernetes Engine (GKE) verwenden. Weitere Informationen zur Verwendung von Google Kubernetes Engine mit TPU-VMs finden Sie unter TPU-Arbeitslasten bereitstellen.
TPU-Fehler erkennen und beheben
Wenn eine TPU nach einer Wartungsmaßnahme nicht wiederhergestellt werden kann, können Sie mit einem Wiederherstellungsscript den Status der TPU erkennen sowie die TPU löschen und neu erstellen. Ein Beispiel für ein Wiederherstellungsscript finden Sie unter retry.sh. Wenn der Prozess, bei dem das Trainingsskript ausgeführt wird, abstürzt, können Sie das Wiederherstellungsscript so ändern, dass die Ausführung des Trainingsskripts noch einmal versucht wird.
Informationen zum manuellen Löschen und Neuerstellen einer TPU finden Sie unter TPU-Ressourcen verwalten.
Die Planungsoption für Sammlungen nutzen
Cloud TPU bietet das Konzept der Sammlungsplanung mit zwei Arten von Sammlungen, die Kunden zur Unterstützung von Trainings- oder Serving- und Inferenz-Arbeitslasten verwenden können. Wenn Sie dieses Funktion zum Bereitstellen Ihrer Cloud TPU-Instanzen verwenden, nutzt Google Cloud spezielle Wartungspläne, die am besten zur Anwendung passen. Von den einzelnen Sammlungstypen können Sie folgende Verhaltensweisen erwarten:
Training (Standard): Dieser Sammlungstyp eignet sich für typische Trainingsarbeitslasten, bei denen Sie minimale Ausfallzeiten für alle Instanzen und nur begrenzte unerwartete Unterbrechungen benötigen, um Ihren Dienst während Wartungsereignissen schnell wiederherzustellen. Der Sammlungstyp „Training“ bietet parallele Planung und Ausführung von Wartungsereignissen für eine Gruppe von Instanzen.
Bereitstellung (über
--workload-type=AVAILABILITY_OPTIMIZED
verfügbar): Dieser Sammlungstyp eignet sich für die meisten Serving- oder Inferenz- Arbeitslasten, bei denen Sie minimale Ausfallzeiten für eine Teilmenge von Instanzen (Replikate) benötigen, um die Kontinuität des Dienstes auch während Wartungsereignissen sicherzustellen. Der Sammlungstyp „Serving“ ermöglicht gestaffelte Planung und Ausführung von Wartungsereignissen für eine Gruppe von Instanzen. Die Angabe einer Serving-Sammlung wird nur für TPU v6e unterstützt.
Weitere Informationen zur Planung von Sammlungen finden Sie unter TPU-Sammlungen für Inferenzarbeitslasten planen.
Wartungsereignisse erkennen
Sie können mit dem folgenden Befehl gcloud compute tpus tpu-vm
describe
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 zeigt den aktuellen Status der TPU und eine Beschreibung des letzten Wartungsereignisses an. Die Ausgabe sollte in etwa so aussehen:
health: HEALTHY healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z
Wartungsereignis-Logs ansehen
Sie können sich in den Audit-Logs zu Systemereignissen die historischen Logs der Wartungsereignisse auf Ihrer TPU anzeigen lassen.
Rufen Sie über das Navigationsmenü der Google Cloud Console die Seite „Log-Explorer“ auf:
Verwenden Sie die folgende Suchanfrage, um alle TPUs aufzurufen, die beendet oder neu gestartet wurden:
"tpu.nodes.terminate" OR "tpu.nodes.restart"
Die Ergebnisse zeigen Logs für alle Unterbrechungen und Reparaturen Ihrer TPU-Worker innerhalb Ihres Suchzeitraums an. Die Logs enthalten:
- Datum und Uhrzeit des Ereignisses
- Art des Ereignisses
- Bei „terminate“-Ereignissen den Grund für die Beendigung im Feld
protoPayload.metadata.terminateReason