Tutorial - Amazon SageMaker HyperPod Checkpointless, preaddestramento o messa a punto di modelli personalizzati - 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 - Amazon SageMaker HyperPod Checkpointless, preaddestramento o messa a punto di modelli personalizzati

La seguente sequenza di passaggi è necessaria per eseguire un 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 l'ambiente Kubernetes, procedi come segue:

  1. Configura l’ambiente virtuale. Assicurati di usare 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 utilizziamo il pretraining di Llama 3 70b come esempio), che prevede:

  • Creazione rapida di comunicatori

  • Dataloader mappato in memoria (MMAP)

  • Ripristino in corso e senza checkpoint

Componente 1: creazione rapida di comunicatori

Questo per ottimizzare i tempi necessari 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 nel file llama3 70 pretrain launch job config.

Componente 2: Dataloader mappato in memoria (MMAP)

Cache MMAP per archiviare campioni di dati precaricati e consentire l'avvio immediato della formazione senza dover attendere la preelaborazione dei dati. Richiede modifiche minime al codice da adottare inserendo il dataloader esistente.

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

Componenti 3 e 4: ripristino in corso e senza checkpoint

Ciò consente il ripristino in caso di errore senza riavviare i processi di addestramento o il caricamento dai checkpoint. Sono necessarie ulteriori modifiche al codice (aggiornamento della configurazione di strategia e formazione, wrap existing main)

@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 è disponibile nello script di immissione pretrain di llama3 70 e la corrispondente modifica alla configurazione di allenamento è disponibile nella configurazione di addestramento di llama3 70b.

Avvia la formazione

Ora puoi avviare l'allenamento senza checkpoint usando kubectl.

kubectl apply -f your_job_config.yaml