

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

# Tutorial pra-pelatihan klaster Trainium Kubernetes
<a name="sagemaker-hyperpod-trainium-kubernetes-cluster-pretrain-tutorial"></a>

Anda dapat menggunakan salah satu metode berikut untuk memulai pekerjaan pelatihan di cluster Trainium 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:  
Siapkan cluster HyperPod Trainium Kubernetes
Lokasi penyimpanan bersama yang dapat berupa sistem file Amazon FSx 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).

## Siapkan lingkungan Trainium Kubernetes Anda
<a name="sagemaker-hyperpod-trainium-setup-trainium-kubernetes-environment"></a>

Untuk mengatur lingkungan Trainium Kubernetes, lakukan hal berikut:

1. Selesaikan langkah-langkah dalam tutorial berikut: [HuggingFace Llama3-8B Pra-pelatihan](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-training/tutorials/hf_llama3_8B_pretraining.html#download-the-dataset) mulai dari **Unduh dataset**. 

1. Siapkan konfigurasi model. Mereka tersedia di repo Neuron. Untuk tutorial ini, Anda dapat menggunakan konfigurasi model llama3 8b.

1. Pengaturan lingkungan virtual. Pastikan Anda menggunakan Python 3.9 atau lebih tinggi.

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

1. Instal dependensi
   + (Disarankan) Gunakan alat baris HyperPod perintah berikut

     ```
     # install HyperPod command line tools
     git clone https://github.com/aws/sagemaker-hyperpod-cli
     cd sagemaker-hyperpod-cli
     pip3 install .
     ```
   + Jika Anda menggunakan SageMaker HyperPod resep, tentukan yang berikut ini

     ```
     # 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. [Siapkan kubectl dan eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

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

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

1. Wadah: [Wadah Neuron](https://github.com/aws-neuron/deep-learning-containers?tab=readme-ov-file#pytorch-training-neuronx)

## Luncurkan pekerjaan pelatihan dengan SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-trainium-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 model `hf_llama3_8b_seq8k_trn1x4_pretrain` Trainium.
+ `your_neuron_container`: [Wadah Neuron](https://github.com/aws-neuron/deep-learning-containers?tab=readme-ov-file#pytorch-training-neuronx).
+ `your_model_config`: Konfigurasi model dari bagian pengaturan lingkungan
+ (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_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>}}"
}'
```

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`Kehendak beralih ke `Completed` saat Anda berlari`kubectl get pods`.

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

Atau, gunakan SageMaker HyperPod resep untuk mengirimkan pekerjaan pelatihan Anda. Untuk mengirimkan pekerjaan pelatihan menggunakan resep, perbarui `k8s.yaml` dan`config.yaml`. Jalankan skrip bash untuk model untuk meluncurkannya.
+ Di`k8s.yaml`, perbarui persistent\_volume\_claims untuk memasang klaim Amazon FSx ke direktori /data di node komputasi

  ```
  persistent_volume_claims:
    - claimName: fsx-claim
      mountPath: data
  ```
+ Perbarui launcher\_scripts/llama /run\_hf\_llama3\_8b\_seq8k\_trn1x4\_pretrain.sh
  + `your_neuron_contrainer`: Wadah dari bagian pengaturan lingkungan
  + `your_model_config`: Konfigurasi model dari bagian pengaturan lingkungan

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

  ```
  bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
  ```

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` berada di `PENDING` atau`ContainerCreating`, jalankan perintah berikut untuk mendapatkan detail lebih lanjut.

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

Setelah status pekerjaan berubah menjadi 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. [Tutorial pra-pelatihan klaster Trainium Kubernetes](#sagemaker-hyperpod-trainium-kubernetes-cluster-pretrain-tutorial)