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.
Anleitungen — Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b
Die folgende Abfolge von Schritten ist erforderlich, um Trainingsrezepte ohne Checkpoints auszuführen. HyperPod
Voraussetzungen
Bevor Sie mit der Einrichtung Ihrer Umgebung beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
Amazon EKS-Unterstützung in Amazon aktiviert SageMaker HyperPod
Ein gemeinsam genutzter Speicherort. Es kann sich um ein Amazon-FSx-Dateisystem oder NFS-System handeln, auf das von den Clusterknoten aus zugegriffen werden kann.
-
Daten in einem der folgenden Formate:
JSON
JSONGZ (komprimiertes JSON)
ARROW
Wählen Sie aus der Quelle ein unterstütztes Checkpointless-Trainingsrezept für Lama 70B oder GPT-OSS 120B aus. https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection
Laden Sie die Gewichte
des Modells „Hugging Face“ herunter und konvertieren Sie es in ein von Nemo unterstütztes Format. https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face Einrichtung Ihrer Umgebung
Einrichtung der Kubernetes-Umgebung
Gehen Sie wie folgt vor, um Ihre Kubernetes-Umgebung einzurichten:
-
Richten Sie die virtuelle Umgebung ein. Stellen Sie sicher, dass Sie Python größer oder gleich 3.10 und niedriger als 3.14 verwenden.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Verbinden mit Ihrem Kubernetes-Cluster
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
Installieren Sie Abhängigkeiten mit einer der folgenden Methoden:
-
Methode 1: SageMaker HyperPod Rezeptmethode:
# install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
Methode 2: kubectl mit vordefinierter Job-Yaml-Methode
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
-
Sie können das Checkpointless-Trainingsrezept jetzt entweder mit dem Launcher oder mit kubectl starten. NeMo-style
Methode 1: Starten Sie den Trainingsjob mit dem Rezepte-Launcher
Alternativ kannst du die SageMaker HyperPod Rezepte verwenden, um deinen Ausbildungsjob einzureichen. Um die Rezepte zu verwenden, müssen k8s.yaml und config.yaml aktualisiert und das Startskript ausgeführt werden.
-
Aktualisieren:
launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.shEin Deep-Learning-Container. Die neueste Version des Checkpointless-Trainingscontainers finden Sie in den Versionshinweisen zum 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 \ -
Starten eines Trainingsjobs
bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh -
Nachdem Sie den Trainingsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob die Übermittlung erfolgreich war.
kubectl get pods NAME READY STATUS RESTARTS AGE llama-3-70b-worker-0 0/1 running 0 36s -
Wenn der STATUS auf PENDING oder steht ContainerCreating, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten
kubectl describe pod<name of pod> -
Nachdem der Job-STATUS zu „Laufend“ geändert wurde, können Sie das Protokoll mit dem folgenden Befehl überprüfen.
kubectl logs <name of pod>Der STATUS wechselt zu Completed, wenn Sie kubectl get pods ausführen
Methode 2: Starten Sie den Trainingsjob mit kubectl mit vordefiniertem Yaml
Eine andere Möglichkeit besteht darin, das Training über kubectl mit einem vordefinierten Job yaml zu starten.
-
Aktualisieren des
examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yamlimage: Ein Deep-Learning-Container. Die neueste Version des Checkpointless-Trainingscontainers finden Sie in den Versionshinweisen zum Checkpointless-Training. https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.htmlresume.restore_config.path=<path_to_pretrained_weights>: Der Pfad zu den heruntergeladenen vortrainierten Modellgewichten im NEMO-Format im Schritt Voraussetzungen.dataset.dataset_path=<path_to_dataset>: Der Pfad zu dem Datensatz, der im gemeinsam genutzten Speicher gespeichert wurde
-
Senden Sie den Job mit kubectl mit
pretrain_llama3_70b_checkpointless_p5.yamlkubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml -
Nachdem Sie den Trainingsjob eingereicht haben, können Sie mit dem folgenden Befehl überprüfen, ob die Übermittlung erfolgreich war.
kubectl get pods NAME READY STATUS RESTARTS AGE llama3-pretrain-checkpointless-worker-0 0/1 running 0 36s -
Wenn der STATUS auf PENDING oder steht ContainerCreating, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten
kubectl describe pod <name of pod> -
Nachdem der Job-STATUS zu „Laufend“ geändert wurde, können Sie das Protokoll mit dem folgenden Befehl überprüfen.
kubectl logs <name of pod>Der STATUS wechselt zu Completed, wenn Sie kubectl get pods ausführen