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 di preaddestramento sul cluster Trainium Kubernetes
Puoi utilizzare uno dei metodi seguenti per avviare un job di addestramento in un cluster Trainium Kubernetes.
-
Il programma di avvio degli stili NeMo
Prerequisiti
Prima di iniziare a configurare l’ambiente, assicurati di avere:
-
Configura un cluster HyperPod Trainium Kubernetes
-
Una posizione di archiviazione condivisa che può essere un FSx file system Amazon o un sistema NFS accessibile dai nodi del cluster.
-
I dati in uno dei seguenti formati:
-
JSON
-
JSONGZ (JSON compresso)
-
ARROW
-
-
(Facoltativo) È necessario ottenere un HuggingFace token se si utilizzano i pesi del modello HuggingFace per il pre-allenamento o la messa a punto. Per ulteriori informazioni su come ottenere il token, consulta User access tokens
.
Configurazione dell’ambiente Trainium Kubernetes
Per configurare l’ambiente Trainium Kubernetes, procedi come descritto di seguito:
-
Completa i passaggi del seguente tutorial: HuggingFace Llama3-8B
Pretraining a partire da Scarica il set di dati. -
Prepara una configurazione del modello. Sono disponibili nel repository Neuron. Per questo tutorial, puoi utilizzare la configurazione del modello llama3 8b.
-
Configura l’ambiente virtuale. Assicurati di utilizzare Python 3.9 o versioni successive.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Installazione delle dipendenze
-
(Consigliato) Utilizza il seguente strumento da riga di comando HyperPod
# install HyperPod command line tools git clone https://github.com/aws/sagemaker-hyperpod-cli cd sagemaker-hyperpod-cli pip3 install . -
Se utilizzi SageMaker HyperPod ricette, specifica quanto segue
# install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
-
-
Connettiti al cluster Kubernetes.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>] -
Container: il container Neuron
Avvia il processo di formazione con la SageMaker HyperPod CLI
Ti consigliamo di utilizzare lo strumento dell'interfaccia SageMaker HyperPod a riga di comando (CLI) per inviare il tuo lavoro di formazione con le tue configurazioni. L’esempio seguente invia un job di addestramento per il modello Trainium hf_llama3_8b_seq8k_trn1x4_pretrain.
-
your_neuron_container: il container Neuron. -
your_model_config: la configurazione del modello dalla sezione di configurazione dell’ambiente. -
(Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:
"recipes.model.hf_access_token": "<your_hf_token>"
hyperpod start-job --recipe training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \ --persistent-volume-claims fsx-claim:data \ --override-parameters \ '{ "cluster": "k8s", "cluster_type": "k8s", "container": "<your_neuron_contrainer>", "recipes.run.name": "hf-llama3", "recipes.run.compile": 0, "recipes.model.model_config": "<your_model_config>", "instance_type": "trn1.32xlarge", "recipes.data.train_dir": "<your_train_data_dir>" }'
Dopo aver inviato un job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
Se STATUS è PENDING o ContainerCreating, utilizza il comando seguente per ottenere maggiori dettagli.
kubectl describe podname_of_pod
Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.
kubectl logsname_of_pod
STATUS diventa Completed quando esegui kubectl get pods.
Avvio del job di addestramento con l’utilità di avvio delle ricette
In alternativa, utilizza le SageMaker HyperPod ricette per inviare il tuo lavoro di formazione. Per inviare il job di addestramento utilizzando una ricetta, aggiorna k8s.yaml e config.yaml. Esegui lo script bash per il modello per avviarlo.
-
In
k8s.yaml, aggiorna persistent_volume_claims per montare il claim FSx Amazon nella directory /data nei nodi di calcolopersistent_volume_claims: - claimName: fsx-claim mountPath: data -
scripts/llama/runAggiorna launcher_ _hf_llama3_8b_seq8k_trn1x4_pretrain.sh
-
your_neuron_contrainer: il container della sezione di configurazione dell’ambiente -
your_model_config: la configurazione del modello dalla sezione di configurazione dell’ambiente
(Facoltativo) Se hai bisogno di pesi già addestrati, puoi fornire il HuggingFace token HuggingFace impostando la seguente coppia chiave-valore:
recipes.model.hf_access_token=<your_hf_token>#!/bin/bash #Users should set up their cluster type in /recipes_collection/config.yaml IMAGE="<your_neuron_contrainer>" MODEL_CONFIG="<your_model_config>" SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="<your_training_data_dir>" # Location of training dataset VAL_DIR="<your_val_data_dir>" # Location of talidation dataset HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ recipes.run.name="hf-llama3-8b" \ instance_type=trn1.32xlarge \ recipes.model.model_config="$MODEL_CONFIG" \ cluster=k8s \ cluster_type=k8s \ container="${IMAGE}" \ recipes.data.train_dir=$TRAIN_DIR \ recipes.data.val_dir=$VAL_DIR -
-
Avvia il processo.
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
Dopo aver inviato un job di addestramento, puoi utilizzare il comando seguente per verificare se l’invio è riuscito.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
Se lo STATUS è PENDING oContainerCreating, utilizza il comando seguente per ottenere maggiori dettagli.
kubectl describe podname_of_pod
Quando lo STATUS del processo diventa Running, puoi esaminare il log utilizzando il comando seguente.
kubectl logsname_of_pod
STATUS diventa Completed quando esegui kubectl get pods.
Per ulteriori informazioni sulla connessione al cluster k8s, consulta Tutorial di preaddestramento sul cluster Trainium Kubernetes.