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 Full Finetuning GPT OSS 120b
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:
Una posizione di archiviazione condivisa. Può essere un file system Amazon FSx o un sistema NFS accessibile dai nodi del cluster.
-
I dati in uno dei seguenti formati:
JSON
JSONGZ (JSON compresso)
ARROW
Scegli dalla fonte una ricetta di formazione senza checkpoint supportata per Llama 70B o 120B. GPT-OSS https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection
Scarica i pesi del modello Hugging Face e convertili nel formato supportato da Nemo
. https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face Configurare l’ambiente
Configurazione dell'ambiente Kubernetes
Per configurare il tuo ambiente Kubernetes, procedi come segue:
-
Configura l’ambiente virtuale. Assicurati che la tua versione di Python sia maggiore o uguale a 3.10 e inferiore a 3.14.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Connettiti al cluster Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Installa le dipendenze utilizzando uno dei metodi seguenti:
-
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 -
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
Avvia i lavori di formazione con il programma di avvio delle ricette
Puoi utilizzare le SageMaker HyperPod ricette di Amazon per inviare il tuo lavoro di formazione. L'uso delle ricette comporta l'aggiornamento di k8s.yaml, config.yaml e l'esecuzione dello script di avvio.
-
Aggiornamento di
launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.shyour_container: 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}" MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_full_fine_tuning \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \ 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 \ -
Avvio del job di addestramento
bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_full_fine_tuning.sh
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 gpt-oss-120b-worker-0 0/1 running 0 36s
Se lo STATUS è impostato su PENDING o ContainerCreating, esegui il comando seguente per ottenere maggiori dettagli
kubectl describe pod <name of pod>
Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.
kubectl logs <name of pod>
STATUS diventa COMPLETED quando esegui kubectl get pods.
Avvia il processo di formazione con kubectl con yaml predefinito
Un'altra opzione è avviare la formazione tramite kubectl con un job yaml predefinito.
-
launch/full_finetune_gpt_oss_120b_checkpointless_p5aggiorna examples/gpt_oss il file/.yaml
immagine: un contenitore di Deep Learning. Per trovare la versione più recente del contenitore di formazione checkpointless, consulta le note sulla versione di checkpointless training.
resume.restore_config.path=<path_to_pretrained_weights>: il percorso per il modello preaddestrato scaricato pesa in formato Nemo nella fase Prerequisiti. https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-finetune.html#sagemaker-eks-checkpointless-recipes-finetune-prereqs
dataset.dataset_path=<path_to_dataset>: il percorso del set di dati archiviato nello storage condiviso
-
Invia il lavoro usando kubectl con full_finetune_gpt_oss_120b_checkpointless_p5.yaml
kubectl apply -f examples/gpt_oss/launch/full_finetune_gpt_oss_120b_checkpointless_p5.yaml
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 gpt-oss-120b-worker-0 0/1 running 0 36s
Se lo STATUS è impostato su PENDING o, esegui il comando seguente per ottenere maggiori dettagli ContainerCreating
kubectl describe pod <name of pod>
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