Recupero durante il processo e formazione senza checkpoint - 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à.

Recupero durante il processo e formazione senza checkpoint

HyperPod la formazione senza checkpointless utilizza la ridondanza dei modelli per consentire un addestramento tollerante ai guasti. Il principio fondamentale è che gli stati del modello e dell'ottimizzatore vengono completamente replicati su più gruppi di nodi, con aggiornamenti di peso e modifiche dello stato dell'ottimizzatore replicati in modo sincrono all'interno di ciascun gruppo. Quando si verifica un errore, le repliche integre completano le fasi di ottimizzazione e trasmettono gli stati aggiornati alle repliche in fase di ripristino. model/optimizer

Questo approccio basato sulla ridondanza del modello consente diversi meccanismi di gestione dei guasti:

  • Ripristino durante il processo: i processi rimangono attivi nonostante i guasti, mantenendo tutti gli stati del modello e dell'ottimizzatore nella memoria della GPU con i valori più recenti

  • Gestione agevole delle interruzioni: aborti controllati e pulizia delle risorse per le operazioni interessate

  • Riesecuzione del blocco di codice: riesecuzione solo dei segmenti di codice interessati all'interno di un blocco di codice rieseguibile (RCB)

  • Recupero senza punti di controllo senza perdita dei progressi di allenamento: poiché i processi persistono e gli stati rimangono in memoria, nessun progresso dell'allenamento viene perso; quando si verifica un errore, l'allenamento riprende dalla fase precedente, anziché riprendere dall'ultimo checkpoint salvato

Configurazioni senza checkpoint

Ecco il frammento principale della formazione senza checkpointless.

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank wait_rank() def main(): @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=PEFTCheckpointManager(enable_offload=True), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), ) def run_main(cfg, caller: Optional[HPCallWrapper] = None): ... trainer = Trainer( strategy=CheckpointlessMegatronStrategy(..., num_distributed_optimizer_instances=2), callbacks=[..., CheckpointlessCallback(...)], ) trainer.fresume = resume trainer._checkpoint_connector = CheckpointlessCompatibleConnector(trainer) trainer.wrapper = caller
  • wait_rank: Tutti i ranghi aspetteranno le informazioni sulla classifica dall'infrastruttura. HyperpodTrainingOperator

  • HPWrapper: wrapper di funzioni Python che abilita le funzionalità di riavvio per un blocco di codice rieseguibile (RCB). L'implementazione utilizza un gestore di contesto anziché un decoratore Python perché i decoratori non possono determinare il numero di elementi da RCBs monitorare in fase di esecuzione.

  • CudaHealthCheck: Assicura che il contesto CUDA per il processo corrente sia integro mediante la sincronizzazione con la GPU. Utilizza il dispositivo specificato dalla variabile di ambiente LOCAL_RANK o utilizza come impostazione predefinita il dispositivo CUDA del thread principale se LOCAL_RANK non è impostato.

  • HPAgentK8sAPIFactory: Questa API consente la formazione senza checkpoint per interrogare lo stato di addestramento di altri pod nel cluster di formazione Kubernetes. Fornisce inoltre una barriera a livello di infrastruttura che garantisce che tutti i ranghi completino con successo le operazioni di interruzione e riavvio prima di procedere.

  • CheckpointManager: Gestisce i checkpoint in memoria e il ripristino per una tolleranza agli errori senza checkpoint. peer-to-peer Ha le seguenti responsabilità principali:

    • Gestione dei checkpoint in memoria: salva e gestisce i checkpoint NeMo del modello in memoria per un ripristino rapido senza disco I/O durante gli scenari di ripristino senza checkpoint.

    • Convalida della fattibilità del ripristino: determina se è possibile il ripristino senza checkpoint convalidando la coerenza globale dei passaggi, lo stato del rango e l'integrità dello stato del modello.

    • Peer-to-Peer Orchestrazione del ripristino: coordina il trasferimento dei checkpoint tra i ranghi sani e quelli danneggiati utilizzando la comunicazione distribuita per un ripristino rapido.

    • Gestione dello stato RNG: conserva e ripristina gli stati dei generatori di numeri casuali su Python e Megatron per il NumPy ripristino PyTorch deterministico.

    • [Opzionale] Checkpoint Offload: trasferisci il checkpoint di memoria sulla CPU se la GPU non ha una capacità di memoria sufficiente.

  • PEFTCheckpointManager: Si estende mantenendo i pesi del modello base CheckpointManager per la regolazione fine del PEFT.

  • CheckpointlessAbortManager: Gestisce le operazioni di interruzione in un thread in background quando si verifica un errore. Per impostazione predefinita, interrompe TransformerEngine, Checkpointing e. TorchDistributed DataLoader Gli utenti possono registrare gestori di aborti personalizzati in base alle esigenze. Una volta completata l'interruzione, tutte le comunicazioni devono cessare e tutti i processi e i thread devono terminare per evitare perdite di risorse.

  • CheckpointlessFinalizeCleanup: gestisce le operazioni di pulizia finale nel thread principale per i componenti che non possono essere interrotti o ripuliti in modo sicuro nel thread in background.

  • CheckpointlessMegatronStrategy: Eredita dalla forma di NemoMegatronStrategy. Nota che l'addestramento senza checkpoint richiede almeno 2 partecipanti num_distributed_optimizer_instances per consentire la replica dell'ottimizzatore. La strategia si occupa anche della registrazione degli attributi essenziali e dell'inizializzazione dei gruppi di processi, ad esempio rootless.

  • CheckpointlessCallback: Lightning callback che integra l' NeMo allenamento con il sistema di tolleranza ai guasti di checkpointless training. Ha le seguenti responsabilità principali:

    • Gestione del ciclo di vita delle fasi di allenamento: tiene traccia dei progressi dell'allenamento e si coordina ParameterUpdateLock per enable/disable un recupero senza problemi in base allo stato dell'allenamento (prima fase e fasi successive).

    • Checkpoint State Coordination: gestisce il salvataggio/ripristino dei checkpoint del modello base PEFT in memoria.

  • CheckpointlessCompatibleConnector: Un PTL CheckpointConnector che tenta di precaricare il file di checkpoint in memoria, con il percorso di origine determinato in base a questa priorità:

    • prova checkpointless recovery

    • se checkpointless restituisce None, torna a parent.resume_start ()

Guarda l'esempio per aggiungere funzionalità di formazione senza checkpointless ai codici.

Concetti

Questa sezione introduce concetti di formazione senza checkpoint. La formazione Checkpointless su Amazon SageMaker HyperPod supporta il ripristino in corso. Questa interfaccia API segue un formato simile a quello di. NVRx APIs

Concetto: Re-Executable Code Block (RCB)

Quando si verifica un errore, i processi sani rimangono attivi, ma una parte del codice deve essere rieseguita per ripristinare gli stati di addestramento e gli stack python. Un Re-Executable Code Block (RCB) è un segmento di codice specifico che viene eseguito nuovamente durante il ripristino in caso di errore. Nell'esempio seguente, l'RCB comprende l'intero script di addestramento (ovvero, tutto ciò che è contenuto in main ()), il che significa che ogni ripristino in caso di errore riavvia lo script di addestramento preservando il modello in memoria e gli stati dell'ottimizzatore.

Concetto: controllo dei guasti

Un modulo di controllo dei guasti riceve notifiche quando si verificano guasti durante un addestramento senza checkpoint. Questo controller di guasto include i seguenti componenti:

  • Modulo di rilevamento dei guasti: riceve notifiche di guasti dell'infrastruttura

  • Definizione RCB APIs: consente agli utenti di definire il blocco di codice rieseguibile (RCB) nel proprio codice

  • Modulo di riavvio: termina l'RCB, ripulisce le risorse e riavvia l'RCB

Questa immagine illustra come un modulo di controllo dei guasti riceve notifiche quando si verifica un errore durante un addestramento senza checkpoint.

Concetto: ridondanza del modello

L'addestramento su modelli di grandi dimensioni richiede in genere una dimensione parallela dei dati sufficientemente grande per addestrare i modelli in modo efficiente. Nel tradizionale parallelismo dei dati come PyTorch DDP e Horovod, il modello è completamente replicato. Le tecniche più avanzate di parallelismo dei dati condivisi come DeepSpeed Zero Optimizer e FSDP supportano anche la modalità di sharding ibrida, che consente di suddividere gli stati all'interno del gruppo di sharding e di replicarli completamente tra i gruppi di replica. model/optimizer NeMo ha anche questa funzione di sharding ibrido tramite un argomento num_distributed_optimizer_instances, che consente la ridondanza.

Tuttavia, l'aggiunta della ridondanza indica che il modello non sarà completamente suddiviso in tutto il cluster, con conseguente maggiore utilizzo della memoria del dispositivo. La quantità di memoria ridondante varierà a seconda delle specifiche tecniche di sharding del modello implementate dall'utente. I pesi, i gradienti e la memoria di attivazione del modello a bassa precisione non ne risentiranno, poiché vengono suddivisi tramite il parallelismo del modello. Il modello master ad alta precisione e gli stati dell'ottimizzatore ne risentiranno. weights/gradients L'aggiunta di una replica ridondante del modello aumenta l'utilizzo della memoria del dispositivo all'incirca dell'equivalente delle dimensioni di un checkpoint DCP.

Lo sharding ibrido suddivide i collettivi di tutti i gruppi DP in collettivi relativamente più piccoli. In precedenza c'era una riduzione della dispersione e un raggruppamento totale tra l'intero gruppo DP. Dopo lo sharding ibrido, il reduce-scatter viene eseguito solo all'interno di ogni replica del modello e verrà applicata una riduzione totale tra i gruppi di repliche dei modelli. L'all-collect funziona anche all'interno di ogni replica del modello. Di conseguenza, l'intero volume di comunicazioni rimane pressoché invariato, ma i collettivi utilizzano gruppi più piccoli, quindi prevediamo una latenza migliore.

Concetto: tipi di errore e riavvio

La tabella seguente riporta i diversi tipi di errore e i meccanismi di ripristino associati. Checkpointless training tenta innanzitutto il ripristino in caso di errore tramite un ripristino in corso, seguito da un riavvio a livello di processo. Si ritorna al riavvio a livello di processo solo in caso di guasto catastrofico (ad esempio, guasto di più nodi contemporaneamente).

Tipo di errore Causa Tipo di ripristino Meccanismo di ripristino
Guasto durante il processo Errori a livello di codice, eccezioni Ripristino in corso (IPR) Riesegui RCB all'interno del processo esistente; i processi sani rimangono attivi
Errore di riavvio del processo Contesto CUDA danneggiato, processo interrotto Riavvio a livello di processo (PLR) SageMaker HyperPod l'operatore addetto alla formazione riavvia i processi; salta il riavvio del pod K8s
Errore di sostituzione del nodo Guasto node/GPU hardware permanente Job Level Restart (JLR) Sostituisci il nodo fallito; riavvia l'intero processo di formazione

Concetto: protezione Atomic Lock per Optimizer Step

L'esecuzione del modello è suddivisa in tre fasi: propagazione in avanti, propagazione all'indietro e fase di ottimizzazione. Il comportamento di ripristino varia in base alla tempistica dell'errore:

  • Propagazione avanti/indietro: torna all'inizio della fase di addestramento corrente e trasmetti gli stati del modello ai nodi sostitutivi

  • Fase di ottimizzazione: consenti alle repliche sane di completare la fase di blocco della protezione, quindi trasmetti gli stati aggiornati del modello ai nodi sostitutivi

Questa strategia garantisce che gli aggiornamenti completati dell'ottimizzatore non vengano mai scartati, contribuendo a ridurre i tempi di ripristino dei guasti.

Questa immagine illustra come viene gestito l'errore a seconda che si verifichi prima o dopo l'errore.

Diagramma del flusso di allenamento Checkpointless

Questo diagramma illustra il flusso di allenamento senza checkpoint.

I passaggi seguenti descrivono il processo di rilevamento degli errori e di ripristino senza checkpoint:

  1. Inizia il ciclo di formazione

  2. Si verifica un errore

  3. Valuta la fattibilità di un curriculum senza checkpoint

  4. Verifica se è possibile eseguire un curriculum senza checkpoint

    • Se possibile, prova a riprendere senza checkpointless

      • Se la ripresa fallisce, torna al caricamento del checkpoint dallo storage

      • Se la ripresa ha esito positivo, l'allenamento continua dallo stato di ripristino

    • Se non è possibile, ricorri al checkpoint di caricamento dal magazzino

  5. Pulisci le risorse: interrompi tutti i gruppi di processi e i backend e libera le risorse in preparazione al riavvio.

  6. Riprendi il ciclo di allenamento: inizia un nuovo ciclo di allenamento e il processo torna alla fase 1.

Guida di riferimento alle API

wait_rank

hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()

Attende e recupera le informazioni sulla classificazione da HyperPod, quindi aggiorna l'ambiente di processo corrente con variabili di addestramento distribuite.

Questa funzione ottiene l'assegnazione del grado e le variabili di ambiente corrette per l'addestramento distribuito. Garantisce che ogni processo ottenga la configurazione appropriata per il suo ruolo nel processo di formazione distribuito.

Parametri

Nessuno

Valori restituiti

Nessuno

Comportamento

  • Controllo del processo: salta l'esecuzione se viene chiamato da un sottoprocesso (viene eseguito solo in) MainProcess

  • Recupero dell'ambiente: recupera le variabili correnti RANK e da quelle di ambiente WORLD_SIZE

  • HyperPod Comunicazione: chiamate hyperpod_wait_rank_info() da cui recuperare informazioni sulla classifica HyperPod

  • Aggiornamento dell'ambiente: aggiorna l'ambiente di processo corrente con le variabili di ambiente specifiche del lavoratore ricevute da HyperPod

Variabili di ambiente

La funzione legge le seguenti variabili di ambiente:

  • RANK (int) — Classificazione attuale del processo (impostazione predefinita: -1 se non è impostata)

  • WORLD_SIZE (int) — Numero totale di processi nel processo distribuito (predefinito: 0 se non è impostato)

Aumenta

  • AssertionError— Se la risposta di non HyperPod è nel formato previsto o se mancano i campi obbligatori

Esempio

from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank # Call before initializing distributed training wait_rank() # Now environment variables are properly set for this rank import torch.distributed as dist dist.init_process_group(backend='nccl')

Note

  • Viene eseguito solo nel processo principale; le chiamate ai sottoprocessi vengono saltate automaticamente

  • La funzione si blocca finché non HyperPod fornisce le informazioni sulla classificazione

HPWrapper

class hyperpod_checkpointless_training.inprocess.wrap.HPWrapper( *, abort=Compose(HPAbortTorchDistributed()), finalize=None, health_check=None, hp_api_factory=None, abort_timeout=None, enabled=True, trace_file_path=None, async_raise_before_abort=True, early_abort_communicator=False, checkpoint_manager=None, check_memory_status=True)

Wrapper di funzioni Python che abilita le funzionalità di riavvio per un Re-Executable Code Block (RCB) durante un addestramento senza checkpoint. HyperPod

Questo wrapper offre funzionalità di tolleranza agli errori e ripristino automatico monitorando l'esecuzione della formazione e coordinando i riavvii tra i processi distribuiti in caso di errori. Utilizza un approccio di gestione del contesto anziché un decoratore per mantenere le risorse globali durante tutto il ciclo di vita della formazione.

Parametri

  • abort (Abort, opzionale): interrompe l'esecuzione in modo asincrono quando vengono rilevati errori. Impostazione predefinita: Compose(HPAbortTorchDistributed())

  • finalize (Finalize, opzionale) — Gestore di finalizzazione Rank-Local eseguito durante il riavvio. Impostazione predefinita: None

  • health_check (HealthCheck, opzionale) — Controllo dello stato di salute di Rank-local eseguito durante il riavvio. Impostazione predefinita: None

  • hp_api_factory (Callable, opzionale) — Funzione di fabbrica per la creazione di un'API con cui interagire. HyperPod HyperPod Impostazione predefinita: None

  • abort_timeout (float, opzionale) — Timeout per interrompere la chiamata nel thread di controllo degli errori. Impostazione predefinita: None

  • enabled (bool, opzionale) — Abilita la funzionalità wrapper. QuandoFalse, il wrapper diventa un pass-through. Impostazione predefinita: True

  • trace_file_path (str, opzionale) — Percorso del file di traccia per la profilazione. VizTracer Impostazione predefinita: None

  • async_raise_before_abort (bool, opzionale) — Abilita il raise before abort nel thread di controllo degli errori. Impostazione predefinita: True

  • early_abort_communicator (bool, opzionale) — Interrompe il comunicatore (nccl/Gloo) prima di interrompere il dataloader. Impostazione predefinita: False

  • checkpoint_manager (Any, opzionale) — Gestore per la gestione dei checkpoint durante il ripristino. Impostazione predefinita: None

  • check_memory_status (bool, opzionale) — Abilita il controllo e la registrazione dello stato della memoria. Impostazione predefinita: True

Metodi

def __call__(self, fn)

Racchiude una funzione per abilitare le funzionalità di riavvio.

Parametri:

  • fn (Callable) — La funzione da completare con le funzionalità di riavvio

Restituisce:

  • Richiamabile: funzione racchiusa con funzionalità di riavvio o funzione originale se disabilitata

Esempio

from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager from hyperpod_checkpointless_training.nemo_plugins.patches import patch_megatron_optimizer from hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector import CheckpointlessCompatibleConnector from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager @HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, checkpoint_manager=CheckpointManager(enable_offload=False), abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), finalize=CheckpointlessFinalizeCleanup(), )def training_function(): # Your training code here pass

Note

  • Il wrapper deve essere disponibile torch.distributed

  • Quandoenabled=False, il wrapper diventa un pass-through e restituisce la funzione originale invariata

  • Il wrapper mantiene risorse globali come il monitoraggio dei thread durante tutto il ciclo di vita della formazione

  • Supporta la profilazione quando viene fornita VizTracer trace_file_path

  • Si integra HyperPod per una gestione coordinata dei guasti nell'ambito della formazione distribuita

HPCallInvolucro

class hyperpod_checkpointless_training.inprocess.wrap.HPCallWrapper(wrapper)

Monitora e gestisce lo stato di un Restart Code Block (RCB) durante l'esecuzione.

Questa classe gestisce il ciclo di vita dell'esecuzione di RCB, incluso il rilevamento degli errori, il coordinamento con altri ranghi per i riavvii e le operazioni di pulizia. Gestisce la sincronizzazione distribuita e garantisce un ripristino coerente in tutti i processi di formazione.

Parametri

  • wrapper (HPWrapper) — Il wrapper principale contenente le impostazioni globali di ripristino durante il processo

Attributes

  • step_upon_restart (int) — Contatore che tiene traccia dei passaggi dall'ultimo riavvio, utilizzato per determinare la strategia di riavvio

Metodi

def initialize_barrier()

Attendi la sincronizzazione della HyperPod barriera dopo aver riscontrato un'eccezione da RCB.

def start_hp_fault_handling_thread()

Avvia il thread di gestione degli errori per monitorare e coordinare gli errori.

def handle_fn_exception(call_ex)

Elabora le eccezioni dalla funzione di esecuzione o da RCB.

Parametri:

  • call_ex (Exception) — Eccezione dalla funzione di monitoraggio

def restart(term_ex)

Esegue il gestore di riavvio che include la finalizzazione, la raccolta dei rifiuti e i controlli di integrità.

Parametri:

  • term_ex (RankShouldRestart) — Eccezione di terminazione che attiva il riavvio

def launch(fn, *a, **kw)

Esegui l'RCB con una corretta gestione delle eccezioni.

Parametri:

  • fn (Callable) — Funzione da eseguire

  • a — Argomenti della funzione

  • kw — Argomenti delle parole chiave della funzione

def run(fn, a, kw)

Ciclo di esecuzione principale che gestisce i riavvii e la sincronizzazione delle barriere.

Parametri:

  • fn (Callable) — Funzione da eseguire

  • a — Argomenti della funzione

  • kw — Argomenti delle parole chiave della funzione

def shutdown()

Gestione degli errori di spegnimento e thread di monitoraggio.

Note

  • Gestisce automaticamente le RankShouldRestart eccezioni per un ripristino coordinato

  • Gestisce il tracciamento e gli aborti della memoria, la raccolta dei rifiuti durante i riavvii

  • Supporta sia il ripristino in corso che le strategie PLR (Process-Level Restart) basate sulla tempistica degli errori

CudaHealthCheck

class hyperpod_checkpointless_training.inprocess.health_check.CudaHealthCheck(timeout=datetime.timedelta(seconds=30))

Assicura che il contesto CUDA per il processo corrente sia in buono stato durante il recupero dall'allenamento senza checkpoint.

Questo controllo di integrità si sincronizza con la GPU per verificare che il contesto CUDA non sia danneggiato dopo un errore di allenamento. Esegue operazioni di sincronizzazione della GPU per rilevare eventuali problemi che potrebbero impedire la corretta ripresa dell'allenamento. Il controllo dello stato viene eseguito dopo la distruzione dei gruppi distribuiti e il completamento della finalizzazione.

Parametri

  • timeout (datetime.timedelta, opzionale) — Durata del timeout per le operazioni di sincronizzazione della GPU. Impostazione predefinita: datetime.timedelta(seconds=30)

Metodi

__call__(state, train_ex=None)

Esegui il controllo dello stato di salute CUDA per verificare l'integrità del contesto della GPU.

Parametri:

  • state (HPState) — HyperPod Stato attuale contenente informazioni sulla classificazione e sulla distribuzione

  • train_ex (Eccezione, opzionale) — L'eccezione di allenamento originale che ha attivato il riavvio. Impostazione predefinita: None

Restituisce:

  • tuple — Una tupla che contiene (state, train_ex) invariate le modifiche se il controllo sanitario ha esito positivo

Aumenta:

  • TimeoutError— Se la sincronizzazione della GPU scade, indica un contesto CUDA potenzialmente danneggiato

Conservazione dello stato: restituisce lo stato e l'eccezione originali invariati se tutti i controlli vengono superati

Esempio

import datetime from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # Create CUDA health check with custom timeout cuda_health_check = CudaHealthCheck( timeout=datetime.timedelta(seconds=60) ) # Use with HPWrapper for fault-tolerant training @HPWrapper( health_check=cuda_health_check, enabled=True ) def training_function(): # Your training code here pass

Note

  • Utilizza il threading per implementare la protezione da timeout per la sincronizzazione della GPU

  • Progettato per rilevare contesti CUDA danneggiati che potrebbero impedire la corretta ripresa dell'allenamento

  • Dovrebbe essere utilizzato come parte della pipeline di tolleranza agli errori negli scenari di formazione distribuiti

HPAgentK8s APIFactory

class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()

Classe Factory per la creazione di istanze HPAgent K8SAPi che comunicano con HyperPod l'infrastruttura per il coordinamento distribuito della formazione.

Questa factory fornisce un modo standardizzato per creare e configurare oggetti HPAgent K8SAPi che gestiscono la comunicazione tra i processi di addestramento e il piano di controllo. HyperPod Incapsula la creazione del client socket sottostante e dell'istanza API, garantendo una configurazione coerente tra le diverse parti del sistema di formazione.

Metodi

__call__()

Crea e restituisci un'istanza HPAgent K8SAPi configurata per la comunicazione. HyperPod

Restituisce:

  • HPAgentK8sapi: istanza API configurata per la comunicazione con l'infrastruttura HyperPod

Esempio

from hyperpod_checkpointless_training.inprocess.train_utils import HPAgentK8sAPIFactory from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck # Create the factory hp_api_factory = HPAgentK8sAPIFactory() # Use with HPWrapper for fault-tolerant training hp_wrapper = HPWrapper( hp_api_factory=hp_api_factory, health_check=CudaHealthCheck(), abort_timeout=60.0, enabled=True ) @hp_wrapper def training_function(): # Your distributed training code here pass

Note

  • Progettato per funzionare perfettamente con l'infrastruttura basata su Kubernetes. HyperPod È essenziale per la gestione e il ripristino coordinati dei guasti in scenari di formazione distribuiti

CheckpointManager

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.CheckpointManager( enable_checksum=False, enable_offload=False)

Gestisce i checkpoint in memoria e peer-to-peer il ripristino per una tolleranza agli errori senza checkpoint nell'addestramento distribuito.

Questa classe fornisce le funzionalità di base per un addestramento HyperPod senza checkpoint gestendo i checkpoint del NeMo modello in memoria, convalidando la fattibilità del recupero e orchestrando il trasferimento dei checkpoint tra i ranghi sani e quelli falliti. peer-to-peer Elimina la necessità del disco I/O durante il ripristino, riducendo in modo significativo il tempo medio di ripristino (MTTR).

Parametri

  • enable_checksum (bool, opzionale) — Abilita la convalida del checksum dello stato del modello per i controlli di integrità durante il ripristino. Impostazione predefinita: False

  • enable_offload (bool, opzionale) — Abilita l'offload dei checkpoint dalla GPU alla memoria della CPU per ridurre l'utilizzo della memoria della GPU. Impostazione predefinita: False

Attributes

  • global_step (int o None) — Fase di allenamento corrente associata al checkpoint salvato

  • rng_states (list o None) — Stati del generatore di numeri casuali memorizzati per il recupero deterministico

  • checksum_manager (MemoryChecksumManager) — Gestore per la convalida del checksum dello stato del modello

  • parameter_update_lock () — Blocco per coordinare gli aggiornamenti dei parametri durante il ripristino ParameterUpdateLock

Metodi

save_checkpoint(trainer)

Salva il checkpoint del NeMo modello in memoria per un potenziale ripristino senza checkpoint.

Parametri:

  • trainer (Pytorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Note:

  • Chiamato CheckpointlessCallback alla fine del batch o durante la gestione delle eccezioni

  • Crea punti di ripristino senza I/O sovraccarico del disco

  • Memorizza gli stati completi del modello, dell'ottimizzatore e dello scheduler

delete_checkpoint()

Elimina il checkpoint in memoria ed esegui le operazioni di pulizia.

Note:

  • Cancella i dati del checkpoint, gli stati RNG e i tensori memorizzati nella cache

  • Esegue la raccolta dei rifiuti e la pulizia della cache CUDA

  • Chiamato dopo il ripristino riuscito o quando il checkpoint non è più necessario

try_checkpointless_load(trainer)

Tenta il ripristino senza checkpoint caricando lo stato dai ranghi dei peer ranks.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Restituisce:

  • dict o None: checkpoint ripristinato in caso di successo, Nessuno se è necessario eseguire il fallback su disco

Note:

  • Punto di accesso principale per il ripristino senza checkpoint

  • Convalida la fattibilità del ripristino prima di tentare il trasferimento P2P

  • Pulisce sempre i checkpoint in memoria dopo il tentativo di ripristino

checkpointless_recovery_feasible(trainer, include_checksum_verification=True)

Determina se è possibile un ripristino senza checkpoint per lo scenario di errore corrente.

Parametri:

  • trainer (Pytorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

  • include_checksum_verification (bool, opzionale) — Se includere la convalida del checksum. Impostazione predefinita: True

Restituisce:

  • bool — Vero se il ripristino senza checkpoint è fattibile, False altrimenti

Criteri di convalida:

  • Coerenza globale dei passaggi tra i ranghi più sani

  • Sono disponibili un numero sufficiente di repliche sane per il ripristino

  • Integrità del checksum dello stato del modello (se abilitata)

store_rng_states()

Memorizza tutti gli stati del generatore di numeri casuali per il ripristino deterministico.

Note:

  • Cattura gli stati RNG di Python NumPy PyTorch , CPU/GPU e Megatron

  • Essenziale per mantenere il determinismo dell'allenamento dopo il recupero

load_rng_states()

Ripristina tutti gli stati RNG per una continuazione deterministica del recupero.

Note:

  • Ripristina tutti gli stati RNG precedentemente memorizzati

  • Assicura che l'allenamento continui con sequenze casuali identiche

maybe_offload_checkpoint()

Sposta il checkpoint dalla GPU alla memoria della CPU se l'offload è abilitato.

Note:

  • Riduce l'utilizzo della memoria della GPU per i modelli di grandi dimensioni

  • Viene eseguito solo se enable_offload=True

  • Mantiene l'accessibilità ai checkpoint per il ripristino

Esempio

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=CheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

Convalida: verifica l'integrità del checkpoint utilizzando i checksum (se abilitati)

Note

  • Utilizza primitive di comunicazione distribuite per un trasferimento P2P efficiente

  • Gestisce automaticamente le conversioni di tipo d del tensore e il posizionamento dei dispositivi

  • MemoryChecksumManager— Gestisce la convalida dell'integrità dello stato del modello

PEFTCheckpointGestore

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager.PEFTCheckpointManager( *args, **kwargs)

Gestisce i checkpoint per PEFT (Parameter-Efficient Fine-Tuning) con gestione separata della base e dell'adattatore per un ripristino ottimizzato senza checkpoint.

Questo gestore di checkpoint specializzato consente di ottimizzare i flussi di lavoro PEFT separando CheckpointManager i pesi del modello base dai parametri dell'adattatore.

Parametri

Eredita tutti i parametri da: CheckpointManager

  • enable_checksum (bool, opzionale) — Abilita la convalida del checksum dello stato del modello. Impostazione predefinita: False

  • enable_offload (bool, opzionale) — Abilita l'offloading del checkpoint nella memoria della CPU. Impostazione predefinita: False

Attributi aggiuntivi

  • params_to_save (set) — Set di nomi di parametri che devono essere salvati come parametri dell'adattatore

  • base_model_weights (dict o None) — Pesi del modello base memorizzati nella cache, salvati una volta e riutilizzati

  • base_model_keys_to_extract (list o None) — Chiavi per estrarre i tensori del modello base durante il trasferimento P2P

Metodi

maybe_save_base_model(trainer)

Salva i pesi del modello base una volta, filtrando i parametri dell'adattatore.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Note:

  • Salva i pesi del modello base solo alla prima chiamata; le chiamate successive non sono operative

  • Filtra i parametri dell'adattatore per memorizzare solo i pesi del modello base congelati

  • I pesi del modello base vengono mantenuti per più sessioni di allenamento

save_checkpoint(trainer)

Salva il checkpoint del modello di adattatore NeMo PEFT in memoria per un potenziale ripristino senza checkpoint.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza di Lightning trainer PyTorch

Note:

  • maybe_save_base_model()Chiama automaticamente se il modello base non è ancora stato salvato

  • Filtra il checkpoint per includere solo i parametri dell'adattatore e lo stato di allenamento

  • Riduce in modo significativo le dimensioni dei checkpoint rispetto ai checkpoint del modello completo

try_base_model_checkpointless_load(trainer)

Il modello base di Attempt PEFT valuta il ripristino senza checkpoint caricando lo stato dai ranghi dei peer rank.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Restituisce:

  • dict o None — Il checkpoint del modello base è stato ripristinato in caso di successo, None se è necessario il fallback

Note:

  • Utilizzato durante l'inizializzazione del modello per recuperare i pesi del modello base

  • Non elimina i pesi del modello base dopo il ripristino (li conserva per il riutilizzo)

  • Ottimizzato per scenari di ripristino model-weights-only

try_checkpointless_load(trainer)

L'adattatore PEFT di Attempt soppesa il ripristino senza checkpoint caricando lo stato dai ranghi dei colleghi.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza di Lightning trainer PyTorch

Restituisce:

  • dict o None — Il checkpoint dell'adattatore è stato ripristinato in caso di successo, Nessuno se è necessario il fallback

Note:

  • Recupera solo i parametri dell'adattatore, gli stati dell'ottimizzatore e gli scheduler

  • Carica automaticamente gli stati dell'ottimizzatore e dello scheduler dopo il ripristino riuscito

  • Pulisce i checkpoint dell'adattatore dopo il tentativo di ripristino

is_adapter_key(key)

Controlla se la chiave state dict appartiene ai parametri dell'adattatore.

Parametri:

  • key (str o tuple) — Chiave dict di stato da controllare

Restituisce:

  • bool — Vero se la chiave è il parametro dell'adattatore, False se è il parametro del modello base

Logica di rilevamento:

  • Controlla se la chiave è params_to_save impostata

  • Identifica le chiavi contenenti «.adapter». substring

  • Identifica le chiavi che terminano con «.adapters»

  • Per le chiavi tuple, controlla se il parametro richiede gradienti

maybe_offload_checkpoint()

Scarica i pesi del modello base dalla GPU alla memoria della CPU.

Note:

  • Estende il metodo principale per gestire lo scaricamento del peso del modello base

  • I pesi degli adattatori sono in genere piccoli e non richiedono lo scarico

  • Imposta un flag interno per tenere traccia dello stato di offload

Note

  • Progettato specificamente per scenari di fine-tuning efficienti dal punto di vista dei parametri (LoRa, adattatori, ecc.)

  • Gestisce automaticamente la separazione dei parametri del modello base e dell'adattatore

Esempio

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import PEFTCheckpointManager # Use with HPWrapper for complete fault tolerance @HPWrapper( checkpoint_manager=PEFTCheckpointManager(), enabled=True ) def training_function(): # Training code with automatic checkpointless recovery pass

CheckpointlessAbortManager

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessAbortManager()

Classe Factory per la creazione e la gestione delle composizioni dei componenti di interruzione per una tolleranza ai guasti senza checkpoint.

Questa classe di utilità fornisce metodi statici per creare, personalizzare e gestire le composizioni dei componenti di aborto utilizzate durante la gestione dei guasti durante la formazione senza checkpoint. HyperPod Semplifica la configurazione delle sequenze di interruzione che gestiscono la pulizia dei componenti di formazione distribuiti, dei caricatori di dati e delle risorse specifiche del framework durante il ripristino in caso di errore.

Parametri

Nessuno (tutti i metodi sono statici)

Metodi statici

get_default_checkpointless_abort()

Ottieni l'istanza abort compose predefinita contenente tutti i componenti di abort standard.

Restituisce:

  • Componi: istanza di interruzione composta predefinita con tutti i componenti di interruzione

Componenti predefiniti:

  • AbortTransformerEngine() — Pulisce le risorse TransformerEngine

  • HPCheckpointingAbort () — Gestisce la pulizia del sistema di checkpoint

  • HPAbortTorchDistributed() — Interrompe le operazioni distribuite PyTorch

  • HPDataLoaderAbort() — Arresta e pulisce i caricatori di dati

create_custom_abort(abort_instances)

Crea una composizione di interruzione personalizzata con solo le istanze di interruzione specificate.

Parametri:

  • abort_instances (Abort) — Numero variabile di istanze di aborto da includere nella composizione

Restituisce:

  • Componi — Nuova istanza di interruzione composta contenente solo i componenti specificati

Aumenta:

  • ValueError— Se non vengono fornite istanze di interruzione

override_abort(abort_compose, abort_type, new_abort)

Sostituisci un componente di interruzione specifico in un'istanza Compose con un nuovo componente.

Parametri:

  • abort_compose (Compose) — L'istanza Compose originale da modificare

  • abort_type (type) — Il tipo di componente di interruzione da sostituire (ad esempio,) HPCheckpointingAbort

  • new_abort (Abort) — La nuova istanza di abort da utilizzare come sostituto

Restituisce:

  • Compose — Nuova istanza Compose con il componente specificato sostituito

Aumenta:

  • ValueError— Se abort_compose non ha l'attributo 'instances'

Esempio

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.abort import CheckpointlessFinalizeCleanup, CheckpointlessAbortManager # The strategy automatically integrates with HPWrapper @HPWrapper( abort=CheckpointlessAbortManager.get_default_checkpointless_abort(), health_check=CudaHealthCheck(), finalize=CheckpointlessFinalizeCleanup(), enabled=True ) def training_function(): trainer.fit(...)

Note

  • Le configurazioni personalizzate consentono un controllo preciso sul comportamento di pulizia

  • Le operazioni di interruzione sono fondamentali per una corretta pulizia delle risorse durante il ripristino dei guasti

CheckpointlessFinalizeCleanup

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessFinalizeCleanup()

Esegue una pulizia completa dopo il rilevamento dei guasti per prepararsi al ripristino in corso durante l'addestramento senza checkpoint.

Questo gestore di finalizzazione esegue operazioni di pulizia specifiche del framework, tra cui Megatron/TransformerEngine interruzione, pulizia DDP, ricaricamento dei moduli e pulizia della memoria, eliminando i riferimenti ai componenti di addestramento. Garantisce che l'ambiente di formazione venga ripristinato correttamente per il corretto ripristino durante il processo senza richiedere l'interruzione completa del processo.

Parametri

Nessuno

Attributes

  • trainer (Pytorch_Lightning.trainer o None) — Riferimento all'istanza del trainer Lightning PyTorch

Metodi

__call__(*a, **kw)

Esegui operazioni di pulizia complete per la preparazione del ripristino durante il processo.

Parametri:

  • a — Argomenti posizionali variabili (ereditati dall'interfaccia Finalize)

  • kw — Argomenti variabili relativi alle parole chiave (ereditati dall'interfaccia Finalize)

Operazioni di pulizia:

  • Megatron Framework Cleanup: chiamate per ripulire le risorse specifiche abort_megatron() di Megatron

  • TransformerEngine Cleanup: chiamate per ripulire le risorse abort_te() TransformerEngine

  • RoPE Cleanup: chiamate cleanup_rope() per ripulire le risorse di incorporamento della posizione rotante

  • DDP Cleanup: chiamate per ripulire le risorse cleanup_ddp() DistributedDataParallel

  • Module Reloading: chiamate reload_megatron_and_te() per ricaricare i moduli del framework

  • Pulizia del modulo Lightning: cancella facoltativamente il modulo Lightning per ridurre la memoria della GPU

  • Memory Cleanup: elimina i riferimenti ai componenti di addestramento per liberare memoria

register_attributes(trainer)

Registra l'istanza del trainer per utilizzarla durante le operazioni di pulizia.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza di Lightning trainer da registrare PyTorch

Integrazione con CheckpointlessCallback

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( ... finalize=CheckpointlessFinalizeCleanup(), ) def training_function(): trainer.fit(...)

Note

  • Le operazioni di pulizia vengono eseguite in un ordine specifico per evitare problemi di dipendenza

  • La pulizia della memoria utilizza l'introspezione della raccolta dei rifiuti per trovare gli oggetti di destinazione

  • Tutte le operazioni di pulizia sono progettate per essere idempotenti e sicure da riprovare

CheckpointlessMegatronStrategy

class hyperpod_checkpointless_training.nemo_plugins.megatron_strategy.CheckpointlessMegatronStrategy(*args, **kwargs)

NeMo Strategia Megatron con funzionalità integrate di ripristino senza checkpoint per una formazione distribuita con tolleranza ai guasti.

Tieni presente che l'addestramento senza checkpoint deve essere almeno 2 in num_distributed_optimizer_instances modo da garantire la replica dell'ottimizzatore. La strategia si occupa anche della registrazione degli attributi essenziali e dell'inizializzazione dei gruppi di processi.

Parametri

Eredita tutti i parametri da: MegatronStrategy

  • NeMo MegatronStrategy Parametri di inizializzazione standard

  • Opzioni di configurazione della formazione distribuita

  • Impostazioni del parallelismo del modello

Attributes

  • base_store (torch.distributed). TCPStoreo Nessuno) — Archivio distribuito per il coordinamento dei gruppi di processi

Metodi

setup(trainer)

Inizializza la strategia e registra i componenti di tolleranza ai guasti con il trainer.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Operazioni di configurazione:

  • Parent Setup: richiama la MegatronStrategy configurazione principale

  • Fault Injection Registration: registra HPFault InjectionCallback gli hook, se presenti

  • Finalizza la registrazione: registra il trainer con i gestori di finalize cleanup

  • Interrompi la registrazione: registra il trainer con i gestori di aborti che lo supportano

setup_distributed()

Inizializza il gruppo di processi utilizzando una connessione con prefisso o senza root. TCPStore

load_model_state_dict(checkpoint, strict=True)

Carica il modello state dict con compatibilità di ripristino senza checkpointless.

Parametri:

  • checkpoint (Mapping [str, Any]) — Dizionario Checkpoint contenente lo stato del modello

  • strict (bool, optional) — Se applicare rigorosamente la corrispondenza delle chiavi state dict. Impostazione predefinita: True

get_wrapper()

Ottieni l'istanza HPCall Wrapper per il coordinamento della tolleranza agli errori.

Restituisce:

  • HPCallWrapper: l'istanza wrapper collegata al trainer per la tolleranza agli errori

is_peft()

Controlla se PEFT (Parameter-Efficient Fine-Tuning) è abilitato nella configurazione di addestramento verificando la presenza di callback PEFT

Restituisce:

  • bool — Vero se è presente il callback PEFT, False in caso contrario

teardown()

Sostituisci lo smontaggio nativo di PyTorch Lightning per delegare la pulizia ai gestori di aborti.

Esempio

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper # The strategy automatically integrates with HPWrapper @HPWrapper( checkpoint_manager=checkpoint_manager, enabled=True ) def training_function(): trainer = pl.Trainer(strategy=CheckpointlessMegatronStrategy()) trainer.fit(model, datamodule)

CheckpointlessCallback

class hyperpod_checkpointless_training.nemo_plugins.callbacks.CheckpointlessCallback( enable_inprocess=False, enable_checkpointless=False, enable_checksum=False, clean_tensor_hook=False, clean_lightning_module=False)

Lightning callback che integra la formazione con il sistema di tolleranza ai guasti di checkpointless training. NeMo

Questo callback gestisce il tracciamento dei passaggi, il salvataggio dei checkpoint e il coordinamento dell'aggiornamento dei parametri per le funzionalità di ripristino durante il processo. Funge da punto di integrazione principale tra i cicli di formazione PyTorch Lightning e i meccanismi di addestramento HyperPod senza checkpoint, coordinando le operazioni di tolleranza agli errori durante l'intero ciclo di vita della formazione.

Parametri

  • enable_inprocess (bool, opzionale) — Abilita le funzionalità di ripristino durante il processo. Impostazione predefinita: False

  • enable_checkpointless (bool, opzionale) — Abilita il ripristino senza checkpointless (richiesto). enable_inprocess=True Impostazione predefinita: False

  • enable_checksum (bool, opzionale) — Abilita la convalida del checksum dello stato del modello (richiesto). enable_checkpointless=True Impostazione predefinita: False

  • clean_tensor_hook (bool, opzionale) — Elimina gli hook tensoriali da tutti i tensori della GPU durante la pulizia (operazione costosa). Impostazione predefinita: False

  • clean_lightning_module (bool, opzionale) — Abilita la pulizia del modulo Lightning per liberare memoria della GPU dopo ogni riavvio. Impostazione predefinita: False

Attributes

  • tried_adapter_checkpointless (bool) — Contrassegna per verificare se è stato tentato il ripristino senza checkpointless dell'adattatore

Metodi

get_wrapper_from_trainer(trainer)

Scarica l'istanza Wrapper dal trainer per il coordinamento della tolleranza agli errori. HPCall

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Restituisce:

  • HPCallWrapper: l'istanza wrapper per le operazioni di tolleranza ai guasti

on_train_batch_start(trainer, pl_module, batch, batch_idx, *args, **kwargs)

Richiamato all'inizio di ogni batch di allenamento per gestire il monitoraggio e il recupero delle fasi.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza di Lightning trainer PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Modulo Lightning in fase di addestramento

  • batch: dati correnti relativi al batch di addestramento

  • batch_idx (int) — Indice del batch corrente

  • args — Argomenti posizionali aggiuntivi

  • kwargs — Argomenti aggiuntivi relativi alle parole chiave

on_train_batch_end(trainer, pl_module, outputs, batch, batch_idx)

Rilascia il blocco di aggiornamento dei parametri alla fine di ogni batch di addestramento.

Parametri:

  • trainer (Pytorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Modulo Lightning in fase di addestramento

  • outputs (STEP_OUTPUT) — Uscite della fase di addestramento

  • batch (Any) — Dati correnti del batch di addestramento

  • batch_idx (int) — Indice del batch corrente

Note:

  • La tempistica di rilascio del blocco garantisce che il ripristino senza checkpoint possa procedere dopo il completamento degli aggiornamenti dei parametri

  • Viene eseguito solo quando entrambi i valori sono impostati su True enable_inprocess enable_checkpointless

get_peft_callback(trainer)

Recupera il callback PEFT dall'elenco dei callback del trainer.

Parametri:

  • trainer (Pytorch_Lightning.trainer) — Istanza del trainer Lightning PyTorch

Restituisce:

  • PEFT o None: istanza di callback PEFT se trovata, nessuna in caso contrario

_try_adapter_checkpointless_restore(trainer, params_to_save)

Tenta il ripristino senza checkpoint dei parametri dell'adattatore PEFT.

Parametri:

  • trainer (PyTorch_Lightning.trainer) — Istanza di Lightning trainer PyTorch

  • params_to_save (set) — Set di nomi di parametri da salvare come parametri dell'adattatore

Note:

  • Viene eseguito solo una volta per sessione di allenamento (controllata da flag) tried_adapter_checkpointless

  • Configura il gestore dei punti di controllo con le informazioni sui parametri dell'adattatore

Esempio

from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager import pytorch_lightning as pl # Create checkpoint manager checkpoint_manager = CheckpointManager( enable_checksum=True, enable_offload=True ) # Create checkpointless callback with full fault tolerance checkpointless_callback = CheckpointlessCallback( enable_inprocess=True, enable_checkpointless=True, enable_checksum=True, clean_tensor_hook=True, clean_lightning_module=True ) # Use with PyTorch Lightning trainer trainer = pl.Trainer( callbacks=[checkpointless_callback], strategy=CheckpointlessMegatronStrategy() ) # Training with fault tolerance trainer.fit(model, datamodule=data_module)

Gestione della memoria

  • clean_tensor_hook: rimuove i ganci tensoriali durante la pulizia (costoso ma completo)

  • clean_lightning_module: libera memoria GPU del modulo Lightning durante i riavvii

  • Entrambe le opzioni aiutano a ridurre l'ingombro di memoria durante il ripristino dei guasti

  • Coordinate con ParameterUpdateLock per il tracciamento degli aggiornamenti dei parametri thread-safe

CheckpointlessCompatibleConnector

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector.CheckpointlessCompatibleConnector()

PyTorch Connettore Lightning Checkpoint che integra il ripristino senza checkpoint con il tradizionale caricamento dei checkpoint basato su disco.

Questo connettore estende quello di PyTorch Lightning per fornire una perfetta integrazione tra il ripristino senza checkpoint e _CheckpointConnector il ripristino dei checkpoint standard. Tenta innanzitutto il ripristino senza checkpoint, quindi torna al caricamento del checkpoint basato su disco se il ripristino senza checkpoint non è fattibile o fallisce.

Parametri

Eredita tutti i parametri da _ CheckpointConnector

Metodi

resume_start(checkpoint_path=None)

Tentativo di precaricare il checkpoint con priorità di ripristino senza checkpointless.

Parametri:

  • checkpoint_path (str o None, opzionale) — Percorso verso il checkpoint del disco per il fallback. Impostazione predefinita: None

resume_end()

Completa il processo di caricamento del checkpoint ed esegui le operazioni successive al caricamento.

Note

  • Estende la _CheckpointConnector classe interna di PyTorch Lightning con il supporto per il ripristino senza checkpoint

  • Mantiene la piena compatibilità con i flussi di lavoro Lightning checkpoint standard PyTorch

CheckpointlessAutoResume

class hyperpod_checkpointless_training.nemo_plugins.resume.CheckpointlessAutoResume()

Estende NeMo la funzionalità AutoResume con configurazione ritardata per consentire la convalida del ripristino senza checkpoint prima della risoluzione del percorso di checkpoint.

Questa classe implementa una strategia di inizializzazione in due fasi che consente la convalida del ripristino senza checkpoint prima di tornare al tradizionale caricamento dei checkpoint basato su disco. Ritarda in modo condizionale la AutoResume configurazione per impedire la risoluzione prematura del percorso dei checkpoint, permettendo di verificare innanzitutto se il ripristino senza checkpoint è fattibile. CheckpointManager peer-to-peer

Parametri

Eredita tutti i parametri da AutoResume

Metodi

setup(trainer, model=None, force_setup=False)

Ritarda la AutoResume configurazione in modo condizionale per consentire la convalida del ripristino senza checkpoint.

Parametri:

  • trainer (Pytorch_Lightning.trainer o lightning.Fabric.fabric) — Lightning trainer o istanza Fabric PyTorch

  • model (opzionale) — Istanza del modello per la configurazione. Impostazione predefinita: None

  • force_setup (bool, opzionale) — Se True, ignora il ritardo ed esegui immediatamente la configurazione. AutoResume Impostazione predefinita: False

Esempio

from hyperpod_checkpointless_training.nemo_plugins.resume import CheckpointlessAutoResume from hyperpod_checkpointless_training.nemo_plugins.megatron_strategy import CheckpointlessMegatronStrategy import pytorch_lightning as pl # Create trainer with checkpointless auto-resume trainer = pl.Trainer( strategy=CheckpointlessMegatronStrategy(), resume=CheckpointlessAutoResume() )

Note

  • La AutoResume classe NeMo di Extends con meccanismo di ritardo per consentire il ripristino senza checkpoint

  • Funziona in combinazione con CheckpointlessCompatibleConnector per un flusso di lavoro di ripristino completo