View a markdown version of this page

Rilevamento dei lavori sospesi - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Rilevamento dei lavori sospesi

I lavori di Distributed Ray Train possono bloccarsi senza generare errori. Un singolo lavoratore fallisce silenziosamente e ogni altro lavoratore si blocca alla successiva operazione collettiva, aspettando all'infinito. Le GPU rimangono allocate con i pesi del modello caricati ma non producono alcun calcolo utile. Poiché non viene visualizzato alcun messaggio di errore o arresto anomalo, lo stallo spesso passa inosservato per ore fino a quando qualcuno non controlla manualmente l'avanzamento del lavoro.

HyperPod hung job detection monitora continuamente i modelli di utilizzo della GPU e forma l'attività dei lavoratori all'interno del cluster per identificare i job che hanno smesso di fare progressi. Quando viene rilevato uno stallo, il sistema lo risolve nel giro di pochi minuti anziché ore, in modo da poter ripristinare il lavoro o liberare la capacità da dedicare ad altre attività.

Come funziona

Per impostazione predefinita, tutti i lavoratori di Ray Train su Ray Train HyperPod vengono monitorati utilizzando le impostazioni predefinite della piattaforma senza richiedere modifiche al codice. La piattaforma mette in correlazione i modelli di utilizzo della GPU con l'attività di formazione dei lavoratori per distinguere tra un lavoro inattivo perché bloccato e uno inattivo perché in esecuzione o sottoposto a checkpoint. I/O Quando viene rilevato uno stallo, viene inviata una notifica alla dashboard di Observability Grafana e. HyperPod CloudWatch Per ulteriori informazioni, consulta Visualizzazione degli eventi di rilevamento.

L'azione predefinita è notify: HyperPod registra l'evento di rilevamento ma non termina il job. Per abilitare il ripristino automatico, configura le regole personalizzate con l'cancelazione descritta nella sezione seguente.

Quando configuri le regole di rilevamento personalizzate, queste sostituiscono il rilevamento predefinito per quel processo. L'azione specificata nella configurazione personalizzata si applica a tutti i rilevamenti delle regole personalizzate. Il rilevamento predefinito continua a essere eseguito per qualsiasi processo che non configura regole personalizzate.

Configurazione delle regole di rilevamento personalizzate

Per un maggiore controllo sul comportamento di rilevamento, puoi definire regole del modello di registro con timeout e azioni configurabili. Le regole personalizzate consentono di rilevare gli stalli specifici del dominio (ad esempio, nessuna nuova riga di registro della fase di formazione per 10 minuti) o le condizioni di errore (ad esempio, OOM) e di scegliere se notificare o HyperPod annullare automaticamente il lavoratore sospeso.

Segui questi passaggi per abilitare le regole di rilevamento personalizzate.

  1. Aggiungi la variabile di ambiente IP host al tuo RayCluster manifest

    Aggiungi la seguente variabile di ambiente a entrambi headGroupSpec e workerGroupSpecs nel tuo RayCluster YAML. Ciò consente alla libreria Python in esecuzione all'interno del contenitore di formazione di comunicare con il servizio di monitoraggio dei lavori sull'host.

    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.hostIP
    Nota

    Questa variabile di ambiente è richiesta solo per le regole di rilevamento personalizzate. Il rilevamento predefinito funziona senza di essa.

  2. Installa la libreria del toolkit nell'immagine del contenitore di formazione

    Aggiungi il pacchetto toolkit-for-ray-on-sagemaker-ai dal sito web PyPI all'immagine del contenitore di formazione. La libreria è preinstallata nelle immagini SageMaker di distribuzione.

    pip install toolkit-for-ray-on-sagemaker-ai
  3. Aggiungi il monitoraggio alla tua funzione di allenamento

    Chiama SageMakerLogMonitoring.start() la tua funzione di formazione prima di svolgere qualsiasi lavoro significativo. Ciò garantisce che il monitoraggio sia attivo sin dall'inizio dell'addestramento e può rilevare i blocchi che si verificano durante il caricamento del modello o il primo passaggio in avanti.

    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), ), )

    Quando l'cancelazione interrompe un lavoratore sospeso, la documentazione di Ray Train FailureConfig nella documentazione di Ray rileva il fallimento del lavoratore e riavvia tutti i lavoratori dall'ultimo checkpoint. Imposta max_failures il numero di tentativi di ripristino automatico che desideri prima che il lavoro fallisca definitivamente. FailureConfigIn caso contrario, un singolo licenziamento del lavoratore fa fallire l'intero lavoro.

    Poiché Ray Train effettua il ripristino dall'ultimo checkpoint salvato al riavvio, dopo il checkpoint più recente non si perde alcun progresso formativo dopo il lavoro. Se il codice di allenamento salva periodicamente i checkpoint (ad esempio, in corrispondenza di ogni limite di epoca), il lavoro riprende automaticamente dall'ultimo stato salvato.

Campi delle regole

Campo Tipo Campo obbligatorio Descrizione
name stringa Human-readable identificatore per la regola.
type stringa Tipo di regola . Da utilizzare log_pattern per il rilevamento basato sui log.
enabled bool No Se questa regola è attiva. L’impostazione predefinita è false.
log_pattern stringa Modello Regex da abbinare nello stdout di lavoro (sintassi RE2, massimo 256 caratteri).
timeout_minutes virgola mobile No Numero massimo di minuti tra corrispondenze consecutive di pattern prima di dichiarare un blocco.
start_timeout_minutes virgola mobile No Minuti massimi dall'inizio del lavoro per il primo pattern match. Utile per consentire il tempo di avvio (caricamento del modello, download dei dati). Se il modello non è visualizzato in questa finestra, il lavoro è considerato sospeso.
stop_pattern stringa No Regex che disattiva questa regola quando viene abbinata (ad esempio,). "Training complete"
fault_on_match bool No Setrue, dichiara un blocco immediatamente quando il pattern corrisponde. Da utilizzare per modelli di errore come OOM. Quandotrue, non timeout_minutes è obbligatorio.
metric_evaluation_data_points int No Numero di cicli di valutazione consecutivi che devono confermare la condizione prima di dichiarare un blocco. L’impostazione predefinita è 1.

Azioni

Azione Description
notify Emette un evento di rilevamento a CloudWatch Grafana ma non intraprende alcuna azione automatica. Questa è l’impostazione predefinita.
cancel Termina il processo del lavoratore sospeso. Il sistema integrato di Ray Train FailureConfig riavvia tutti i lavoratori dall'ultimo checkpoint. Per utilizzare questa azione, configura FailureConfig con un numero sufficiente di tentativi nel tuo. RunConfig

Annullamento del rilevamento

Per disattivare il rilevamento di tutti i job bloccati per un lavoro specifico, incluso il rilevamento predefinito e le eventuali regole personalizzate:

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

Visualizzazione degli eventi di rilevamento

Quando viene rilevato un lavoro sospeso, l'evento viene visualizzato nelle seguenti posizioni:

  • CloudWatch Registri: gruppo di log/aws/sagemaker/Clusters/cluster-name/cluster-id, flusso SageMakerHangJobDetectionEvents/instance-group-name/instance-id di log. Cerca per HANG_DETECTED trovare gli eventi di rilevamento.

  • Grafana: se è installato il componente aggiuntivo HyperPod Observability, gli eventi di rilevamento vengono visualizzati nella dashboard di Ray Train nel pannello di rilevamento del lavoro Hung. Per ulteriori informazioni, consulta Osservabilità.

Ogni evento di rilevamento include l'ID del lavoro, le prove che hanno attivato il rilevamento e l'azione intrapresa (o). notify cancel