

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tutorial pra-pelatihan klaster Kubernetes (GPU)
<a name="sagemaker-hyperpod-gpu-kubernetes-cluster-pretrain-tutorial"></a>

Ada dua cara untuk meluncurkan pekerjaan pelatihan di cluster GPU Kubernetes:
+ (Disarankan) [HyperPod alat baris perintah](https://github.com/aws/sagemaker-hyperpod-cli)
+ Peluncur NeMo gaya

**Prasyarat**  
Sebelum Anda mulai mengatur lingkungan Anda, pastikan Anda memiliki:  
Cluster HyperPod GPU Kubernetes diatur dengan benar.
Lokasi penyimpanan bersama. Ini bisa berupa sistem FSx file Amazon atau sistem NFS yang dapat diakses dari node cluster.
Data dalam salah satu format berikut:  
JSON
JSONGZ (JSON Terkompresi)
PANAH
(Opsional) Anda harus mendapatkan HuggingFace token jika Anda menggunakan bobot model HuggingFace untuk pra-pelatihan atau fine-tuning. Untuk informasi selengkapnya tentang mendapatkan token, lihat [Token akses pengguna](https://huggingface.co/docs/hub/en/security-tokens).

## Pengaturan lingkungan GPU Kubernetes
<a name="sagemaker-hyperpod-gpu-kubernetes-environment-setup"></a>

Untuk menyiapkan lingkungan GPU Kubernetes, lakukan hal berikut:
+ Siapkan lingkungan virtual. Pastikan Anda menggunakan Python 3.9 atau lebih tinggi.

  ```
  python3 -m venv ${PWD}/venv
  source venv/bin/activate
  ```
+ Instal dependensi menggunakan salah satu metode berikut:
  + (Disarankan): [HyperPod metode alat baris perintah](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 metode resep:

    ```
    # install SageMaker HyperPod Recipes.
    git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
    cd sagemaker-hyperpod-recipes
    pip3 install -r requirements.txt
    ```
+ [Siapkan kubectl dan eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ [Instal Helm](https://helm.sh/docs/intro/install/)
+ Connect ke klaster Kubernetes

  ```
  aws eks update-kubeconfig --region "CLUSTER_REGION" --name "CLUSTER_NAME"
  hyperpod connect-cluster --cluster-name "CLUSTER_NAME" [--region "CLUSTER_REGION"] [--namespace <namespace>]
  ```

## Luncurkan pekerjaan pelatihan dengan SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-cli"></a>

Sebaiknya gunakan alat antarmuka SageMaker HyperPod baris perintah (CLI) untuk mengirimkan pekerjaan pelatihan Anda dengan konfigurasi Anda. Contoh berikut mengirimkan pekerjaan pelatihan untuk `hf_llama3_8b_seq16k_gpu_p5x16_pretrain` model.
+ `your_training_container`: Wadah Pembelajaran Mendalam. Untuk menemukan rilis terbaru dari wadah SMP, lihat[Catatan rilis untuk pustaka paralelisme SageMaker model](model-parallel-release-notes.md).
+ (Opsional) Anda dapat memberikan HuggingFace token jika Anda membutuhkan bobot yang telah dilatih sebelumnya HuggingFace dengan menetapkan pasangan nilai kunci berikut:

  ```
  "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"
}'
```

Setelah mengirimkan pekerjaan pelatihan, Anda dapat menggunakan perintah berikut untuk memverifikasi apakah Anda berhasil mengirimkannya.

```
kubectl get pods
NAME                             READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Jika `STATUS` ada `PENDING` atau`ContainerCreating`, jalankan perintah berikut untuk mendapatkan detail lebih lanjut.

```
kubectl describe pod name_of_pod
```

Setelah pekerjaan `STATUS` berubah`Running`, Anda dapat memeriksa log dengan menggunakan perintah berikut.

```
kubectl logs name_of_pod
```

`STATUS`Menjadi `Completed` ketika Anda berlari`kubectl get pods`.

## Luncurkan pekerjaan pelatihan dengan peluncur resep
<a name="sagemaker-hyperpod-gpu-kubernetes-launch-training-job-recipes"></a>

Atau, Anda dapat menggunakan SageMaker HyperPod resep untuk mengirimkan pekerjaan pelatihan Anda. Menggunakan resep melibatkan pembaruan`k8s.yaml`,`config.yaml`, dan menjalankan skrip peluncuran.
+ Di`k8s.yaml`, perbarui`persistent_volume_claims`. Ini memasang FSx klaim Amazon ke `/data` direktori setiap pod komputasi

  ```
  persistent_volume_claims:
    - claimName: fsx-claim
      mountPath: data
  ```
+ Di`config.yaml`, perbarui `repo_url_or_path` di bawah`git`.

  ```
  git:
    repo_url_or_path: <training_adapter_repo>
    branch: null
    commit: null
    entry_script: null
    token: null
  ```
+ Perbarui `launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh`
  + `your_contrainer`: Wadah Pembelajaran Mendalam. Untuk menemukan rilis terbaru dari wadah SMP, lihat[Catatan rilis untuk pustaka paralelisme SageMaker model](model-parallel-release-notes.md).
  + (Opsional) Anda dapat memberikan HuggingFace token jika Anda membutuhkan bobot yang telah dilatih sebelumnya HuggingFace dengan menetapkan pasangan nilai kunci berikut:

    ```
    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
  ```
+ Luncurkan pekerjaan pelatihan

  ```
  bash launcher_scripts/llama/run_hf_llama3_8b_seq16k_gpu_p5x16_pretrain.sh
  ```

Setelah Anda mengirimkan pekerjaan pelatihan, Anda dapat menggunakan perintah berikut untuk memverifikasi apakah Anda berhasil mengirimkannya.

```
kubectl get pods
```

```
NAME READY   STATUS             RESTARTS        AGE
hf-llama3-<your-alias>-worker-0   0/1     running         0               36s
```

Jika `STATUS` ada `PENDING` atau`ContainerCreating`, jalankan perintah berikut untuk mendapatkan detail lebih lanjut.

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

Setelah pekerjaan `STATUS` berubah`Running`, Anda dapat memeriksa log dengan menggunakan perintah berikut.

```
kubectl logs name_of_pod
```

`STATUS`Kehendak beralih ke `Completed` saat Anda berlari`kubectl get pods`.

Untuk informasi selengkapnya tentang konfigurasi kluster k8s, lihat. [Menjalankan pekerjaan pelatihan di HyperPod k8s](cluster-specific-configurations-run-training-job-hyperpod-k8s.md)