Tutorial - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b - Amazon SageMaker AI

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

Tutorial - Amazon SageMaker HyperPod Checkpointless Pretraining Llama 3 70b

Urutan langkah berikut diperlukan untuk menjalankan resep pelatihan tanpa pemeriksaan. HyperPod

Prasyarat

Sebelum Anda mulai mengatur lingkungan Anda, pastikan Anda memiliki:

Pengaturan lingkungan Kubernetes

Untuk menyiapkan lingkungan Kubernetes Anda, lakukan hal berikut:

  1. Siapkan lingkungan virtual. Pastikan Anda menggunakan Python lebih besar dari atau sama dengan 3.10 dan lebih rendah dari 3.14.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  2. Siapkan kubectl dan eksctl

  3. Instal Helm

  4. Connect ke klaster Kubernetes

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
  5. Instal dependensi menggunakan salah satu metode berikut:

    1. Metode 1: Metode SageMaker HyperPod 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
    2. Metode 2: kubectl dengan metode yaml pekerjaan yang telah ditentukan sebelumnya

      # install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training

Anda sekarang dapat meluncurkan resep pelatihan tanpa pemeriksaan menggunakan peluncur NeMo -style atau menggunakan kubectl.

Metode 1: Luncurkan pekerjaan pelatihan dengan peluncur resep

Atau, Anda dapat menggunakan SageMaker HyperPod resep untuk mengirimkan pekerjaan pelatihan Anda. Menggunakan resep melibatkan pembaruan k8s.yaml, config.yaml dan menjalankan skrip peluncuran.

  1. Perbarui launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh

    Wadah Pembelajaran Mendalam. Untuk menemukan rilis terbaru dari wadah pelatihan checkpointless, lihat catatan rilis pelatihan tanpa pemeriksaan.

    #!/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 \
  2. Luncurkan pekerjaan pelatihan

    bash launcher_scripts/llama/run_checkpointless_llama3_70b_pretrain.sh
  3. Setelah Anda mengirimkan pekerjaan pelatihan, Anda dapat menggunakan perintah berikut untuk memverifikasi apakah Anda berhasil mengirimkannya.

    kubectl get pods NAME READY STATUS RESTARTS AGE llama-3-70b-worker-0 0/1 running 0 36s
  4. Jika STATUS di PENDING atau ContainerCreating, jalankan perintah berikut untuk mendapatkan detail lebih lanjut

    kubectl describe pod <name of pod>
  5. Setelah status pekerjaan berubah menjadi Running, Anda dapat memeriksa log dengan menggunakan perintah berikut.

    kubectl logs <name of pod>

    STATUS akan berubah menjadi Selesai saat Anda menjalankan kubectl get pods

Metode 2: Luncurkan pekerjaan pelatihan dengan kubectl dengan yaml yang telah ditentukan sebelumnya

Pilihan lainnya adalah meluncurkan pelatihan melalui kubectl dengan yaml pekerjaan yang telah ditentukan sebelumnya.

  1. Perbarui examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml

  2. Kirim pekerjaan menggunakan kubectl dengan pretrain_llama3_70b_checkpointless_p5.yaml

    kubectl apply -f examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml
  3. Setelah Anda mengirimkan pekerjaan pelatihan, Anda dapat menggunakan perintah berikut untuk memverifikasi apakah Anda berhasil mengirimkannya.

    kubectl get pods NAME READY STATUS RESTARTS AGE llama3-pretrain-checkpointless-worker-0 0/1 running 0 36s
  4. Jika STATUS di PENDING atau ContainerCreating, jalankan perintah berikut untuk mendapatkan detail lebih lanjut

    kubectl describe pod <name of pod>
  5. Setelah status pekerjaan berubah menjadi Running, Anda dapat memeriksa log dengan menggunakan perintah berikut.

    kubectl logs <name of pod>

    STATUS akan berubah menjadi Selesai saat Anda menjalankan kubectl get pods