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.
Tutorials — Amazon SageMaker HyperPod Checkpointless Pretraining oder Feinabstimmung benutzerdefinierter Modelle
Die folgende Abfolge von Schritten ist erforderlich, um ein Training ohne Checkpoint mit Ihrem benutzerdefinierten Modell durchzuführen. HyperPod
Voraussetzungen
Bevor Sie mit der Einrichtung Ihrer Umgebung beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
Amazon EKS-Unterstützung in Amazon aktiviert SageMaker HyperPod
Ein gemeinsam genutzter Speicherort. Es kann sich um ein Amazon-FSx-Dateisystem oder NFS-System handeln, auf das von den Clusterknoten aus zugegriffen werden kann.
-
Daten in einem der folgenden Formate:
JSON
JSONGZ (komprimiertes JSON)
ARROW
Laden Sie die Gewichte des Modells „Hugging Face“ herunter
und konvertieren Sie es in ein von Nemo unterstütztes Format. Einrichtung Ihrer Umgebung
Einrichtung der Kubernetes-Umgebung
Gehen Sie wie folgt vor, um Ihre Kubernetes-Umgebung einzurichten:
-
Richten Sie die virtuelle Umgebung ein. Stellen Sie sicher, dass Sie Python größer oder gleich 3.10 und niedriger als 3.14 verwenden.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Verbinden mit Ihrem Kubernetes-Cluster
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Abhängigkeiten installieren
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
Anweisungen zur Änderung des Trainings ohne Checkpointless
Um Checkpointless-Training für benutzerdefinierte Modelle schrittweise einzuführen, folgen Sie dem Integrationsleitfaden (hier verwenden wir das Llama 3 70b-Vortraining als Beispiel), der Folgendes beinhaltet:
Schnelle Erstellung eines Kommunikators
Memory-mapped Datenlader (MMAP)
In-process & Wiederherstellung ohne Checkpoint
Komponente 1: Schnelle Erstellung von Kommunikatoren
Dies dient dazu, die Zeit zu optimieren, um Verbindungen zwischen den Arbeitern herzustellen. Es sind keine Codeänderungen erforderlich und es müssen nur Umgebungsvariablen gesetzt werden
# Enable Rootless features export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \ hyperpodrun --nproc_per_node=8 \ ... --inprocess-restart \ ...
Die vollständige Änderung finden Sie in der Konfiguration des llama3 70 Pretrain Launch Jobs.
Komponente 2: Memory-mapped Dataloader (MMAP)
MMAP-Caches, um vorab abgerufene Datenproben zu speichern und einen sofortigen Trainingsstart zu ermöglichen, ohne auf die Datenvorverarbeitung warten zu müssen. Die Übernahme durch Umschließen des vorhandenen Dataloaders erfordert nur minimale Codeänderungen.
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
Komponenten 3 und 4: In-process und Wiederherstellung ohne Checkpoint
Dies ermöglicht die Wiederherstellung nach einem Ausfall, ohne dass Trainingsprozesse neu gestartet oder von Checkpoints aus geladen werden müssen. Zusätzliche Codeänderungen sind erforderlich (Aktualisierung der Strategie- und Trainingskonfiguration, Umschließen der vorhandenen Hauptkonfiguration)
@HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, ...) def run_main( cfg, caller: Optional[HPCallWrapper] = None): ... CheckpointlessMegatronStrategy( **self.cfg.strategy, ddp=self.ddp, )
Die vollständige Änderung befindet sich im llama3 70-Pretrain-Eingabeskript
Schulung starten
Sie können das Checkpointless-Training jetzt mit kubectl starten.
kubectl apply -f your_job_config.yaml