Tutorial pra-pelatihan klaster Trainium Kubernetes - Amazon SageMaker AI

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

Anda dapat menggunakan salah satu metode berikut untuk memulai pekerjaan pelatihan di cluster Trainium Kubernetes.

Prasyarat

Sebelum Anda mulai mengatur lingkungan Anda, pastikan Anda memiliki:

  • Siapkan cluster HyperPod Trainium Kubernetes

  • Lokasi penyimpanan bersama yang dapat 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.

Siapkan lingkungan Trainium Kubernetes Anda

Untuk mengatur lingkungan Trainium Kubernetes, lakukan hal berikut:

  1. Selesaikan langkah-langkah dalam tutorial berikut: HuggingFace Llama3-8B Pretraining mulai dari Download dataset.

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

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

    python3 -m venv ${PWD}/venv source venv/bin/activate
  4. 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

      # install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt
  5. Siapkan kubectl dan eksctl

  6. Instal Helm

  7. Connect ke klaster Kubernetes Anda

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>]
  8. Wadah: Wadah Neuron

Luncurkan pekerjaan pelatihan dengan SageMaker HyperPod CLI

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.

  • 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 atauContainerCreating, jalankan perintah berikut untuk mendapatkan detail lebih lanjut.

kubectl describe pod <name of pod>

Setelah pekerjaan STATUS berubahRunning, Anda dapat memeriksa log dengan menggunakan perintah berikut.

kubectl logs <name of pod>

STATUSKehendak beralih ke Completed saat Anda berlarikubectl get pods.

Luncurkan pekerjaan pelatihan dengan peluncur resep

Atau, gunakan SageMaker HyperPod resep untuk mengirimkan pekerjaan pelatihan Anda. Untuk mengirimkan pekerjaan pelatihan menggunakan resep, perbarui k8s.yaml danconfig.yaml. Jalankan skrip bash untuk model untuk meluncurkannya.

  • Dik8s.yaml, perbarui persistent_volume_claims untuk memasang klaim FSx Amazon ke direktori /data di node komputasi

    persistent_volume_claims: - claimName: fsx-claim mountPath: data
  • Perbarui peluncur_ _hf_llama3_8b_seq8k_trn1x4_pretrain.sh scripts/llama/run

    • 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 atauContainerCreating, 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>

STATUSKehendak beralih ke Completed saat Anda berlarikubectl get pods.

Untuk informasi selengkapnya tentang konfigurasi kluster k8s, lihat. Tutorial pra-pelatihan klaster Trainium Kubernetes