Informationen zum benutzerdefinierten Trainingsdienst

Auf dieser Seite wird der Status eines Trainingsclusters im Lebenszyklus eines Trainingsjobs erläutert und erklärt, wie Vertex AI mit Trainingsfehlern verfährt. Sie können diese Informationen verwenden, um den Trainingscode entsprechend anzupassen.

Lebenszyklus eines Trainingsjobs

In diesem Abschnitt wird erläutert, wie Vertex AI Worker-VMs durch den Lebenszyklus eines Trainingsjobs verarbeitet.

Neuen Job in die Warteschlange stellen

Wenn Sie einen CustomJob oder HyperparameterTuningJob erstellen, verbleibt der Job möglicherweise noch einige Zeit im Status JOB_STATE_QUEUED, bevor er von Vertex AI ausgeführt wird. Dieser Zeitraum ist in der Regel nicht lang. Wenn Ihr Google Cloud-Projekt jedoch nicht genügend verbleibende benutzerdefinierte Trainingskontingente für Ihren Job hat, wird er von Vertex AI in die Warteschlange gestellt, bis Sie ausreichend Kontingente haben.

Worker parallel starten

Wenn ein Trainingsjob gestartet wird, plant Vertex AI so viele Worker wie möglich in einem kurzen Zeitraum. Das bedeutet, dass Worker parallel und nicht nacheinander ausgeführt werden können. Zur Verringerung der Startlatenz startet Vertex AI die Ausführung Ihres Codes auf jedem Worker, sobald er verfügbar ist. Wenn alle Worker verfügbar sind, setzt Vertex AI den Jobstatus auf JOB_STATE_RUNNING.

In den meisten Fällen verarbeitet Ihr ML-Framework automatisch die Worker, die parallel gestartet werden. Wenn Sie eine Trainingsstrategie in Ihrem Trainingscode verwenden, müssen Sie diese unter Umständen manuell anpassen, um die Worker zu verarbeiten, die parallel gestartet werden. Weitere Informationen zu Verteilungsstrategien finden Sie in TensorFlow und in PyTorch.

Worker während des Trainingsjobs neu starten

Während eines Trainingsjobs kann Vertex AI Ihre Worker aus jedem Worker-Pool mit demselben Hostnamen neu starten. Das kann folgende Ursachen haben:

  • VM-Wartung: Wird bei einer VM, auf der ein Worker ausgeführt wird, eine Wartung vorgenommen, startet der Vertex AI den Worker auf einer anderen VM neu. Weitere Informationen zur Live-Migration bei der VM-Wartung.
  • Beenden ungleich null: Wenn Worker mit einem Exit-Code ungleich null beendet werden, startet Vertex AI diesen Worker auf derselben VM sofort neu.

    • Wenn ein Worker aufgrund eines häufigen Fehlers fehlschlägt, wird dieser als permanenter Fehler behandelt und der gesamte Job wird in Vertex AI heruntergefahren. Wenn Container noch einmal gestartet werden, bevor Vertex AI den gesamten Job beendet, generieren diese Container eventuell Logs in Cloud Logging.
    • Wenn ein Worker aufgrund eines nicht permanenten Fehlers, also eines Fehlers, der nicht in den häufigen Fehlern aufgeführt ist, fehlschlägt, kann der neu gestartete Worker in Vertex AI weiter ausgeführt werden, wobei bis zu fünf Neustarts pro Worker möglich sind. Wenn ein Worker nach fünf Neustarts noch einmal fehlschlägt, wiederholt Vertex AI den gesamten Job bis zu dreimal, bevor er endgültig fehlschlägt.

Speichern Sie Prüfpunkte regelmäßig während des Trainings, um Worker-Neustarts im Trainingscode zu verarbeiten, sodass beim Neustart eines Workers eine Wiederherstellung von den Prüfpunkten möglich ist. Wenn das Training voraussichtlich mehr als vier Stunden dauert, sollten Sie mindestens alle vier Stunden einen Prüfpunkt speichern. Informationen zur Verwendung von Trainingsprüfpunkten in TensorFlow und PyTorch.

Job erfolgreich abgeschlossen

Ein Trainingsjob wird erfolgreich abgeschlossen, wenn sein primäres Replikat mit Exit-Code 0 beendet wird. An diesem Punkt fährt Vertex AI alle anderen ausgeführten Worker herunter.

Wie Vertex AI mit Trainingsjobs umgeht

In diesem Abschnitt wird erläutert, wie Vertex AI häufige Trainingsjobs und interne Fehler behandelt.

Etwa eine Minute nach dem Ende eines Jobs legt Vertex AI den Fehlercode für das Trainingsjobobjekt anhand des Exit-Codes fest.

Häufig auftretende Fehler beheben

Vertex AI schaltet alle Worker herunter, wenn eines der folgenden Probleme auftritt:

Fehlertyp Fehlermeldung/Log Hinweis
Ausnahme für Nutzercode Das Replikat REPLICA_NAME wurde mit dem Status „EXIT_CODE“ ungleich null beendet. Grund für Beendigung: REASON. Wenn der Job Exit-Codes erkannt hat, die eventuell vorübergehender Natur sind, versucht Vertex AI, den Job bis zu dreimal neu zu starten. Mögliche vorübergehende Fehlercodes, die Vertex AI dazu auffordern, den Job noch einmal zu senden:
  • SIGABRT
    • ExitCode 6
    • ExitCode 134 (benutzerdefinierte Container)
  • SIGSEGV
    • ExitCode 11
    • ExitCode 139 (benutzerdefinierte Container)
Nicht genügend Arbeitsspeicher Für das Replikat REPLICA_NAME ist nicht mehr genügend Arbeitsspeicher vorhanden und es wurde mit dem Status EXIT_CODE ungleich null beendet. GKE reserviert Speicher auf Vertex AI-Knoten. Auf den kleinsten Maschinentypen (z. B. n1-standard-4) können Vertex AI-System-Agents bis zu 40% des Gesamtspeichers beanspruchen. Bei größeren VMs ist der operative Aufwand relativ gering. Vergleichen Sie den zuweisbaren Speicher für n1-standard-Maschinentypen.
Unzureichende Kapazität in Ihrer Region (Compute Engine-Verfügbarkeit) Ressourcen sind in der folgenden Region nicht ausreichend: REGION_NAME. Versuchen Sie es mit einer anderen Region oder verwenden Sie einen anderen Beschleuniger. Ein Mangel tritt auf, wenn Compute Engine die Kapazität für die ausgewählte CPU oder GPU in Ihrer Region ausgeschöpft hat. Dies hängt nicht mit Ihrem Projektkontingent zusammen. In diesem Fall versucht Vertex AI, den Job bis zu dreimal neu zu starten.

Bei Jobs, die auf A2- und A3-VMs ausgeführt werden, können Sie mit Dynamic Workload Scheduler Jobs planen, die ausgeführt werden, wenn die angeforderten GPU-Ressourcen verfügbar sind, anstatt mit einem Engpassfehler fehlzuschlagen. Weitere Informationen finden Sie unter Trainingsjobs basierend auf der Ressourcenverfügbarkeit planen.

Interne Fehler beheben

Wenn Vertex AI einen internen Fehler aufweist, wird versucht, einen Job zweimal neu zu starten (insgesamt drei Versuche). Wenn auch die Neustarts fehlschlagen, gibt Vertex AI einen internen Fehler mit der Meldung zurück: Internal error occurred for the current attempt.