View a markdown version of this page

Tutorial: modelli personalizzati Amazon SageMaker HyperPod Checkpointless Pretraining o Finetuning - 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à.

Tutorial: modelli personalizzati Amazon SageMaker HyperPod Checkpointless Pretraining o Finetuning

La seguente sequenza di passaggi è necessaria per eseguire l'addestramento senza checkpoint con il modello personalizzato acceso. HyperPod

Prerequisiti

Prima di iniziare a configurare l’ambiente, assicurati di avere:

Configurazione dell'ambiente Kubernetes

Per configurare il tuo ambiente Kubernetes, procedi come segue:

  1. Configura l’ambiente virtuale. Assicurati di utilizzare Python maggiore o uguale a 3.10 e inferiore a 3.14.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. Configura kubectl ed eksctl

  3. Connettiti al cluster Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  4. Installare le dipendenze

    # install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training

Istruzioni di modifica dell'allenamento Checkpointless

Per adottare in modo incrementale la formazione senza checkpoint per i modelli personalizzati, segui la guida all'integrazione (qui usiamo il pretraining Llama 3 70b come esempio), che prevede:

  • Creazione rapida di un comunicatore

  • Memory-mapped dataloader (MMAP)

  • In-process & Ripristino senza controlli

Componente 1: creazione rapida di un comunicatore

Questo serve a ottimizzare i tempi per stabilire connessioni tra i lavoratori. Non sono necessarie modifiche al codice e richiede solo l'impostazione delle variabili env

# 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 \ ...

La modifica completa può essere trovata nella configurazione del job di avvio pretrain di llama3 70.

Componente 2: Memory-mapped dataloader (MMAP)

MMAP memorizza nella cache campioni di dati precaricati e consente l'avvio immediato dell'addestramento senza dover attendere la preelaborazione dei dati. Richiede modifiche minime al codice da adottare racchiudendo il dataloader esistente.

data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )

Componenti 3 e 4: e ripristino senza controlli In-process

Ciò consente il ripristino in caso di guasto senza riavviare i processi di formazione o caricarli dai checkpoint. Sono necessarie ulteriori modifiche al codice (aggiornamento della strategia e della configurazione di addestramento, cancellazione della versione principale esistente)

@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, )

La modifica completa può essere trovata nello script di immissione di llama3 70 pretrain e la corrispondente modifica alla configurazione di addestramento può essere trovata nella configurazione di allenamento llama3 70b. https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml

Avvia la formazione

Ora puoi avviare la formazione senza checkpoint usando kubectl.

kubectl apply -f your_job_config.yaml