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.
-
Aggiungi la variabile di ambiente IP host al tuo RayCluster manifest
Aggiungi la seguente variabile di ambiente a entrambi
headGroupSpeceworkerGroupSpecsnel 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.hostIPNota
Questa variabile di ambiente è richiesta solo per le regole di rilevamento personalizzate. Il rilevamento predefinito funziona senza di essa.
-
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 -
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 FailureConfignella documentazione di Ray rileva il fallimento del lavoratore e riavvia tutti i lavoratori dall'ultimo checkpoint. Imposta max_failuresil 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 | Sì | Human-readable identificatore per la regola. |
type |
stringa | Sì | 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 | Sì | 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/, flussocluster-name/cluster-idSageMakerHangJobDetectionEvents/di log. Cerca perinstance-group-name/instance-idHANG_DETECTEDtrovare 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