View a markdown version of this page

In-process Erholung und Training ohne Kontrollpunkte - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

In-process Erholung und Training ohne Kontrollpunkte

HyperPod Checkpointless Training nutzt Modellredundanz, um ein fehlertolerantes Training zu ermöglichen. Das Kernprinzip besteht darin, dass Modell- und Optimiererstatus über mehrere Knotengruppen hinweg vollständig repliziert werden, wobei Gewichtungsaktualisierungen und Änderungen des Optimiererstatus innerhalb jeder Gruppe synchron repliziert werden. Wenn ein Fehler auftritt, schließen fehlerfreie Replikate ihre Optimierer-Schritte ab und übertragen die aktualisierten Status an die wiederherstellenden Replikate. model/optimizer

Dieser auf Modellredundanz basierende Ansatz ermöglicht mehrere Mechanismen zur Fehlerbehandlung:

  • In-process Wiederherstellung: Prozesse bleiben trotz Fehlern aktiv, wobei alle Modell- und Optimiererzustände mit den neuesten Werten im GPU-Speicher gespeichert werden

  • Ordnungsgemäßer Umgang mit Abbrüchen: kontrollierte Abbrüche und Bereinigung der Ressourcen für betroffene Operationen

  • Wiederausführung von Codeblöcken: Nur die betroffenen Codesegmente innerhalb eines Codeblocks (RCB) werden erneut ausgeführt Re-executable

  • Wiederherstellung ohne Kontrollpunkte ohne Verlust des Trainingsfortschritts: Da die Prozesse andauern und die Zustände im Speicher verbleiben, geht kein Trainingsfortschritt verloren. Wenn ein Fehler auftritt, wird das Training mit dem vorherigen Schritt fortgesetzt, nicht mit dem zuletzt gespeicherten Checkpoint

Konfigurationen ohne Checkpoints

Hier ist der Kernausschnitt des Checkpointless-Trainings.

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: Alle Ränge warten auf die Ranginformationen aus der Infrastruktur. HyperpodTrainingOperator

  • HPWrapper: Python-Funktionswrapper, der Neustartfunktionen für einen Re-executable Codeblock (RCB) ermöglicht. Die Implementierung verwendet einen Kontextmanager anstelle eines Python-Dekorators, da Dekoratoren die Anzahl der RCBs, die zur Laufzeit überwacht werden sollen, nicht bestimmen können.

  • CudaHealthCheck: Stellt sicher, dass sich der CUDA-Kontext für den aktuellen Prozess in einem fehlerfreien Zustand befindet, indem es mit der GPU synchronisiert wird. Verwendet das durch die Umgebungsvariable LOCAL_RANK angegebene Gerät oder verwendet standardmäßig das CUDA-Gerät des Haupt-Threads, wenn LOCAL_RANK nicht gesetzt ist.

  • HPAgentK8sAPIFactory: Diese API ermöglicht Checkpointless-Training, um den Trainingsstatus anderer Pods im Kubernetes-Trainingscluster abzufragen. Sie bietet auch eine Barriere auf Infrastrukturebene, die sicherstellt, dass alle Ränge den Betrieb erfolgreich abschließen, abbrechen und neu starten, bevor sie fortfahren.

  • CheckpointManager: Verwaltet speicherinterne Checkpoints und Peer-to-Peer-Recovery und sorgt so für eine Fehlertoleranz ohne Checkpoints. Es hat die folgenden Kernaufgaben:

    • In-Memory Checkpoint Management: Speichert und verwaltet NeMo Modell-Checkpoints im Arbeitsspeicher, sodass I/O bei Recovery-Szenarien ohne Checkpoint eine schnelle Wiederherstellung ohne Festplatte möglich ist.

    • Überprüfung der Durchführbarkeit der Wiederherstellung: Stellt fest, ob eine Wiederherstellung ohne Checkpoint möglich ist, indem die globale Schrittkonsistenz, der Rangstatus und die Integrität des Modellstatus überprüft werden.

    • Peer-to-Peer Recovery Orchestration: Koordiniert den Checkpoint-Transfer zwischen intakten und ausgefallenen Ranks mithilfe verteilter Kommunikation für eine schnelle Wiederherstellung.

    • RNG State Management: Bewahrt Zufallszahlengeneratorzustände in Python,, und Megatron und stellt sie für eine NumPy PyTorch deterministische Wiederherstellung wieder her.

    • [Optional] Checkpoint-Offload: Lädt den Checkpoint im Speicher auf die CPU aus, wenn die GPU nicht über genügend Speicherkapazität verfügt.

  • PEFTCheckpointManager: Es wird erweitert, CheckpointManager indem die Gewichte des Basismodells für die PEFT-Feinabstimmung beibehalten werden.

  • CheckpointlessAbortManager: Verwaltet Abbruchvorgänge in einem Hintergrund-Thread, wenn ein Fehler auftritt. In der Standardeinstellung werden Abbrüche TransformerEngine, Checkpointing und und TorchDistributed ausgeführt. DataLoader Benutzer können bei Bedarf benutzerdefinierte Abbruchhandler registrieren. Nach Abschluss des Abbruchs muss die gesamte Kommunikation unterbrochen werden und alle Prozesse und Threads müssen beendet werden, um Ressourcenlecks zu verhindern.

  • CheckpointlessFinalizeCleanup: Führt die letzten Bereinigungsvorgänge im Haupt-Thread für Komponenten durch, die im Hintergrund-Thread nicht sicher abgebrochen oder bereinigt werden können.

  • CheckpointlessMegatronStrategy: Dies erbt das MegatronStrategy Formular in Nemo. Beachten Sie, dass beim Training ohne Checkpoint mindestens 2 Teilnehmer erforderlich sindnum_distributed_optimizer_instances, damit der Optimizer repliziert wird. Die Strategie kümmert sich auch um die Registrierung wichtiger Attribute und die Initialisierung von Prozessgruppen, z. B. rootless.

  • CheckpointlessCallback: Lightning-Rückruf, der das NeMo Training in das Fehlertoleranzsystem von Checkpointless Training integriert. Es hat die folgenden Kernaufgaben:

    • Lebenszyklusmanagement für die Trainingsschritte: Verfolgt den Trainingsfortschritt und koordiniert ihn, je ParameterUpdateLock nach Trainingszustand (erster Schritt versus nachfolgende Schritte), bis die Erholung enable/disable ohne Kontrollpunkte abläuft.

    • Koordination der Checkpoint-Zustände: Verwaltet den speicherinternen Checkpoint des PEFT-Basismodells. saving/restoring

  • CheckpointlessCompatibleConnector: Eine PTLCheckpointConnector, die versucht, die Checkpoint-Datei vorab in den Speicher zu laden, wobei der Quellpfad in dieser Priorität bestimmt wird:

    • versuche es mit einer Wiederherstellung ohne Checkpoint

    • Wenn Checkpointless None zurückgibt, greifen Sie auf parent.resume_start () zurück

Sehen Sie sich das Beispiel an, um Codes mit Checkpointless-Trainingsfunktionen zu versehen.

Konzepte

In diesem Abschnitt werden Trainingskonzepte ohne Checkpointless vorgestellt. Das Checkpointless-Training bei Amazon SageMaker HyperPod unterstützt die prozessinterne Wiederherstellung. Diese API-Schnittstelle folgt einem ähnlichen Format wie die NVRx-APIs.

Konzept - Re-Executable Code Block (RCB)

Wenn ein Fehler auftritt, bleiben gesunde Prozesse am Leben, aber ein Teil des Codes muss erneut ausgeführt werden, um die Trainingszustände und Python-Stacks wiederherzustellen. Ein Re-executable Codeblock (RCB) ist ein bestimmtes Codesegment, das bei der Wiederherstellung nach einem Ausfall erneut ausgeführt wird. Im folgenden Beispiel umfasst der RCB das gesamte Trainingsskript (d. h. alles, was unter main () steht), was bedeutet, dass bei jeder Wiederherstellung nach einem Ausfall das Trainingsskript neu gestartet wird, während das speicherinterne Modell und der Optimierer beibehalten werden.

Konzept — Störungskontrolle

Ein Störungssteuermodul erhält Benachrichtigungen, wenn beim Training ohne Checkpoint Fehler auftreten. Dieser Fehlercontroller umfasst die folgenden Komponenten:

  • Fehlererkennungsmodul: Empfängt Infrastruktur-Störungsmeldungen

  • RCB-Definition-APIs: Ermöglicht Benutzern, den wiederausführbaren Codeblock (RCB) in ihrem Code zu definieren

  • Neustartmodul: Beendet den RCB, bereinigt die Ressourcen und startet den RCB neu

Dieses Bild zeigt, wie ein Fault-Controller-Modul Benachrichtigungen erhält, wenn bei einem Training ohne Checkpoint ein Fehler auftritt.

Konzept — Modellredundanz

Für das Training großer Modelle ist in der Regel eine ausreichend große parallele Datengröße erforderlich, um Modelle effizient trainieren zu können. Bei herkömmlicher Datenparallelität wie PyTorch DDP und Horovod wird das Modell vollständig repliziert. Fortgeschrittenere Techniken zur parallelen Nutzung von Daten wie DeepSpeed zERO Optimizer und FSDP unterstützen auch den hybriden Sharding-Modus, der das Sharding der Status innerhalb der Sharding-Gruppe und die vollständige Replikation über Replikationsgruppen hinweg ermöglicht. model/optimizer NeMo verfügt auch über diese hybride Sharding-Funktion über ein Argument num_distributed_optimizer_instances, das Redundanz ermöglicht.

Das Hinzufügen von Redundanz bedeutet jedoch, dass das Modell nicht vollständig über den gesamten Cluster verteilt wird, was zu einer höheren Gerätespeichernutzung führt. Die Menge des redundanten Speichers hängt von den spezifischen Sharding-Techniken des Modells ab, die vom Benutzer implementiert werden. Die Gewichtungen, Gradienten und der Aktivierungsspeicher von Modellen mit niedriger Genauigkeit sind davon nicht betroffen, da sie durch Modellparallelität aufgeteilt werden. Das hochpräzise Mastermodell weights/gradients und der Optimierer sind davon betroffen. Das Hinzufügen eines redundanten Modellreplikats erhöht die Speichernutzung des Geräts um ungefähr das Äquivalent einer DCP-Checkpoint-Größe.

Beim hybriden Sharding werden die Kollektive der gesamten DP-Gruppen in relativ kleinere Kollektive aufgeteilt. Zuvor gab es in der gesamten DP-Gruppe einen Reduce-Scatter und einen All-Gather. Nach dem Hybrid-Sharding läuft die Streureduzierung nur noch innerhalb der einzelnen Modellreplikate, und es findet eine Gesamtreduzierung über alle Modellreplikatgruppen hinweg statt. Der All-Gather wird auch in jedem Modellreplikat ausgeführt. Infolgedessen bleibt das gesamte Kommunikationsvolumen in etwa unverändert, aber Kollektive werden mit kleineren Gruppen ausgeführt, sodass wir eine bessere Latenz erwarten.

Konzept — Fehler- und Neustarttypen

In der folgenden Tabelle sind die verschiedenen Fehlertypen und die zugehörigen Wiederherstellungsmechanismen aufgeführt. Beim Checkpointless-Training wird zunächst versucht, den Ausfall durch eine prozessinterne Wiederherstellung zu beheben, gefolgt von einem Neustart auf Prozessebene. Nur bei einem katastrophalen Ausfall (z. B. wenn mehrere Knoten gleichzeitig ausfallen) wird auf einen Neustart auf Auftragsebene zurückgegriffen.

Art des Fehlers Ursache Art der Wiederherstellung Wiederherstellungsmechanismus
In-process Misserfolg Code-level Fehler, Ausnahmen In-Process Wiederherstellung (IPR) Führen Sie RCB innerhalb des bestehenden Prozesses erneut aus; gesunde Prozesse bleiben aktiv
Fehler beim Neustart des Prozesses Beschädigter CUDA-Kontext, Prozess beendet Neustart auf Prozessebene (PLR) SageMaker HyperPod Der trainierende Operator startet Prozesse neu; überspringt den K8s-Pod-Neustart
Fehler beim Austausch des Knotens Dauerhafter node/GPU Hardwarefehler Neustart auf Jobebene (JLR) Ersetzen Sie den ausgefallenen Knoten; starten Sie den gesamten Trainingsjob neu

Konzept: Atomic Lock-Schutz für den Optimizer-Schritt

Die Modellausführung ist in drei Phasen unterteilt: Vorwärtsausbreitung, Rückwärtsausbreitung und Optimierer-Schritt. Das Wiederherstellungsverhalten variiert je nach Zeitpunkt des Fehlers:

  • Forward/backward Propagierung: Gehen Sie zurück zum Anfang des aktuellen Trainingsschritts und übertragen Sie den Modellstatus an die Ersatzknoten

  • Optimizer-Schritt: Lassen Sie fehlerfreie Replikate den Schritt unter Sperrschutz abschließen, und übertragen Sie dann die aktualisierten Modellzustände an die Ersatzknoten

Diese Strategie stellt sicher, dass abgeschlossene Optimizer-Updates niemals verworfen werden, was dazu beiträgt, die Zeit für die Fehlerbehebung zu verkürzen.

Dieses Bild zeigt, wie ein Fehler behandelt wird, je nachdem, ob er vor oder nach dem Ausfall auftritt.

Ablaufdiagramm für das Training ohne Kontrollpunkte

Dieses Diagramm veranschaulicht den Trainingsablauf ohne Checkpoints.

Die folgenden Schritte beschreiben den Prozess der Fehlererkennung und der Wiederherstellung ohne Checkpoint:

  1. Die Trainingsschleife beginnt

  2. Fehler tritt auf

  3. Beurteilen Sie die Machbarkeit eines Lebenslaufs ohne Kontrollpunkte

  4. Prüfen Sie, ob es möglich ist, einen Lebenslauf ohne Kontrollpunkt zu erstellen

    • Wenn möglich, versuchen Sie es mit einem Checkpointless Resume

      • Wenn die Wiederaufnahme fehlschlägt, greifen Sie auf das Laden des Checkpoints aus dem Speicher zurück

      • Wenn die Wiederaufnahme erfolgreich ist, wird das Training aus dem wiederhergestellten Zustand fortgesetzt

    • Wenn dies nicht möglich ist, greifen Sie auf das Laden des Checkpoints aus dem Speicher zurück

  5. Ressourcen bereinigen — brechen Sie alle Prozessgruppen und Backends ab und geben Sie Ressourcen frei, um den Neustart vorzubereiten.

  6. Trainingsschleife fortsetzen — eine neue Trainingsschleife beginnt, und der Prozess kehrt zu Schritt 1 zurück.

API-Referenz

wait_rank

hyperpod_checkpointless_training.inprocess.train_utils.wait_rank()

Wartet auf Ranginformationen von HyperPod und aktualisiert dann die aktuelle Prozessumgebung mit verteilten Trainingsvariablen.

Diese Funktion ermittelt die korrekte Rangzuweisung und die Umgebungsvariablen für verteiltes Training. Sie stellt sicher, dass jeder Prozess die für seine Rolle in der verteilten Trainingsaufgabe geeignete Konfiguration erhält.

Parameter

Keine

Rückgabewerte

Keine

Behavior

  • Prozessüberprüfung: Überspringt die Ausführung, wenn sie von einem Unterprozess aus aufgerufen wird (läuft nur in) MainProcess

  • Umgebungsabruf: Ruft aktuelle RANK und WORLD_SIZE aus Umgebungsvariablen ab

  • HyperPod Kommunikation: Aufrufe hyperpod_wait_rank_info() zum Abrufen von Ranginformationen von HyperPod

  • Umgebungs-Update: Aktualisiert die aktuelle Prozessumgebung mit arbeiterspezifischen Umgebungsvariablen, die von HyperPod

Umgebungsvariablen

Die Funktion liest die folgenden Umgebungsvariablen:

  • RANK (int) — Aktueller Prozessrang (Standard: -1, falls nicht gesetzt)

  • WORLD_SIZE (int) — Gesamtzahl der Prozesse im verteilten Job (Standard: 0, falls nicht gesetzt)

Erhöht

  • AssertionError— Wenn die Antwort von nicht HyperPod das erwartete Format hat oder wenn Pflichtfelder fehlen

Beispiel

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

Hinweise

  • Wird nur im Hauptprozess ausgeführt; Unterprozess-Aufrufe werden automatisch übersprungen

  • Die Funktion blockiert, bis die Ranginformationen HyperPod bereitgestellt werden

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)

Python-Funktionswrapper, der Neustartfunktionen für einen Re-executable Codeblock (RCB) beim Training ohne Checkpoint ermöglicht. HyperPod

Dieser Wrapper bietet Funktionen für Fehlertoleranz und automatische Wiederherstellung, indem er die Trainingsausführung überwacht und Neustarts über verteilte Prozesse hinweg koordiniert, wenn Fehler auftreten. Es verwendet einen Kontextmanager-Ansatz anstelle eines Dekorators, um globale Ressourcen während des gesamten Trainingszyklus aufrechtzuerhalten.

Parameter

  • abort (Abort, optional) — Bricht die Ausführung asynchron ab, wenn Fehler erkannt werden. Standard: Compose(HPAbortTorchDistributed())

  • finalize (Finalize, optional) — Finalize-Handler, der beim Neustart ausgeführt wird. Rank-local Standard: None

  • health_check (HealthCheck, optional) — Rank-local Zustandsprüfung, die während des Neustarts ausgeführt wird. Standard: None

  • hp_api_factory (Aufrufbar, optional) — Factory-Funktion zum Erstellen einer API zur Interaktion. HyperPod HyperPod Standard: None

  • abort_timeout (float, optional) — Timeout für den Abbruch eines Aufrufs im Fehlersteuerungsthread. Standard: None

  • enabled (bool, optional) — Aktiviert die Wrapper-Funktionalität. WennFalse, wird der Wrapper zu einem Pass-Through. Standard: True

  • trace_file_path (str, optional) — Pfad zur Trace-Datei für die Profilerstellung. VizTracer Standard: None

  • async_raise_before_abort (bool, optional) — Aktiviert die Erhöhung vor dem Abbruch im Thread zur Fehlerkontrolle. Standard: True

  • early_abort_communicator (bool, optional) — Bricht den Communicator () ab, bevor der Dataloader abgebrochen wird. NCCL/Gloo Standard: False

  • checkpoint_manager (Beliebig, optional) — Manager für die Behandlung von Checkpoints während der Wiederherstellung. Standard: None

  • check_memory_status (bool, optional) — Aktiviert die Überprüfung und Protokollierung des Speicherstatus. Standard: True

Methoden

def __call__(self, fn)

Umschließt eine Funktion, um Neustartfunktionen zu aktivieren.

Parameter:

  • fn (Callable) — Die Funktion, die mit Neustartfunktionen umschlossen werden soll

Gibt zurück:

  • Aufrufbar — Umschlossene Funktion mit Neustartfunktionen oder Originalfunktion, falls deaktiviert

Beispiel

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

Hinweise

  • Der Wrapper muss verfügbar torch.distributed sein

  • Wennenabled=False, wird der Wrapper zu einem Pass-Through und gibt die ursprüngliche Funktion unverändert zurück

  • Der Wrapper verwaltet globale Ressourcen wie die Überwachung von Threads während des gesamten Trainingszyklus

  • Unterstützt VizTracer Profiling, wenn es bereitgestellt wird trace_file_path

  • Lässt sich in integrieren und sorgt so HyperPod für eine koordinierte Fehlerbehandlung bei verteilten Schulungen

HPCallWrapper

class hyperpod_checkpointless_training.inprocess.wrap.HPCallWrapper(wrapper)

Überwacht und verwaltet den Status eines Restart Code Blocks (RCB) während der Ausführung.

Diese Klasse behandelt den Lebenszyklus der RCB-Ausführung, einschließlich der Fehlererkennung, der Koordination mit anderen Rängen für Neustarts und Bereinigungsvorgänge. Es verwaltet die verteilte Synchronisation und gewährleistet eine konsistente Wiederherstellung aller Trainingsprozesse.

Parameter

  • Wrapper (HPWrapper) — Der übergeordnete Wrapper, der globale Einstellungen für die prozessinterne Wiederherstellung enthält

Attribute

  • step_upon_restart (int) — Zähler, der die Schritte seit dem letzten Neustart verfolgt und zur Festlegung der Neustartstrategie verwendet wird

Methoden

def initialize_barrier()

Warten Sie auf die HyperPod Barrieren-Synchronisierung, nachdem Sie auf eine Ausnahme von RCB gestoßen sind.

def start_hp_fault_handling_thread()

Starten Sie den Fehlerbehandlungs-Thread zur Überwachung und Koordination von Ausfällen.

def handle_fn_exception(call_ex)

Verarbeiten Sie Ausnahmen aus der Ausführungsfunktion oder RCB.

Parameter:

  • call_ex (Exception) — Ausnahme von der Überwachungsfunktion

def restart(term_ex)

Führt den Neustart-Handler aus, einschließlich Finalisierung, Garbage-Collection und Zustandsprüfungen.

Parameter:

  • term_ex (RankShouldRestart) — Terminierungsausnahme, die den Neustart auslöst

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

Führt den RCB mit der richtigen Ausnahmebehandlung aus.

Parameter:

  • fn (Callable) — Funktion, die ausgeführt werden soll

  • a — Argumente der Funktion

  • kw — Argumente für Funktionsschlüsselwörter

def run(fn, a, kw)

Hauptausführungsschleife, die Neustarts und die Barrierensynchronisierung verarbeitet.

Parameter:

  • fn (Callable) — Funktion, die ausgeführt werden soll

  • a — Argumente der Funktion

  • kw — Argumente für Funktionsschlüsselwörter

def shutdown()

Threads zur Fehlerbehandlung und Überwachung von Threads herunterfahren.

Hinweise

  • Behandelt automatisch RankShouldRestart Ausnahmen für eine koordinierte Wiederherstellung

  • Verwaltet Speicherverfolgung und Speicherabbrüche sowie die Speicherbereinigung bei Neustarts

  • Unterstützt sowohl Strategien zur prozessinternen Wiederherstellung als auch PLR-Strategien (Process-Level Restart), die auf dem Fehlerzeitpunkt basieren

CudaHealthCheck

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

Stellt sicher, dass sich der CUDA-Kontext für den aktuellen Prozess während der Trainingswiederherstellung ohne Checkpoint in einem gesunden Zustand befindet.

Diese Integritätsprüfung wird mit der GPU synchronisiert, um sicherzustellen, dass der CUDA-Kontext nach einem Trainingsfehler nicht beschädigt ist. Es führt GPU-Synchronisierungsvorgänge durch, um Probleme zu erkennen, die eine erfolgreiche Wiederaufnahme des Trainings verhindern könnten. Die Integritätsprüfung wird ausgeführt, nachdem verteilte Gruppen zerstört wurden und die Finalisierung abgeschlossen ist.

Parameter

  • timeout (datetime.timedelta, optional) — Timeout-Dauer für GPU-Synchronisierungsvorgänge. Standard: datetime.timedelta(seconds=30)

Methoden

__call__(state, train_ex=None)

Führen Sie die CUDA-Integritätsprüfung aus, um die Integrität des GPU-Kontexts zu überprüfen.

Parameter:

  • state (hpState) — Aktueller Status, der HyperPod Ranginformationen und verteilte Informationen enthält

  • train_ex (Ausnahme, optional) — Die ursprüngliche Trainingsausnahme, die den Neustart ausgelöst hat. Standard: None

Gibt zurück:

  • tupel — Ein Tupel, das (state, train_ex) Unveränderte enthält, ob die Integritätsprüfung bestanden wurde

Erhöht:

  • TimeoutError— Wenn bei der GPU-Synchronisierung ein Timeout auftritt, was auf einen potenziell beschädigten CUDA-Kontext hinweist

Zustandserhaltung: Gibt den ursprünglichen Zustand und die Ausnahme unverändert zurück, wenn alle Prüfungen bestanden wurden

Beispiel

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

Hinweise

  • Verwendet Threading, um den Timeout-Schutz für die GPU-Synchronisierung zu implementieren

  • Entwickelt, um beschädigte CUDA-Kontexte zu erkennen, die eine erfolgreiche Wiederaufnahme des Trainings verhindern könnten

  • Sollte als Teil der Fehlertoleranz-Pipeline in verteilten Trainingsszenarien verwendet werden

HPAgentK8sAPIFactory

class hyperpod_checkpointless_training.inprocess.train_utils.HPAgentK8sAPIFactory()

Factory-Klasse zur Erstellung von HPAgentk8SAPI-Instanzen, die mit der Infrastruktur für die verteilte Trainingskoordination kommunizieren HyperPod .

Diese Factory bietet eine standardisierte Methode zum Erstellen und Konfigurieren von HPAgentk8SAPI-Objekten, die die Kommunikation zwischen Trainingsprozessen und der Steuerungsebene verwalten. HyperPod Sie kapselt die Erstellung des zugrunde liegenden Socket-Clients und der API-Instanz und gewährleistet so eine konsistente Konfiguration in verschiedenen Teilen des Trainingssystems.

Methoden

__call__()

Erstellen Sie eine HPAgentk8SAPI-Instanz, die für die Kommunikation konfiguriert ist, und geben Sie sie zurück. HyperPod

Gibt Folgendes zurück:

  • hpagentk8sapi — Konfigurierte API-Instanz für die Kommunikation mit der Infrastruktur HyperPod

Beispiel

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

Hinweise

  • Konzipiert, um nahtlos mit der Infrastruktur zusammenzuarbeiten. HyperPod Kubernetes-based Es ist unerlässlich für eine koordinierte Fehlerbehandlung und -behebung in verteilten Trainingsszenarien

CheckpointManager

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

Verwaltet speicherinterne Checkpoints und Peer-to-Peer-Recovery und sorgt so für eine fehlertolerante Fehlertoleranz ohne Checkpoints bei verteiltem Training.

Dieser Kurs bietet die Kernfunktionen für Training HyperPod ohne Checkpoints. Er verwaltet NeMo Modell-Checkpoints im Speicher, validiert die Durchführbarkeit der Wiederherstellung und orchestriert den Peer-to-Peer-Checkpoint-Transfer zwischen gesunden und ausgefallenen Rängen. Bei der Wiederherstellung ist keine Festplatte erforderlich, wodurch die mittlere I/O Wiederherstellungszeit (MTTR) erheblich reduziert wird.

Parameter

  • enable_checksum (bool, optional) — Aktiviert die Überprüfung der Modellstatus-Prüfsumme für Integritätsprüfungen während der Wiederherstellung. Standard: False

  • enable_offload (bool, optional) — Aktiviert das Checkpoint-Offloading von der GPU in den CPU-Speicher, um die GPU-Speichernutzung zu reduzieren. Standard: False

Attribute

  • global_step (int oder None) — Aktueller Trainingsschritt, der dem gespeicherten Checkpoint zugeordnet ist

  • rng_states (list or None) — Gespeicherte Zufallszahlengeneratorzustände für die deterministische Wiederherstellung

  • checksum_manager (MemoryChecksumManager) — Manager für die Validierung von Modellstatus-Prüfsummen

  • parameter_update_lock (ParameterUpdateLock) — Sperre zur Koordination von Parameteraktualisierungen während der Wiederherstellung

Methoden

save_checkpoint(trainer)

Speichert den NeMo Modell-Checkpoint für eine mögliche Wiederherstellung ohne Checkpoint im Speicher.

Parameter:

  • trainer (pyTorch_Lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Hinweise:

  • Wird am Batch-Ende oder während der Ausnahmebehandlung CheckpointlessCallback aufgerufen

  • Erstellt Wiederherstellungspunkte ohne I/O Festplatten-Overhead

  • Speichert den vollständigen Status von Modell, Optimierer und Scheduler

delete_checkpoint()

Löschen Sie den speicherinternen Checkpoint und führen Sie Bereinigungsvorgänge durch.

Hinweise:

  • Löscht Checkpoint-Daten, RNG-Zustände und zwischengespeicherte Tensoren

  • Führt die Speicherbereinigung und die CUDA-Cache-Bereinigung durch

  • Wird nach einer erfolgreichen Wiederherstellung aufgerufen oder wenn der Checkpoint nicht mehr benötigt wird

try_checkpointless_load(trainer)

Versuchen Sie eine Wiederherstellung ohne Checkpoint, indem Sie den Status von Peer-Ranks laden.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Gibt zurück:

  • dict oder None — Checkpoint wurde wiederhergestellt, falls erfolgreich, None, wenn ein Fallback auf die Festplatte erforderlich ist

Hinweise:

  • Haupteinstiegspunkt für eine Wiederherstellung ohne Checkpoint

  • Überprüft die Durchführbarkeit einer Wiederherstellung, bevor eine P2P-Übertragung versucht wird

  • Bereinigt nach einem Wiederherstellungsversuch immer die im Speicher befindlichen Checkpoints

checkpointless_recovery_feasible(trainer, include_checksum_verification=True)

Stellen Sie fest, ob eine Wiederherstellung ohne Checkpoint für das aktuelle Fehlerszenario möglich ist.

Parameter:

  • trainer (pyTorch_Lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

  • include_checksum_verification (bool, optional) — Ob eine Prüfsummenvalidierung eingeschlossen werden soll. Standard: True

Gibt zurück:

  • bool — Wahr, wenn eine Wiederherstellung ohne Checkpoint möglich ist, andernfalls False

Validierungskriterien:

  • Globale Schrittkonstanz in allen gesunden Rängen

  • Es stehen ausreichend gesunde Replikate für die Wiederherstellung zur Verfügung

  • Integrität der Prüfsumme für den Modellstatus (falls aktiviert)

store_rng_states()

Speichern Sie alle Zustandswerte des Zufallszahlengenerators für eine deterministische Wiederherstellung.

Hinweise:

  • Erfasst die RNG-Zustände von Python NumPy PyTorch CPU/GPU,, und Megatron

  • Unverzichtbar für die Aufrechterhaltung des Trainingsdeterminismus nach der Erholung

load_rng_states()

Stellen Sie alle RNG-Zustände wieder her, um die deterministische Erholung fortzusetzen.

Hinweise:

  • Stellt alle zuvor gespeicherten RNG-Zustände wieder her

  • Stellt sicher, dass das Training mit identischen Zufallssequenzen fortgesetzt wird

maybe_offload_checkpoint()

Lädt den Checkpoint von der GPU in den CPU-Speicher aus, wenn Offload aktiviert ist.

Hinweise:

  • Reduziert die GPU-Speicherauslastung für große Modelle

  • Wird nur ausgeführt, wenn enable_offload=True

  • Behält den Zugriff auf Checkpoints für die Wiederherstellung bei

Beispiel

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

Validierung: Überprüft die Integrität von Checkpoints anhand von Prüfsummen (falls aktiviert)

Hinweise

  • Verwendet verteilte Kommunikationsprimitive für eine effiziente P2P-Übertragung

  • Verarbeitet automatisch Tensor-D-Typ-Konvertierungen und die Geräteplatzierung

  • MemoryChecksumManager— Führt die Überprüfung der Integrität des Modellzustands durch

PEFTCheckpointManager

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

Verwaltet Checkpoints für PEFT (Parameter-Efficient Fine-Tuning) mit separater Basis- und Adapterverwaltung für eine optimierte Wiederherstellung ohne Checkpoints.

Dieser spezialisierte Checkpoint-Manager wird erweitert, um PEFT-Workflows CheckpointManager zu optimieren, indem er die Gewichtungen des Basismodells von den Adapterparametern trennt.

Parameter

Erbt alle Parameter von: CheckpointManager

  • enable_checksum (bool, optional) — Aktiviert die Validierung der Modellstatus-Prüfsumme. Standard: False

  • enable_offload (bool, optional) — Aktiviert das Checkpoint-Offloading in den CPU-Speicher. Standard: False

Zusätzliche Attribute

  • params_to_save (set) — Satz von Parameternamen, die als Adapterparameter gespeichert werden sollen

  • base_model_weights (dict oder None) — Zwischengespeicherte Gewichtungen des Basismodells, einmal gespeichert und wiederverwendet

  • base_model_keys_to_extract (list oder None) — Schlüssel zum Extrahieren von Basismodell-Tensoren während der P2P-Übertragung

Methoden

maybe_save_base_model(trainer)

Speichern Sie die Gewichte des Basismodells einmal und filtern Sie die Adapterparameter heraus.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Hinweise:

  • Speichert nur die Gewichtungen des Basismodells beim ersten Aufruf; nachfolgende Aufrufe sind ohne Operation

  • Filtert Adapterparameter heraus, um nur eingefrorene Gewichte des Basismodells zu speichern

  • Die Gewichte des Basismodells bleiben über mehrere Trainingseinheiten hinweg erhalten

save_checkpoint(trainer)

Speichern Sie den Checkpoint des NeMo PEFT-Adaptermodells im Speicher, um eine Wiederherstellung ohne Checkpoint zu ermöglichen.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Hinweise:

  • Ruft automatisch auf, wenn das Basismodell noch nicht gespeichert ist maybe_save_base_model()

  • Filtert den Checkpoint so, dass nur Adapterparameter und Trainingsstatus enthalten sind

  • Reduziert die Checkpoint-Größe erheblich im Vergleich zu Checkpoints im vollständigen Modell

try_base_model_checkpointless_load(trainer)

Beim Versuch des PEFT-Basismodells wird die Wiederherstellung ohne Checkpoints gewichtet, indem der Status von Peer-Ranks geladen wird.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Gibt zurück:

  • dict or None — Der Checkpoint des Basismodells wurde bei Erfolg wiederhergestellt, None, wenn ein Fallback erforderlich ist

Hinweise:

  • Wird bei der Modellinitialisierung verwendet, um die Gewichte des Basismodells wiederherzustellen

  • Bereinigt die Gewichte des Basismodells nach der Wiederherstellung nicht (sie werden zur Wiederverwendung aufbewahrt)

  • Optimiert für Wiederherstellungsszenarien, bei denen ausschließlich Modellgewichte verwendet werden

try_checkpointless_load(trainer)

Versuchen Sie, mithilfe des PEFT-Adapters die Wiederherstellung ohne Checkpoint zu gewichten, indem der Status von Peer-Ranks geladen wird.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Gibt zurück:

  • dict oder None — Der Adapter-Checkpoint wurde bei Erfolg wiederhergestellt, None, wenn ein Fallback erforderlich ist

Hinweise:

  • Stellt nur Adapterparameter, Optimizer-Status und Scheduler wieder her

  • Lädt nach erfolgreicher Wiederherstellung automatisch die Optimizer- und Scheduler-Status

  • Bereinigt die Adapter-Checkpoints nach dem Wiederherstellungsversuch

is_adapter_key(key)

Prüfen Sie, ob der State-Dikt-Schlüssel zu den Adapterparametern gehört.

Parameter:

  • key (str oder tuple) — Der zu prüfende State-Diktatschlüssel

Gibt zurück:

  • bool — Wahr, wenn der Schlüssel ein Adapterparameter ist, False, wenn der Basismodellparameter

Erkennungslogik:

  • Prüft, ob der Schlüssel params_to_save gesetzt ist

  • Identifiziert Schlüssel, die „.adapter“ enthalten. substring

  • Identifiziert Schlüssel, die mit „.adapters“ enden

  • Prüft bei Tupelschlüsseln, ob der Parameter Gradienten erfordert

maybe_offload_checkpoint()

Verlagert die Gewichte des Basismodells von der GPU in den CPU-Speicher.

Hinweise:

  • Erweitert die übergeordnete Methode, um die Gewichtsverlagerung des Basismodells zu handhaben

  • Adaptergewichte sind in der Regel klein und müssen nicht abgenommen werden

  • Setzt ein internes Kennzeichen, um den Offload-Status zu verfolgen

Hinweise

  • Speziell für Parameter-Efficient Fine-Tuning Szenarien (LoRa, Adapter usw.) entwickelt

  • Behandelt automatisch die Trennung von Basismodell- und Adapterparametern

Beispiel

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

Factory-Klasse zur Erstellung und Verwaltung von Zusammenstellungen von Abbruchkomponenten im Sinne einer fehlerfreien Fehlertoleranz.

Diese Dienstprogrammklasse bietet statische Methoden zum Erstellen, Anpassen und Verwalten von Abbruchkomponentenkompositionen, die bei der Fehlerbehandlung beim Training ohne HyperPod Checkpoint verwendet werden. Sie vereinfacht die Konfiguration von Abbruchsequenzen, die die Bereinigung verteilter Trainingskomponenten, Datenlader und Framework-spezifischer Ressourcen bei der Wiederherstellung nach einem Ausfall übernehmen.

Parameter

Keine (alle Methoden sind statisch)

Statische Methoden

get_default_checkpointless_abort()

Ruft die Standard-Abort-Compose-Instanz ab, die alle Standard-Abbruchkomponenten enthält.

Gibt zurück:

  • Compose — Standardinstanz für komponierte Abbrüche mit allen Abbruchkomponenten

Standardkomponenten:

  • AbortTransformerEngine() — Bereinigt Ressourcen TransformerEngine

  • HPCheckpointingAbort() — Übernimmt die Checkpointing-Systembereinigung

  • HPAbortTorchDistributed() — PyTorch Bricht verteilte Operationen ab

  • HPDataLoaderAbort() — Stoppt und bereinigt Datenlader

create_custom_abort(abort_instances)

Erstellen Sie eine benutzerdefinierte Abbruchkomposition, die nur die angegebenen Abbruchinstanzen enthält.

Parameter:

  • abort_instances (Abort) — Variable Anzahl von Abbruchinstanzen, die in die Erstellung aufgenommen werden sollen

Gibt zurück:

  • Compose — Neue komponierte Abbruchinstanz, die nur die angegebenen Komponenten enthält

Erhöht:

  • ValueError— Wenn keine Abbruchinstanzen bereitgestellt werden

override_abort(abort_compose, abort_type, new_abort)

Ersetzen Sie eine bestimmte Abbruchkomponente in einer Compose-Instanz durch eine neue Komponente.

Parameter:

  • abort_compose (Compose) — Die ursprüngliche Compose-Instanz, die geändert werden soll

  • abort_type (type) — Der Typ der zu ersetzenden Abbruchkomponente (z. B.) HPCheckpointingAbort

  • new_abort (Abort) — Die neue Abbruchinstanz, die als Ersatz verwendet werden soll

Gibt zurück:

  • Compose — Neue Compose-Instanz, bei der die angegebene Komponente ersetzt wurde

Erhöht:

  • ValueError— Wenn abort_compose kein 'instanzen'-Attribut hat

Beispiel

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

Hinweise

  • Benutzerdefinierte Konfigurationen ermöglichen eine fein abgestimmte Steuerung des Bereinigungsverhaltens

  • Abbruchvorgänge sind entscheidend für eine ordnungsgemäße Bereinigung der Ressourcen während der Fehlerbehebung

CheckpointlessFinalizeCleanup

class hyperpod_checkpointless_training.inprocess.abort.CheckpointlessFinalizeCleanup()

Führt nach der Fehlererkennung eine umfassende Säuberung durch, um die Wiederherstellung während des Prozesses während des Trainings ohne Kontrollpunkte vorzubereiten.

Dieser Finalize-Handler führt Framework-spezifische Bereinigungsvorgänge aus, darunter Megatron/TransformerEngine Abbruch, DDP-Bereinigung, erneutes Laden von Modulen und Speicherbereinigung, indem Verweise auf Trainingskomponenten gelöscht werden. Er stellt sicher, dass die Trainingsumgebung für eine erfolgreiche prozessinterne Wiederherstellung ordnungsgemäß zurückgesetzt wird, ohne dass ein vollständiger Prozessabbruch erforderlich ist.

Parameter

Keine

Attribute

  • trainer (pytorch_lightning.Trainer oder None) — Verweis auf die Lightning-Trainer-Instanz PyTorch

Methoden

__call__(*a, **kw)

Führen Sie umfassende Bereinigungsvorgänge aus, um die Wiederherstellung während des Prozesses vorzubereiten.

Parameter:

  • a — Variable Positionsargumente (von der Finalize-Schnittstelle geerbt)

  • kw — Variable Schlüsselwortargumente (von der Finalize-Schnittstelle geerbt)

Aufräumarbeiten:

  • Megatron Framework Cleanup — Aufrufe abort_megatron() zur Bereinigung der Ressourcen Megatron-specific

  • TransformerEngine Cleanup — Aufrufe abort_te() zur Bereinigung von Ressourcen TransformerEngine

  • RoPE Cleanup — Ruft dazu aufcleanup_rope(), Ressourcen zu bereinigen, die in Rotationspositionen eingebettet sind

  • DDP Cleanup — Ruft dazu cleanup_ddp() auf, Ressourcen zu bereinigen DistributedDataParallel

  • Neuladen von Modulen — Aufrufe reload_megatron_and_te() zum erneuten Laden von Framework-Modulen

  • Lightning-Modulbereinigung — Löscht optional das Lightning-Modul, um den GPU-Speicher zu reduzieren

  • Speicherbereinigung — Zerstört die Verweise von Trainingskomponenten auf freien Speicher

register_attributes(trainer)

Registrieren Sie die Trainer-Instanz für die Verwendung bei Bereinigungsvorgängen.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz zur Registrierung PyTorch

Integration mit 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(...)

Hinweise

  • Bereinigungsvorgänge werden in einer bestimmten Reihenfolge ausgeführt, um Abhängigkeitsprobleme zu vermeiden

  • Die Speicherbereinigung verwendet die Introspektion der Garbage Collection, um Zielobjekte zu finden

  • Alle Bereinigungsvorgänge sind so konzipiert, dass sie idempotent sind und sicher wiederholt werden können

CheckpointlessMegatronStrategy

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

NeMo Megatron-Strategie mit integrierten Funktionen zur Wiederherstellung ohne Checkpoint für fehlertolerantes verteiltes Training.

Beachten Sie, dass beim Training ohne Checkpoint mindestens 2 Teilnehmer erforderlich sindnum_distributed_optimizer_instances, damit der Optimizer repliziert wird. Die Strategie kümmert sich auch um die Registrierung wichtiger Attribute und die Initialisierung von Prozessgruppen.

Parameter

Erbt alle Parameter von: MegatronStrategy

  • NeMo MegatronStrategy Standard-Initialisierungsparameter

  • Konfigurationsoptionen für verteilte Schulungen

  • Einstellungen für Modellparallelität

Attribute

  • base_store (torch.distributed.TcpStore or None) — Verteilter Speicher für die Koordination von Prozessgruppen

Methoden

setup(trainer)

Initialisieren Sie die Strategie und registrieren Sie die Fehlertoleranzkomponenten beim Trainer.

Parameter:

  • trainer (pyTorch_Lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Vorgänge einrichten:

  • Parent Setup — Ruft Parent MegatronStrategy Setup auf

  • Fault Injection Registration — Registriert HPFaultInjectionCallback Hooks, falls vorhanden

  • Registrierung abschließen — Registriert den Trainer bei den Finalize-Cleanup-Handlern

  • Registrierung abbrechen — Registriert den Trainer mit Abbruch-Handlern, die dies unterstützen

setup_distributed()

Initialisieren Sie die Prozessgruppe entweder mit TCPStore mit Präfix oder mit einer Rootless-Verbindung.

load_model_state_dict(checkpoint, strict=True)

Laden Sie das Modellstatusdiktat mit Recovery-Kompatibilität ohne Checkpoint.

Parameter:

  • checkpoint (Mapping [str, Any]) — Checkpoint-Wörterbuch, das den Modellstatus enthält

  • strict (bool, optional) — Ob der Schlüsselabgleich mit einem staatlichen Diktat strikt erzwungen werden soll. Standard: True

get_wrapper()

Ruft die HPCallWrapper Instanz für die Fehlertoleranzkoordination ab.

Gibt zurück:

  • HPCallWrapper— Die Wrapper-Instanz, die aus Gründen der Fehlertoleranz an den Trainer angehängt ist

is_peft()

Überprüfe, ob PEFT (Parameter-Efficient Fine-Tuning) in der Trainingskonfiguration aktiviert ist, indem du nach PEFT-Callbacks suchst

Kehrt zurück:

  • bool — Wahr, wenn ein PEFT-Callback vorhanden ist, andernfalls False

teardown()

Überschreiben Sie den nativen PyTorch Lightning-Teardown, um die Bereinigung an Abbruchhandler zu delegieren.

Beispiel

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-Rückruf, der das NeMo Training in das Fehlertoleranzsystem von Checkpointless Training integriert.

Dieser Callback verwaltet die Schrittverfolgung, das Speichern von Prüfpunkten und die Koordination von Parameteraktualisierungen für die prozessinterne Wiederherstellung. Er dient als primärer Integrationspunkt zwischen PyTorch Lightning-Trainingsschleifen und HyperPod Checkpointless-Trainingsmechanismen und koordiniert Fehlertoleranzmaßnahmen während des gesamten Trainingszyklus.

Parameter

  • enable_inprocess (bool, optional) — Aktiviert Funktionen zur prozessinternen Wiederherstellung. Standard: False

  • enable_checkpointless (bool, optional) — Aktiviert die Wiederherstellung ohne Checkpoint (erforderlich). enable_inprocess=True Standard: False

  • enable_checksum (bool, optional) — Aktiviert die Überprüfung der Modellstatus-Prüfsumme (erforderlich). enable_checkpointless=True Standard: False

  • clean_tensor_hook (bool, optional) — Löscht während der Bereinigung Tensor-Hooks von allen GPU-Tensoren (teurer Vorgang). Standard: False

  • clean_lightning_module (bool, optional) — Aktiviere die Lightning-Modulbereinigung, um nach jedem Neustart GPU-Speicher freizugeben. Standard: False

Attribute

  • tried_adapter_checkpointless (bool) — Markierung, um zu verfolgen, ob versucht wurde, den Adapter ohne Checkpoint wiederherzustellen

Methoden

get_wrapper_from_trainer(trainer)

Ruft die Instanz für die Fehlertoleranzkoordination vom Trainer ab. HPCallWrapper

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Gibt zurück:

  • HPCallWrapper— Die Wrapper-Instanz für Fehlertoleranzoperationen

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

Wird zu Beginn jedes Trainingsbatches aufgerufen, um die Schrittverfolgung und Wiederherstellung zu verwalten.

Parameter:

  • trainer (pyTorch_Lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Das Lightning-Modul wird trainiert

  • Batch — Aktuelle Trainings-Batchdaten

  • batch_idx (int) — Index des aktuellen Batches

  • args — Zusätzliche Positionsargumente

  • kwargs — Zusätzliche Schlüsselwortargumente

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

Heben Sie die Sperre für die Parameter-Aktualisierung am Ende jedes Trainingsbatches auf.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

  • pl_module (pytorch_lightning). LightningModule) — Das Lightning-Modul wird trainiert

  • Ausgänge (STEP_OUTPUT) — Ausgaben für Trainingsschritte

  • Batch (Beliebig) — Aktuelle Trainings-Batchdaten

  • batch_idx (int) — Index des aktuellen Batches

Hinweise:

  • Der Zeitpunkt der Sperrfreigabe stellt sicher, dass die Wiederherstellung ohne Checkpoints nach Abschluss der Parameteraktualisierungen fortgesetzt werden kann

  • Wird nur ausgeführt, wenn beide enable_inprocess Werte und der Wert True sind enable_checkpointless

get_peft_callback(trainer)

Ruft den PEFT-Callback aus der Callback-Liste des Trainers ab.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

Gibt zurück:

  • PEFT oder None — PEFT-Callback-Instanz, falls gefunden, sonst None

_try_adapter_checkpointless_restore(trainer, params_to_save)

Versuchen Sie, PEFT-Adapterparameter ohne Checkpoint wiederherzustellen.

Parameter:

  • trainer (pytorch_lightning.Trainer) — Lightning-Trainer-Instanz PyTorch

  • params_to_save (set) — Satz von Parameternamen, die als Adapterparameter gespeichert werden sollen

Hinweise:

  • Wird nur einmal pro Trainingseinheit ausgeführt (gesteuert durch das Flag) tried_adapter_checkpointless

  • Konfiguriert den Checkpoint Manager mit Informationen zu Adapterparametern

Beispiel

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)

Arbeitsspeicher-Verwaltung

  • clean_tensor_hook: Entfernt Tensor-Hooks während der Bereinigung (teuer aber gründlich)

  • clean_lightning_module: Gibt den GPU-Speicher des Lightning-Moduls bei Neustarts frei

  • Beide Optionen tragen dazu bei, den Speicherbedarf bei der Fehlerbehebung zu reduzieren

  • Koordinaten mit ParameterUpdateLock für die threadsichere Nachverfolgung von Parameter-Updates

CheckpointlessCompatibleConnector

class hyperpod_checkpointless_training.nemo_plugins.checkpoint_connector.CheckpointlessCompatibleConnector()

PyTorch Lightning-Checkpoint-Connector, der die Wiederherstellung ohne Checkpoint in das herkömmliche, festplattenbasierte Checkpoint-Laden integriert.

Dieser Connector erweitert den von PyTorch Lightning _CheckpointConnector um eine nahtlose Integration zwischen der Wiederherstellung ohne Checkpoint und der standardmäßigen Checkpoint-Wiederherstellung. Er versucht zunächst, eine Wiederherstellung ohne Checkpoint durchzuführen, und greift dann auf festplattenbasiertes Checkpoint-Laden zurück, falls eine Wiederherstellung ohne Checkpoint nicht durchführbar ist oder fehlschlägt.

Parameter

Erbt alle Parameter von _ CheckpointConnector

Methoden

resume_start(checkpoint_path=None)

Versuchen Sie, den Checkpoint mit einer Wiederherstellungspriorität ohne Checkpoint vorab zu laden.

Parameter:

  • checkpoint_path (str oder None, optional) — Pfad zum Festplatten-Checkpoint für den Fallback. Standard: None

resume_end()

Schließen Sie den Checkpoint-Ladevorgang ab und führen Sie Operationen nach dem Laden durch.

Hinweise

  • Erweitert die interne _CheckpointConnector Klasse von PyTorch Lightning um Unterstützung für die Wiederherstellung ohne Checkpoint

  • Behält die volle Kompatibilität mit PyTorch Standard-Lightning-Checkpoint-Workflows bei

CheckpointlessAutoResume

class hyperpod_checkpointless_training.nemo_plugins.resume.CheckpointlessAutoResume()

Erweitert um NeMo eine AutoResume verzögerte Einrichtung, um eine Überprüfung der Wiederherstellung ohne Checkpoint vor der Auflösung des Checkpoint-Pfads zu ermöglichen.

Diese Klasse implementiert eine zweiphasige Initialisierungsstrategie, die eine Überprüfung der Wiederherstellung ohne Checkpoint ermöglicht, bevor auf das herkömmliche, festplattenbasierte Checkpoint-Laden zurückgegriffen wird. Das AutoResume Setup wird bedingt verzögert, um eine vorzeitige Auflösung des Checkpoint-Pfads zu verhindern. So kann zunächst überprüft werden, ob eine Peer-to-Peer-Wiederherstellung ohne Checkpoint CheckpointManager durchführbar ist.

Parameter

Erbt alle Parameter von AutoResume

Methoden

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

Verzögern Sie das AutoResume Setup unter bestimmten Bedingungen, um eine Überprüfung der Wiederherstellung ohne Prüfpunkte zu ermöglichen.

Parameter:

  • trainer (pytorch_lightning.Trainer oder Lightning.Fabric.Fabric) — Lightning-Trainer oder Fabric-Instanz PyTorch

  • model (optional) — Modellinstanz für die Einrichtung. Standard: None

  • force_setup (bool, optional) — Bei True wird die Verzögerung umgangen und das Setup sofort ausgeführt AutoResume . Standard: False

Beispiel

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

Hinweise

  • Erweitert NeMo die AutoResume Klasse um einen Verzögerungsmechanismus, um eine Wiederherstellung ohne Checkpoint zu ermöglichen

  • Funktioniert in Verbindung mit CheckpointlessCompatibleConnector für einen vollständigen Wiederherstellungsworkflow