

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
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3"></a>

Die folgende Abfolge von Schritten ist erforderlich, um Trainingsrezepte ohne Checkpoint ausführen zu können. HyperPod

## Voraussetzungen
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-prereqs"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Richten Sie den HyperPod Trainingsoperator ein (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Ein gemeinsam genutzter Speicherort. Es kann sich um ein FSx Amazon-Dateisystem oder ein 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 ein unterstütztes Checkpointless-Trainingsrezept für Llama 70B oder GPT-OSS 120B aus der Quelle aus.](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [Laden Sie die Gewichte des Modells Hugging Face](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) [herunter und konvertieren Sie es in das von Nemo unterstützte 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
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubernetes"></a>

Gehen Sie wie folgt vor, um Ihre Kubernetes-Umgebung einzurichten:

1. Richten Sie die virtuelle Umgebung ein. Stellen Sie sicher, dass Sie Python verwenden, das größer oder gleich 3.10 und kleiner als 3.14 ist.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [Richten Sie kubectl und eksctl ein](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [Installieren Sie Helm](https://helm.sh/docs/intro/install/)

1. Verbinden mit Ihrem Kubernetes-Cluster

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. Installieren Sie Abhängigkeiten mit einer der folgenden Methoden:

   1. 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
      ```

   1. 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 im -style oder mit kubectl starten. NeMo

## Methode 1: Starte den Trainingsjob mit dem Recept-Launcher
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-recipes-launcher"></a>

Alternativ kannst du die SageMaker HyperPod Rezepte verwenden, um deinen Ausbildungsjob einzureichen. Zur Verwendung der Rezepte müssen k8s.yaml und config.yaml aktualisiert und das Startskript ausgeführt werden.

1. Aktualisieren: `launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh`

   Ein Deep-Learning-Container. Die neueste Version des Checkpointless Training Containers finden Sie in den Versionshinweisen zu [Checkpointless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) 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 \
   ```

1. Starten eines Trainingsjobs

   ```
   bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
   ```

1. 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
   ```

1. 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>
   ```

1. 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 Abgeschlossen, wenn Sie kubectl get pods ausführen

## Methode 2: Starten Sie den Trainingsjob mit kubectl mit vordefiniertem Yaml
<a name="sagemaker-eks-checkpointless-recipes-pretraining-llama3-kubectl"></a>

Eine weitere Option besteht darin, das Training über kubectl mit einem vordefinierten Job-Yaml zu starten.

1. Aktualisieren des `examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml`
   + `image`: Ein Deep-Learning-Container. [Die neueste Version des Checkpointless Training Containers finden Sie in den Versionshinweisen zu Checkpointless Training.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)
   + `resume.restore_config.path=<path_to_pretrained_weights>`[: Der Pfad zu heruntergeladenen vortrainierten Modellgewichten im Nemo-Format im Schritt Voraussetzungen.](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>`: Der Pfad zu dem Datensatz, der im gemeinsam genutzten Speicher gespeichert wurde

1. Senden Sie den Job mithilfe von kubectl mit `pretrain_llama3_70b_checkpointless_p5.yaml`

   ```
   kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
   ```

1. 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
   ```

1. Wenn der STATUS den Wert PENDING oder hat ContainerCreating, führen Sie den folgenden Befehl aus, um weitere Informationen zu erhalten

   ```
   kubectl describe pod <name of pod>
   ```

1. 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 Abgeschlossen, wenn Sie kubectl get pods ausführen