View a markdown version of this page

Tutorial - Amazon Checkpointless Pretraining Llama 3 70b SageMaker HyperPod - 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 Checkpointless Pretraining Llama 3 70b SageMaker HyperPod

La seguente sequenza di passaggi è necessaria per eseguire le ricette di allenamento senza checkpoint su. 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. Installa Helm

  4. Connettiti al cluster Kubernetes.

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. Installa le dipendenze utilizzando uno dei metodi seguenti:

    1. Metodo 1: metodo SageMaker HyperPod delle ricette:

      # install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
    2. Metodo 2: kubectl con metodo job yaml predefinito

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

Ora puoi avviare la ricetta di allenamento senza checkpoint usando il launcher o usando kubectl. NeMo-style

Metodo 1: avvia il processo di formazione con il programma di avvio delle ricette

In alternativa, puoi utilizzare le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. L'uso delle ricette implica l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.

  1. Aggiornamento di launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh

    Un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di checkpointless training.

    #!/bin/bash SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="${TRAIN_DIR}" VAL_DIR="${VAL_DIR}" EXP_DIR="${EXP_DIR}" LOG_DIR="${LOG_DIR}" CONTAINER_MOUNT="/data" CONTAINER="${CONTAINER}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=training/llama/checkpointless_llama3_70b_pretrain \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.data.global_batch_size=16 \ recipes.data.micro_batch_size=4 \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ git.use_default=false \ cluster=k8s \ cluster_type=k8s \ container="${CONTAINER}" \ +cluster.hostNetwork=true \ +cluster.persistent_volume_claims.0.claimName=fsx-claim \ +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \ +recipes.dataset.val_dataset_path="${VAL_DIR}" \ ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
  2. Avvio del job di addestramento

    bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
  3. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

    kubectl get pods NAME READY STATUS RESTARTS AGE llama-3-70b-worker-0 0/1 running 0 36s
  4. Se lo STATUS è impostato su PENDING o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli

    kubectl describe pod <name of pod>
  5. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

    kubectl logs <name of pod>

    Lo STATO diventerà Completato quando esegui kubectl get pods

Metodo 2: avvia il processo di formazione con kubectl con yaml predefinito

Un'altra opzione è avviare la formazione tramite kubectl con un job yaml predefinito.

  1. Aggiornamento di examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml

  2. Invia il lavoro usando kubectl con pretrain_llama3_70b_checkpointless_p5.yaml

    kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
  3. Dopo aver inviato il job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.

    kubectl get pods NAME READY STATUS RESTARTS AGE llama3-pretrain-checkpointless-worker-0 0/1 running 0 36s
  4. Se lo STATUS è in PENDING o ContainerCreating, esegui il seguente comando per ottenere maggiori dettagli

    kubectl describe pod <name of pod>
  5. Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.

    kubectl logs <name of pod>

    Lo STATO diventerà Completato quando esegui kubectl get pods