Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial zur Vorbereitung des Trainium Kubernetes-Clusters
Sie können eine der folgenden Methoden verwenden, um einen Trainingsjob in einem Trainium Kubernetes-Cluster zu starten.
-
Der Style-Launcher NeMo
Voraussetzungen
Bevor Sie mit der Einrichtung Ihrer Umgebung beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
-
Richten Sie einen HyperPod Trainium Kubernetes-Cluster ein
-
Ein gemeinsam genutzter Speicherort, bei dem es sich um ein FSx Amazon-Dateisystem oder ein NFS-System handeln kann, auf das von den Clusterknoten aus zugegriffen werden kann.
-
Daten in einem der folgenden Formate:
-
JSON
-
JSONGZ (komprimiertes JSON)
-
PFEIL
-
-
(Optional) Sie müssen sich ein HuggingFace Token besorgen, wenn Sie die Modellgewichte von vor dem Training oder HuggingFace zur Feinabstimmung verwenden. Weitere Informationen zum Abrufen des Tokens finden Sie unter Benutzerzugriffstoken
.
Richten Sie Ihre Trainium Kubernetes-Umgebung ein
Gehen Sie wie folgt vor, um die Trainium Kubernetes-Umgebung einzurichten:
-
Führen Sie die Schritte im folgenden Tutorial aus: HuggingFace Llama3-8B
Pretraining, beginnend mit Laden Sie den Datensatz herunter. -
Bereiten Sie eine Modellkonfiguration vor. Sie sind im Neuron-Repo verfügbar. Für dieses Tutorial können Sie die Modellkonfiguration llama3 8b verwenden.
-
Einrichtung der virtuellen Umgebung. Stellen Sie sicher, dass Sie Python 3.9 oder höher verwenden.
python3 -m venv ${PWD}/venv source venv/bin/activate
-
Installieren Sie die Abhängigkeiten
-
(Empfohlen) Verwenden Sie das folgende HyperPod Befehlszeilentool
# install HyperPod command line tools git clone https://github.com/aws/sagemaker-hyperpod-cli cd sagemaker-hyperpod-cli pip3 install .
-
Wenn Sie SageMaker HyperPod Rezepte verwenden, geben Sie Folgendes an
# install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
-
-
Connect zu Ihrem Kubernetes-Cluster her
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>]
Starten Sie den Trainingsjob mit der SageMaker HyperPod CLI
Wir empfehlen, das SageMaker HyperPod Befehlszeilenschnittstellentool (CLI) zu verwenden, um Ihren Schulungsjob mit Ihren Konfigurationen einzureichen. Im folgenden Beispiel wird ein Schulungsjob für das Trainium-Modell eingereicht. hf_llama3_8b_seq8k_trn1x4_pretrain
-
your_neuron_container
: Der Neuron-Container. -
your_model_config
: Die Modellkonfiguration aus dem Abschnitt zur Einrichtung der Umgebung -
(Optional) Sie können das HuggingFace Token bereitstellen, wenn Sie vorab trainierte Gewichtungen von benötigen, HuggingFace indem Sie das folgende Schlüssel-Wert-Paar festlegen:
"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>
" }'
Nachdem Sie einen Schulungsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob Sie ihn erfolgreich eingereicht haben.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
Wenn das PENDING
oder STATUS
istContainerCreating
, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten.
kubectl describe pod
<name of pod>
Nachdem der Job STATUS
geändert wurdeRunning
, können Sie das Protokoll mit dem folgenden Befehl überprüfen.
kubectl logs <name of pod>
Das STATUS
wird aktiviert, Completed
wenn Sie laufenkubectl get pods
.
Starten Sie den Trainingsjob mit dem Rezept-Launcher
Alternativ kannst du SageMaker HyperPod Rezepte verwenden, um deinen Trainingsjob einzureichen. Um die Ausbildungsstelle anhand eines Rezepts einzureichen, aktualisiere k8s.yaml
undconfig.yaml
. Führen Sie das Bash-Skript für das Modell aus, um es zu starten.
-
Aktualisieren Sie in persistent_volume_claims
k8s.yaml
, um den FSx Amazon-Claim im Verzeichnis /data in den Rechenknoten einzuhängenpersistent_volume_claims: - claimName: fsx-claim mountPath: data
-
scripts/llama/runAktualisieren Sie launcher_ _hf_llama3_8b_seq8k_trn1x4_pretrain.sh
-
your_neuron_contrainer
: Der Container aus dem Bereich Umgebungs-Setup -
your_model_config
: Die Modellkonfiguration aus dem Abschnitt zur Einrichtung der Umgebung
(Optional) Sie können das HuggingFace Token bereitstellen, wenn Sie vorab trainierte Gewichtungen von benötigen, HuggingFace indem Sie das folgende Schlüssel-Wert-Paar festlegen:
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 -
-
Starten Sie den Job
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
Nachdem Sie einen Schulungsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob Sie ihn erfolgreich eingereicht haben.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
STATUS
Steht der Wert auf PENDING
oderContainerCreating
, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten.
kubectl describe pod <name of pod>
Nachdem sich der Status des Jobs in Running geändert hat, können Sie das Protokoll mithilfe des folgenden Befehls überprüfen.
kubectl logs <name of pod>
Das STATUS
wird angezeigt, Completed
wenn Sie es ausführenkubectl get pods
.
Weitere Hinweise zur Konfiguration des k8s-Clusters finden Sie unter. Tutorial zur Vorbereitung des Trainium Kubernetes-Clusters