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)
Ada dua cara untuk meluncurkan pekerjaan pelatihan di cluster GPU Kubernetes:
-
(Disarankan) HyperPod alat baris perintah
-
Peluncur NeMo gaya
Prasyarat
Sebelum memulai menyiapkan lingkungan Anda, pastikan Anda telah menyiapkan lingkungan Anda, pastikan Anda telah menyiapkan:
-
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.
-
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
.
Pengaturan lingkungan GPU Kubernetes
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
: # 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
-
-
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
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.
-
Deep Learning Containers Untuk menemukan rilis terbaru dari kontainer SMP, lihatCatatan rilis untuk pustaka paralelisme SageMaker model.
-
(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
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
STATUS
Menjadi Completed
ketika Anda berlarikubectl
get pods
.
Luncurkan pekerjaan pelatihan dengan peluncur resep
Atau, Anda dapat menggunakan SageMaker HyperPod resep untuk mengirimkan pekerjaan pelatihan Anda. Menggunakan resep melibatkan pembaruank8s.yaml
,config.yaml
, dan menjalankan skrip peluncuran.
-
Di
k8s.yaml
, perbaruipersistent_volume_claims
. Ini memasang FSx klaim Amazon ke/data
direktori setiap pod komputasipersistent_volume_claims: - claimName: fsx-claim mountPath: data
-
Di
config.yaml
, perbaruirepo_url_or_path
di bawahgit
.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
-
Deep Learning Containers Untuk menemukan rilis terbaru dari kontainer SMP, lihatCatatan rilis untuk pustaka paralelisme SageMaker model.
-
(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
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
STATUS
Keinginan beralih ke Completed
saat Anda berlarikubectl get pods
.
Untuk informasi selengkapnya tentang menghubungkan ke klaster DB, lihat Menjalankan pekerjaan pelatihan di HyperPod k8s.