

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 zum Vortraining des Kubernetes-Cluster (GPU)
<a name="sagemaker-hyperpod-gpu-kubernetes-cluster-pretrain-tutorial"></a>

Es gibt zwei Möglichkeiten, einen Trainingsjob in einem GPU-Kubernetes-Cluster zu starten:
+ [(Empfohlen) Befehlszeilentool HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)
+ Der Style-Launcher NeMo 

**Voraussetzungen**  
Bevor Sie mit der Einrichtung Ihrer Umgebung beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:  
Ein HyperPod GPU-Kubernetes-Cluster ist ordnungsgemäß eingerichtet.
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
(Optional) Sie benötigen ein HuggingFace Token, wenn Sie die Modellgewichte von HuggingFace für das Training oder die Feinabstimmung verwenden. Weitere Informationen zum Abrufen des Tokens finden Sie unter [Benutzerzugriffstoken](https://huggingface.co/docs/hub/en/security-tokens).

## Einrichten der GPU-Kubernetes-Umgebung
<a name="sagemaker-hyperpod-gpu-kubernetes-environment-setup"></a>

Gehen Sie zum Einrichten einer GPU-Kubernetes-Umgebung wie folgt vor:
+ Richten Sie die virtuelle Umgebung ein. Vergewissern Sie sich, dass Sie Python 3.9 oder höher verwenden.

  ```
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Installieren Sie Abhängigkeiten mit einer der folgenden Methoden:
  + (Empfohlen): Methode des [HyperPod Befehlszeilentools](https://github.com/aws/sagemaker-hyperpod-cli):

    ```
    # install HyperPod command line tools
    git clone https://github.com/aws/sagemaker-hyperpod-cli
    cd sagemaker-hyperpod-cli
    pip3 install .
    ```
  + SageMaker HyperPod Methode für Rezepte:

    ```
    # install SageMaker HyperPod Recipes.
    git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
    cd sagemaker-hyperpod-recipes
    pip3 install -r requirements.txt
    ```
+ [kubectl und eksctl einrichten](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ [Helm installieren](https://helm.sh/docs/intro/install/)
+ Verbinden mit Ihrem Kubernetes-Cluster

  ```
  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
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-cli"></a>

Wir empfehlen, das SageMaker HyperPod Befehlszeilenschnittstellentool (CLI) zu verwenden, um Ihren Schulungsjob mit Ihren Konfigurationen einzureichen. Im folgenden Beispiel wird ein Trainingsjob für das Modell `hf_llama3_8b_seq16k_gpu_p5x16_pretrain` eingereicht.
+ `your_training_container`: Ein Deep-Learning-Container. Die aktuelle Version des SMP-Containers finden Sie unter [Versionshinweise für die SageMaker Modellparallelitätsbibliothek](model-parallel-release-notes.md).
+ (Optional) Sie können das HuggingFace Token angeben, wenn Sie vorab trainierte Gewichte 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_seq16k_gpu_p5x16_pretrain \
--persistent-volume-claims fsx-claim:data \
--override-parameters \
'{
"recipes.run.name": "hf-llama3-8b",
"recipes.exp_manager.exp_dir": "/data/{{<your_exp_dir>}}",
"container": "658645717510.dkr.ecr.{{<region>}}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121",
"recipes.model.data.train_dir": "{{<your_train_data_dir>}}",
"recipes.model.data.val_dir": "{{<your_val_data_dir>}}",
"cluster": "k8s",
"cluster_type": "k8s"
}'
```

Nachdem Sie einen 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
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

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

```
kubectl describe pod {{name_of_pod}}
```

Nachdem der Job-`STATUS` zu `Running` geändert wurde, können Sie das Protokoll mit dem folgenden Befehl überprüfen.

```
kubectl logs {{name_of_pod}}
```

Der `STATUS` wird zu `Completed`, wenn Sie `kubectl get pods` ausführen.

## Starten des Trainingsjobs mit dem Launcher für Rezepte
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-recipes"></a>

Alternativ kannst du die SageMaker HyperPod Rezepte verwenden, um deinen Ausbildungsjob einzureichen. Die Verwendung der Rezepte beinhaltet die Aktualisierung von `k8s.yaml`, `config.yaml` und Ausführung des Startskripts.
+ Aktualisieren Sie in `k8s.yaml` den Code `persistent_volume_claims`. Es fügt den FSx Amazon-Claim dem `/data` Verzeichnis jedes Computer-Pods hinzu

  ```
  persistent_volume_claims:
    - claimName: fsx-claim
      mountPath: data
  ```
+ In `config.yaml` aktualisieren Sie `repo_url_or_path` unter `git`.

  ```
  git:
    repo_url_or_path: {{<training_adapter_repo>}}
    branch: null
    commit: null
    entry_script: null
    token: null
  ```
+ Aktualisieren: `launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh`
  + `your_contrainer`: Ein Deep-Learning-Container. Die aktuelle Version des SMP-Containers finden Sie unter [Versionshinweise für die SageMaker Modellparallelitätsbibliothek](model-parallel-release-notes.md).
  + (Optional) Sie können das HuggingFace Token angeben, wenn Sie vorab trainierte Gewichte 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 setup their cluster type in /recipes_collection/config.yaml
  REGION="{{<region>}}"
  IMAGE="658645717510.dkr.ecr.${REGION}.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121"
  SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
  EXP_DIR="{{<your_exp_dir>}}" # Location to save experiment info including logging, checkpoints, ect
  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_gpu_p5x16_pretrain \
      base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
      recipes.run.name="hf-llama3" \
      recipes.exp_manager.exp_dir="$EXP_DIR" \
      cluster=k8s \
      cluster_type=k8s \
      container="${IMAGE}" \
      recipes.model.data.train_dir=$TRAIN_DIR \
      recipes.model.data.val_dir=$VAL_DIR
  ```
+ Starten eines Trainingsjobs

  ```
  bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_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
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

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

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

Nachdem der Job-`STATUS` zu `Running` 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.

Weitere Informationen zur Konfiguration des k8s-Clusters finden Sie unter [Einen Trainingsjob auf HyperPod k8s ausführen](cluster-specific-configurations-run-training-job-hyperpod-k8s.md).