View a markdown version of this page

In-process recupero e allenamento 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à.

In-process recupero e allenamento senza checkpoint

HyperPod checkpointless training utilizza la ridondanza del modello per consentire un addestramento tollerante ai guasti. Il principio fondamentale è che gli stati del modello e dell'ottimizzatore sono completamente replicati su più gruppi di nodi, con gli aggiornamenti del peso e le modifiche allo 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:

  • In-process ripristino: 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

  • Elegante gestione 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 Code Block (RCB) Re-executable

  • Ripristino senza checkpoint 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, invece di riprendere dall'ultimo checkpoint salvato

Configurazioni senza controlli

Ecco lo snippet principale di checkpointless training.

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 sul grado dall'infrastruttura. HyperpodTrainingOperator

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

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

  • HPAgentK8sAPIFactory: questa API consente al training senza checkpoint di 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 peer-to-peer per una tolleranza agli errori senza controlli. Ha le seguenti responsabilità principali:

    • In-Memory Gestione dei checkpoint: 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 il ripristino senza checkpoint è possibile convalidando la coerenza globale dei passaggi, lo stato dei ranghi e l'integrità dello stato del modello.

    • Peer-to-Peer Orchestrazione del ripristino: coordina il trasferimento dei checkpoint tra ranghi integri e non riusciti utilizzando la comunicazione distribuita per un ripristino rapido.

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

    • [Opzionale] Checkpoint Offload: scarica 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 messa a punto del PEFT.

  • CheckpointlessAbortManager: gestisce le operazioni di interruzione in un thread in background quando si verifica un errore. Per impostazione predefinita, si interrompe TransformerEngine, Checkpointing e. TorchDistributed DataLoader Gli utenti possono registrare gestori di interruzione personalizzati in base alle esigenze. Una volta completata l'interruzione, tutte le comunicazioni devono cessare e tutti i processi e i thread devono essere terminati 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: Questo eredita da NemoMegatronStrategy. Nota che l'addestramento senza checkpoint richiede un minimo num_distributed_optimizer_instances di 2 persone 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: callback Lightning che integra l'addestramento con il sistema di tolleranza ai guasti di checkpointless NeMo training. Ha le seguenti responsabilità principali:

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

    • Checkpoint State Coordination: gestisce il checkpoint del modello base PEFT in memoria. saving/restoring

  • 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 il ripristino senza checkpoint

    • se senza checkpoint restituisci None, torna a parent.resume_start ()

Guarda l'esempio per aggiungere funzionalità di addestramento senza checkpoint ai codici.

Concetti

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

Concetto: Re-Executable Code Block (RCB)

Quando si verifica un errore, i processi integri rimangono attivi, ma una parte del codice deve essere rieseguita per ripristinare gli stati di addestramento e gli stack di Python. Un Re-executable Code Block (RCB) è un segmento di codice specifico che viene rieseguito 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 gli stati del modello in memoria e dell'ottimizzatore.

Concetto - Controllo dei guasti

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

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

  • API di definizione RCB: 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 l'addestramento senza controlli.

Concetto: ridondanza del modello

L'addestramento di 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 di parallelismo frammentato dei dati più avanzate, come DeepSpeed Zero Optimizer e FSDP, supportano anche la modalità sharding ibrido, che consente lo sharding degli stati all'interno del gruppo di sharding e la replica completa tra i gruppi di replica. model/optimizer NeMo dispone anche di questa funzionalità 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 partizioni nell'intero 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 saranno influenzati, poiché vengono suddivisi tramite il parallelismo del modello. Gli stati del modello master ad alta precisione e dell'ottimizzatore saranno influenzati. weights/gradients L'aggiunta di una replica ridondante del modello aumenta l'utilizzo della memoria del dispositivo di circa l'equivalente di una dimensione di checkpoint DCP.

Lo sharding ibrido suddivide i collettivi degli interi gruppi DP in gruppi relativamente più piccoli. In precedenza, c'era una riduzione della dispersione e una raccolta completa in tutto il gruppo DP. Dopo lo sharding ibrido, il reduce-scatter viene eseguito solo all'interno di ogni replica del modello e ci sarà una riduzione totale tra i gruppi di repliche del modello. L'all-ather viene eseguito anche all'interno di ogni replica del modello. Di conseguenza, l'intero volume delle comunicazioni rimane pressoché invariato, ma i collettivi funzionano con gruppi più piccoli, quindi prevediamo una latenza migliore.

Concetto: tipi di errore e riavvio

La tabella seguente registra 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 procede al riavvio a livello di processo solo in caso di guasto catastrofico (ad esempio, più nodi si guastano contemporaneamente).

Tipo di errore Causa Tipo di ripristino Meccanismo di recupero
In-process fallimento Code-level errori, eccezioni In-Process Recupero (IPR) Esegui nuovamente l'RCB nell'ambito del processo esistente; i processi sani rimangono attivi
Errore di riavvio del processo Contesto CUDA danneggiato, processo terminato 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 con blocco atomico 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:

  • Forward/backward propagazione: torna all'inizio della fase di addestramento corrente e trasmetti gli stati del modello ai nodi sostitutivi

  • Fase di ottimizzazione: consenti alle repliche integre di completare la fase di protezione bloccata, quindi trasmetti gli stati del modello aggiornato 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 vengono gestiti i guasti a seconda che si verifichino prima o dopo il guasto.

Diagramma del flusso di allenamento Checkpointless

Questo diagramma illustra il flusso di allenamento senza checkpoint.

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

  1. Inizia il ciclo di formazione

  2. Si verifica un errore

  3. Valuta la fattibilità di un curriculum senza scrupoli

  4. Verifica se è possibile fare un curriculum senza checkpoint

    • Se possibile, prova il curriculum senza checkpoint

      • Se il ripristino fallisce, torna al checkpoint di caricamento dall'archivio

      • Se il riavvio ha esito positivo, la formazione continua dallo stato di ripristino

    • Se non è possibile, torna al punto di controllo per il caricamento dallo spazio di archiviazione

  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 formazione: inizia un nuovo ciclo di formazione e il processo ritorna alla fase 1.

Guida di riferimento alle API

wait_rank

hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()

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

Questa funzione ottiene la corretta assegnazione dei ranghi e le variabili di ambiente per la formazione distribuita. Assicura 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 richiamato da un sottoprocesso (viene eseguito solo in corso) MainProcess

  • Recupero dell'ambiente: ottiene le variabili correnti RANK e provenienti dall'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) — Classifica attuale del processo (impostazione predefinita: -1 se non è impostata)

  • WORLD_SIZE (int) — Numero totale di processi nel job 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 al sottoprocesso vengono saltate automaticamente

  • La funzione si blocca finché non HyperPod fornisce le informazioni sul rango

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 di un Re-executable Code Block (RCB) durante l'addestramento senza checkpoint. HyperPod

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

Parametri

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

  • finalize (Finalize, opzionale) — finalizza il gestore eseguito durante il riavvio. Rank-local Impostazione predefinita: None

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

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

  • abort_timeout (float, opzionale) — Timeout per la chiamata di interruzione 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 rilancio prima dell'interruzione nel thread di controllo degli errori. Impostazione predefinita: True

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

  • checkpoint_manager (Any, opzionale) — Manager 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)

Include una funzione per abilitare le funzionalità di riavvio.

Parametri:

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

Restituisce:

  • Richiamabile: funzione integrata 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 i thread di monitoraggio durante tutto il ciclo di vita della formazione

  • Supporta la profilazione quando viene fornita VizTracer trace_file_path

  • Si integra con HyperPod per una gestione coordinata dei guasti attraverso la formazione distribuita

HPCallWrapper

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 in corso

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 HyperPod della barriera dopo aver riscontrato un'eccezione da RCB.

def start_hp_fault_handling_thread()

Avvia il thread di gestione dei guasti per il monitoraggio e il coordinamento dei guasti.

def handle_fn_exception(call_ex)

Elabora le eccezioni dalla funzione di esecuzione o dall'RCB.

Parametri:

  • call_ex (Exception) — Eccezione dalla funzione di monitoraggio

def restart(term_ex)

Esegue il gestore di riavvio, inclusi finalizzazione, garbage collection e controlli di integrità.

Parametri:

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

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

Esegue 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()

Thread di gestione e monitoraggio dei guasti di spegnimento.

Note

  • Gestisce automaticamente le RankShouldRestart eccezioni per un ripristino coordinato

  • Gestisce il tracciamento e l'interruzione della memoria e la raccolta dei dati inutili 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 integro durante il recupero dell'allenamento senza interruzioni.

Questo controllo dello stato si sincronizza con la GPU per verificare che il contesto CUDA non sia danneggiato dopo un errore di addestramento. Esegue operazioni di sincronizzazione della GPU per rilevare eventuali problemi che potrebbero impedire una 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 corrente contenente informazioni sul rango e sulla distribuzione

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

Restituisce:

  • tuple — Una tupla contenente (state, train_ex) invariata se il controllo di integrità viene superato

Aumenta:

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

Conservazione dello stato: restituisce lo stato originale e l'eccezione 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 dal timeout per la sincronizzazione della GPU

  • Progettato per rilevare contesti CUDA danneggiati che potrebbero impedire una corretta ripresa della formazione

  • Dovrebbe essere utilizzato come parte della pipeline di tolleranza ai guasti in scenari di formazione distribuiti

HPAgentK8sAPIFactory

class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()

Classe di fabbrica per la creazione di istanze HPAgenTK8SAPI che comunicano con l'infrastruttura per il coordinamento distribuito della formazione. HyperPod

Questa fabbrica fornisce un modo standardizzato per creare e configurare oggetti HPAgentK8SAPI 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 restituisce un'istanza HPAgentK8SAPI 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. HyperPod Kubernetes-based È 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 il ripristino peer-to-peer per una tolleranza agli errori senza checkpoint nella formazione distribuita.

Questa classe fornisce le funzionalità di base per l'addestramento HyperPod senza checkpoint gestendo i checkpoint del NeMo modello in memoria, convalidando la fattibilità del ripristino e orchestrando il trasferimento peer-to-peer dei checkpoint tra ranghi integri e non riusciti. Elimina la necessità di utilizzare un disco durante il ripristino, riducendo significativamente il tempo medio di ripristino (MTTR). I/O

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 addestramento corrente associata al checkpoint salvato

  • rng_states (list o None) — Stati del generatore di numeri casuali memorizzati per il ripristino 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 di Lightning trainer PyTorch

Note:

  • Richiamato CheckpointlessCallback da 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 dei checkpoint, gli stati RNG e i tensori memorizzati nella cache

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

  • Richiamato 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 pari.

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza di Lightning trainer PyTorch

Restituisce:

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

Note:

  • Punto di ingresso 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 l'attuale scenario di errore.

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza di Lightning trainer PyTorch

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

Restituisce:

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

Criteri di convalida:

  • Coerenza globale dei passaggi tra ranghi 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 la 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à dei checkpoint utilizzando i checksum (se abilitati)

Note

  • Utilizza primitive di comunicazione distribuite per un trasferimento P2P efficiente

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

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

PEFTCheckpointManager

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

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

Questo gestore di checkpoint specializzato consente di ottimizzare i flussi CheckpointManager di lavoro PEFT separando 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'offload del checkpoint sulla 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 di Lightning trainer 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 bloccati

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

save_checkpoint(trainer)

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

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza del trainer Lightning 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 addestramento

  • Riduce significativamente le dimensioni dei checkpoint rispetto ai checkpoint del modello completo

try_base_model_checkpointless_load(trainer)

Prova il ripristino senza checkpoint del modello base PEFT caricando lo stato dai ranghi dei pari.

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza del trainer Lightning PyTorch

Restituisce:

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

Note:

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

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

  • Ottimizzato per scenari di ripristino basati esclusivamente sui pesi del modello

try_checkpointless_load(trainer)

Prova il ripristino senza checkpoint dei pesi dell'adattatore PEFT caricando lo stato dai ranghi dei pari.

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza di Lightning trainer PyTorch

Restituisce:

  • dict o None: ripristinato il checkpoint dell'adattatore in caso di successo, None 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

  • Elimina i punti di controllo 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) — State dict key 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()

Sposta 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 ridotti e non richiedono lo scaricamento

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

Note

  • Progettato specificamente per Parameter-Efficient Fine-Tuning scenari (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 di fabbrica per la creazione e la gestione di composizioni di componenti di interruzione per una tolleranza agli errori senza controlli.

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

Parametri

Nessuno (tutti i metodi sono statici)

Metodi statici

get_default_checkpointless_abort()

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

Restituisce:

  • Compose: 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 interruzione da includere nella composizione

Restituisce:

  • Compose: 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 di 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 interruzione da utilizzare come sostituzione

Restituisce:

  • Compose: nuova istanza di 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 durante il processo durante la formazione senza controlli.

Questo gestore di finalizzazione esegue operazioni di pulizia specifiche del framework, tra cui l' Megatron/TransformerEngine interruzione, la pulizia DDP, il ricaricamento dei moduli e la pulizia della memoria distruggendo i riferimenti ai componenti di addestramento. Assicura che l'ambiente di formazione sia ripristinato correttamente per un 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 di parole chiave variabili (ereditati dall'interfaccia Finalize)

Operazioni di pulizia:

  • Megatron Framework Cleanup: chiamate abort_megatron() per ripulire le risorse Megatron-specific

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

  • RoPE Cleanup — Chiamate cleanup_rope() per ripulire le risorse di inclusione della posizione rotativa

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

  • Ricaricamento del modulo: chiamate reload_megatron_and_te() per ricaricare i moduli del framework

  • Lightning Module Cleanup: cancella facoltativamente il modulo Lightning per ridurre la memoria della GPU

  • Memory Cleanup: distrugge i riferimenti dei componenti di training alla memoria libera

register_attributes(trainer)

Registra l'istanza del trainer da utilizzare durante le operazioni di pulizia.

Parametri:

  • trainer (pytorch_lightning.trainer) — Istanza 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 facili 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 tollerante ai guasti.

Tieni presente che l'addestramento senza checkpoint deve essere composto da almeno 2 persone 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.

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.tcpstore o None) — 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:

  • Configurazione principale: richiama la MegatronStrategy configurazione principale

  • Fault Injection Registration: registra HPFaultInjectionCallback gli hook, se presenti

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

  • Annulla registrazione: registra il trainer con i gestori di interruzione che lo supportano

setup_distributed()

Inizializza il gruppo di processi utilizzando TCPStore con prefisso o connessione rootless.

load_model_state_dict(checkpoint, strict=True)

Carica il dict sullo stato del modello con compatibilità con il ripristino senza checkpoint.

Parametri:

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

  • strict (bool, opzionale) — Indica se applicare rigorosamente la corrispondenza delle chiavi di stato dict. Impostazione predefinita: True

get_wrapper()

Ottieni l' HPCallWrapper istanza per il coordinamento della tolleranza ai guasti.

Restituisce:

  • HPCallWrapper— L'istanza del wrapper collegata al trainer per la tolleranza ai guasti

is_peft()

Controlla se PEFT (Parameter-Efficient Fine-Tuning) è abilitato nella configurazione di addestramento controllando i callback PEFT

Restituisce:

  • bool — Vero se è presente il callback PEFT, altrimenti False

teardown()

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

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)

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

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

Parametri

  • enable_inprocess (bool, opzionale): abilita le funzionalità di ripristino in corso. Impostazione predefinita: False

  • enable_checkpointless (bool, opzionale) — Abilita il ripristino senza checkpoint (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) — Cancella i tensor hook 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 se è stato tentato il ripristino senza checkpoint dell'adattatore

Metodi

get_wrapper_from_trainer(trainer)

Richiedete l'istanza dal HPCallWrapper trainer per il coordinamento della tolleranza ai guasti.

Parametri:

  • trainer (pytorch_lightning.trainer) — istanza di Lightning trainer 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)

Richiamata all'inizio di ogni batch di formazione per gestire il monitoraggio e il ripristino 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 attuali del batch di addestramento

  • batch_idx (int) — Indice del batch corrente

  • args — Argomenti posizionali aggiuntivi

  • kwargs — Argomenti aggiuntivi per le 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

  • output (STEP_OUTPUT) — Uscite della fase di formazione

  • batch (Qualsiasi) — Dati attuali del batch di allenamento

  • batch_idx (int) — Indice del batch corrente

Note:

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

  • Viene eseguito solo quando entrambi enable_inprocess sono True 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 Nessuno: istanza di callback PEFT se trovata, None altrimenti

_try_adapter_checkpointless_restore(trainer, params_to_save)

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

Parametri:

  • trainer (pytorch_lightning.trainer) — Istanza del trainer Lightning 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 (controllato da flag) tried_adapter_checkpointless

  • Configura il gestore dei checkpoint 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 la memoria della GPU del modulo Lightning durante i riavvii

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

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

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 _CheckpointConnector e il ripristino dei checkpoint standard. Tenta prima il ripristino senza checkpoint, quindi ritorna 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)

Tenta di precaricare il checkpoint con priorità di ripristino senza checkpoint.

Parametri:

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

resume_end()

Completa il processo di caricamento del checkpoint ed esegui le operazioni di post-caricamento.

Note

  • Estende la _CheckpointConnector classe interna di PyTorch Lightning con il supporto del 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()

Si estende AutoResume con NeMo una configurazione ritardata per consentire la convalida del ripristino senza checkpoint prima della risoluzione del percorso del 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 condizionatamente la AutoResume configurazione per evitare una risoluzione prematura del percorso dei checkpoint, consentendo di verificare innanzitutto se è possibile un ripristino peer-to-peer senza checkpoint. CheckpointManager

Parametri

Eredita tutti i parametri da AutoResume

Metodi

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

Ritarda condizionatamente la AutoResume configurazione 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

  • AutoResume Classe Extenss con NeMo meccanismo di ritardo per consentire il ripristino senza checkpoint

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