Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erkennung eines hängenden Jobs
Distributed Ray Train-Jobs können ins Stocken geraten, ohne dass ein Fehler auftritt. Ein einzelner Arbeiter versagt lautlos, und jeder andere Arbeiter blockiert beim nächsten kollektiven Vorgang und wartet auf unbestimmte Zeit. GPUs werden weiterhin mit geladenen Modellgewichten zugewiesen, liefern aber keine brauchbaren Berechnungen. Da es keine Fehlermeldung oder keinen Absturz gibt, bleibt der Stillstand oft stundenlang unbemerkt, bis jemand den Auftragsfortschritt manuell überprüft.
HyperPod Bei der Erkennung hängender Jobs werden kontinuierlich die GPU-Auslastungsmuster überwacht und die Aktivitäten der Mitarbeiter in Ihrem Cluster geschult, um Jobs zu identifizieren, bei denen der Fortschritt unterbrochen wurde. Wenn ein Stillstand erkannt wird, meldet das System ihn innerhalb von Minuten statt Stunden, sodass Sie den Job wiederherstellen oder die Kapazität für andere Aufgaben freigeben können.
Funktionsweise
Standardmäßig werden alle Ray Train-Mitarbeiter anhand der Plattformstandards überwacht, ohne dass Codeänderungen erforderlich HyperPod sind. Die Plattform korreliert die GPU-Auslastungsmuster mit der Trainingsaktivität der Mitarbeiter, um zwischen einem Job, der inaktiv ist, weil er ins Stocken geraten ist, und einem Job, der inaktiv ist, weil er gerade ausgeführt wird oder Checkpoints durchführt I/O , zu unterscheiden. Wenn ein Stillstand festgestellt wird, wird eine Benachrichtigung an Ihr HyperPod Observability Grafana-Dashboard gesendet und. CloudWatch Weitere Informationen finden Sie unter Erkennungsereignisse anzeigen.
Die Standardaktion ist benachrichtigen: HyperPod protokolliert das Erkennungsereignis, beendet den Job jedoch nicht. Um die automatische Wiederherstellung zu aktivieren, konfigurieren Sie benutzerdefinierte Regeln mit der cancel Aktion, wie im folgenden Abschnitt beschrieben.
Wenn Sie benutzerdefinierte Erkennungsregeln konfigurieren, ersetzen sie die Standarderkennung für diesen Job. Die Aktion, die Sie in Ihrer benutzerdefinierten Konfiguration angeben, gilt für alle Erkennungen aus Ihren benutzerdefinierten Regeln. Die Standarderkennung wird weiterhin für jeden Job ausgeführt, für den keine benutzerdefinierten Regeln konfiguriert sind.
Konfiguration benutzerdefinierter Erkennungsregeln
Für mehr Kontrolle über das Erkennungsverhalten können Sie Protokollmusterregeln mit konfigurierbaren Timeouts und Aktionen definieren. Mithilfe benutzerdefinierter Regeln können Sie domänenspezifische Blockierungen (z. B. 10 Minuten lang keine neue Protokollzeile für einen Trainingsschritt) oder Fehlerbedingungen (z. B. OOM) erkennen und auswählen, ob der festgestellte Arbeiter benachrichtigt oder automatisch storniert HyperPod werden soll.
Folgen Sie diesen Schritten, um benutzerdefinierte Erkennungsregeln zu aktivieren.
-
Fügen Sie Ihrem RayCluster Manifest die Host-IP-Umgebungsvariable hinzu
Fügen Sie sowohl als auch
headGroupSpecworkerGroupSpecsin Ihrer RayCluster YAML die folgende Umgebungsvariable hinzu. Dadurch kann die Python-Bibliothek, die im Trainingscontainer ausgeführt wird, mit dem Jobüberwachungsdienst auf dem Host kommunizieren.spec: headGroupSpec: template: spec: containers: - name: ray-head env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP workerGroupSpecs: - template: spec: containers: - name: ray-worker env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIPAnmerkung
Diese Umgebungsvariable ist nur für benutzerdefinierte Erkennungsregeln erforderlich. Die Standarderkennung funktioniert auch ohne sie.
-
Installieren Sie die Toolkit-Bibliothek in Ihrem Training-Container-Image
Fügen Sie das Paket toolkit-for-ray-on-sagemaker-ai von der PyPI-Website zu Ihrem Training-Container-Image
hinzu. Die Bibliothek ist in Distribution Images SageMaker vorinstalliert. pip install toolkit-for-ray-on-sagemaker-ai -
Erweitern Sie Ihre Trainingsfunktion um Überwachung
Rufen Sie
SageMakerLogMonitoring.start()Ihre Trainingsfunktion an, bevor Sie eine sinnvolle Arbeit verrichten. Dadurch wird sichergestellt, dass die Überwachung von Beginn des Trainings an aktiv ist und Verzögerungen beim Laden des Modells oder beim ersten Vorwärtsdurchlauf erkannt werden können.from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) from ray.train import RunConfig, FailureConfig, ScalingConfig from ray.train.torch import TorchTrainer def train_func(): # Start monitoring BEFORE any meaningful work SageMakerLogMonitoring(config=LogMonitorConfig( enabled=True, rules=[ { "name": "training_progress", "type": "log_pattern", "enabled": True, "log_pattern": "(Epoch|Step|Iteration) \\d+", "timeout_minutes": 10, "start_timeout_minutes": 30, "stop_pattern": "Training complete", "fault_on_match": False, }, { "name": "oom_detection", "type": "log_pattern", "enabled": True, "log_pattern": "CUDA out of memory|OutOfMemoryError|OOM", "fault_on_match": True, }, ], action="cancel", )).start() # ... your training loop for epoch in range(num_epochs): print(f"Epoch {epoch}") # This output is what the rule monitors train_one_epoch(model, dataloader) print("Training complete") # Matches stop_pattern, deactivates the rule # Configure FailureConfig so Ray Train automatically restarts all workers # when the cancel action terminates a hung worker. trainer = TorchTrainer( train_func, scaling_config=ScalingConfig(num_workers=4, use_gpu=True), run_config=RunConfig( failure_config=FailureConfig(max_failures=3), ), )Wenn die
cancelAktion dazu führt, dass ein Arbeiter nicht mehr reagiert, erkennt Ray FailureConfigTrain in der Ray-Dokumentation den Ausfall des Workers und startet alle Arbeiter vom letzten Checkpoint aus neu. Stellen Sie max_failuresdie Anzahl der automatischen Wiederherstellungsversuche ein, die Sie benötigen, bevor der Job dauerhaft fehlschlägt.FailureConfigAndernfalls schlägt eine einzige Kündigung des Mitarbeiters den gesamten Auftrag fehl.Da Ray Train beim Neustart die Daten vom zuletzt gespeicherten Checkpoint wiederherstellt, geht kein Trainingsfortschritt verloren, der über die Arbeit seit dem letzten Checkpoint hinausgeht. Wenn Ihr Trainingscode regelmäßig Checkpoints speichert (z. B. an jeder Epochengrenze), wird der Job automatisch vom zuletzt gespeicherten Status aus fortgesetzt.
Regelfelder
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
name |
Zeichenfolge | Ja | Human-readable Bezeichner für die Regel. |
type |
Zeichenfolge | Ja | Regeltyp . Wird log_pattern für die protokollbasierte Erkennung verwendet. |
enabled |
bool | Nein | Ob diese Regel aktiv ist. Standardeinstellung: false. |
log_pattern |
Zeichenfolge | Ja | Regex-Muster, das in Worker Stdout abgeglichen werden soll (RE2-Syntax, maximal 256 Zeichen). |
timeout_minutes |
float | Nein | Maximale Anzahl von Minuten zwischen aufeinanderfolgenden Musterübereinstimmungen, bevor ein Hängenbleiben gemeldet wird. |
start_timeout_minutes |
float | Nein | Maximale Anzahl von Minuten ab Jobstart für die erste Musterübereinstimmung. Nützlich, um die Startzeit einzuplanen (Modell laden, Daten herunterladen). Wenn das Muster in diesem Fenster nicht angezeigt wird, gilt der Job als hängend. |
stop_pattern |
Zeichenfolge | Nein | Regex, das diese Regel deaktiviert, wenn eine Übereinstimmung gefunden wird (z. B.). "Training complete" |
fault_on_match |
bool | Nein | Wenntrue, deklariert sofort einen Hang, wenn das Muster übereinstimmt. Wird für Fehlermuster wie OOM verwendet. Wanntrue, timeout_minutes ist nicht erforderlich. |
metric_evaluation_data_points |
int | Nein | Anzahl aufeinanderfolgender Testzyklen, bei denen der Zustand bestätigt werden muss, bevor eine Sperrung gemeldet wird. Standardeinstellung: 1. |
Aktionen
| Action | Description |
|---|---|
notify |
Sendet ein Erkennungsereignis an CloudWatch und Grafana, ergreift aber keine automatische Aktion. Das ist die Standardeinstellung. |
cancel |
Beenden Sie den Prozess „Hunt Worker“. Die eingebaute Funktion von Ray Train FailureConfig startet alle Worker vom letzten Checkpoint aus neu. Um diese Aktion zu verwenden, konfigurieren Sie es FailureConfig mit ausreichend Wiederholungsversuchen in Ihrem. RunConfig |
Deaktivierung der Erkennung
Gehen Sie wie folgt vor, um alle festgefahrenen Jobs für einen bestimmten Job zu deaktivieren, einschließlich der Standarderkennung und aller benutzerdefinierten Regeln:
from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) def train_func(): SageMakerLogMonitoring(config=LogMonitorConfig(enabled=False)).start() # ... training continues with no monitoring
Erkennungsereignisse anzeigen
Wenn ein hängengebliebener Job erkannt wird, wird das Ereignis an den folgenden Stellen angezeigt:
-
CloudWatch Protokolle: Protokollgruppe
/aws/sagemaker/Clusters/, Protokollstreamcluster-name/cluster-idSageMakerHangJobDetectionEvents/. Suchen Sie nachinstance-group-name/instance-idHANG_DETECTED, um Erkennungsereignisse zu finden. -
Grafana: Wenn das HyperPod Observability-Add-on installiert ist, werden Erkennungsereignisse im Ray Train-Dashboard unter dem Fenster zur Erkennung hängender Jobs angezeigt. Weitere Informationen finden Sie unter Beobachtbarkeit.
Jedes Erkennungsereignis umfasst die Job-ID, die Beweise, die die Erkennung ausgelöst haben, und die ergriffene (notifyodercancel) Aktion.