Wartungsereignisse mit Cloud TPU Pods verwalten

Übersicht

TPU-VMs sind Instanzen von Compute Engine-VMs mit angehängter TPU-Hardware. Compute Engine-VMs unterliegen Compute Engine-VM-Wartungsereignissen. Jede TPU ist mit eine Compute Engine-VM, sodass die Nutzung von mehr TPUs (z. B. in einem TPU-Pod) zunimmt wie wahrscheinlich es ist, dass auf 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. Weitere Informationen zur Erkennung und Wiederherstellung automatischer finden Sie unter TPU-Fehler erkennen und beheben

Die Mechanismen zum Speichern und Laden von Prüfpunkten unterscheiden sich je nach ML Framework. Unterstützte Cloud TPU-Modelle haben in der Regel eine integrierte Prüfpunktausführung. Weitere Informationen zur Prüfpunktausführung finden Sie unter : TensorFlow 2.x, PyTorch oder JAX/flax.

Wartungsereignisse erkennen

Mit dem Befehl den folgenden gcloud describe-Befehl:

$ 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. Die Ausgabe sollte in etwa so aussehen:

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

Wartungsereignislogs

Sie können sich historische Logs von Wartungsereignissen auf Ihrer TPU in den Audit-Logs zu Systemereignissen ansehen.

Klicken Sie im Navigationsmenü der Google Cloud Console auf Compute Engine > VM-Instanzen und suchen Sie zum Beispiel nach:

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

Unterbrechungen und Reparaturen Ihrer TPU-Worker innerhalb Ihres Suchzeitraums angezeigt werden. In den Protokollen sind das Datum und die Uhrzeit des Ereignisses, die Art des Ereignisses und für „beenden“ Ereignisse, der Grund für die Kündigung in protoPayload.metadata.terminateReason

Wartungsereignisse verarbeiten

Es gibt mehrere Möglichkeiten, Unterbrechungen von Wartungsereignissen zu minimieren.

  1. Prüfpunkte regelmäßig speichern

    Im Idealfall, wenn ein „Unterbrechungsereignis“ passiert, das Training ab dem letzten Prüfpunkt fortgesetzt wird.

  2. 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 die Schulung abgeschlossen ist. Jeder Wiederholungsversuch sollte vom letzten Prüfpunkt aus fortgesetzt werden. Daher sollten Wiederholungsskripts immer in Verbindung mit Prüfpunkten verwendet werden.

    Produktionsfertige Schulungspipelines sollten ein Ressourcenverwaltungssystem verwenden wie Google Kubernetes Engine (GKE). Weitere Informationen zur Verwendung Google Kubernetes Engine mit TPU-VMs finden Sie unter TPU-Arbeitslasten bereitstellen. Sie können ein bash-Skript implementieren, um den bis sie abgeschlossen ist. Beispiel:

    while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 [training command]"; do sleep 1; done
    
  3. TPU-Fehler erkennen und davon wiederherstellen

    Wenn eine TPU nach einem Wartungsereignis nicht wiederhergestellt werden kann, können Sie eine Wiederherstellung Skript zum Erkennen des TPU-Status und zum Löschen und Neuerstellen der TPU. Beispiel dieses Skripts finden Sie hier. Weitere Informationen finden Sie unter TPUs verwalten. das manuelle Löschen und Neuerstellen von TPUs.

    Beim Erstellen oder Neuerstellen einer TPU-VM können Sie ein Startskript mit Der --metadata startup-script-Parameter. Ein Startskript wird jedes Mal ausgeführt, TPU-VM erstellt wird. Weitere Informationen finden Sie unter Standardinstallationsskripts ausführen .