Melatih Llama2 dengan Megatron-LM di virtual machine A3 Mega
Ringkasan
Dalam panduan memulai ini, Anda akan mempelajari cara menjalankan workload PyTorch Megatron-LM berbasis container di A3 Mega. Kode ini tersedia di repositori GitHub ini: megatron-gke.
Sebelum memulai
Lakukan langkah-langkah berikut untuk mengaktifkan Google Kubernetes Engine (GKE) API:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
Make sure that you have the following role or roles on the project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Membuat cluster A3 Mega
Buat cluster GKE A3 Mega dengan GPUDirect-TCPXO dan multi-jaringan. Untuk informasi selengkapnya, lihat Memaksimalkan bandwidth jaringan GPU dengan GPUDirect dan multi-jaringan.
-
Menyiapkan lingkungan Anda
Membuat variabel lingkungan untuk beberapa parameter umum
export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION export ZONE=ZONE export PROJECT_ID=PROJECT_ID
Ganti kode berikut:
CLUSTER_NAME
: nama cluster GKE A3 Mega Anda yang telah mengaktifkan GPUDirect-TCPXO dan multi-jaringan.REGION
: region tempat Anda membuat cluster.ZONE
: zona tempat Anda membuat cluster.PROJECT_ID
: project ID Google Cloud Anda.
Konfigurasikan Google Cloud CLI untuk menggunakan kredensial Google Cloud Anda untuk autentikasi:
gcloud auth login
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan Google Cloud CLI.
Instal
kubectl
dan plugin gcloud CLI GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Ambil kredensial untuk cluster GKE Anda:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID}
Jika belum diinstal, instal Helm:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh && rm get_helm.sh sudo chmod +x /usr/local/bin/helm
Menggunakan penjadwal yang mempertimbangkan topologi untuk men-deploy Pod
Anda dapat menggunakan penjadwal yang mempertimbangkan topologi untuk men-deploy Pod GKE ke node yang memiliki topologi GPU yang ditentukan.
Dalam perintah kubectl
berikut, Anda akan menggunakan file langsung dari
repositori. Atau, Anda dapat meng-clone repositori secara lokal dan perintah kubectl
dapat mereferensikan file lokal.
Untuk mengetahui informasi selengkapnya, lihat Penjadwal topologi.
Siapkan akun layanan:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Instal skrip penjadwal topologi di configmap:
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.py curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.py kubectl -n kube-system create configmap topology-scheduler-scripts \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py
Instal daemonset label topologi dan Pod penjadwal topologi:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.yaml $ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.yaml
Amati tindakan penjadwal topologi:
kubectl -n kube-system logs topology-scheduler-pod
Menjalankan workload
Build Dockerfile dan kirim ke Google Cloud Artifact Registry
Buat bucket Cloud Storage dan repositori Docker. Di
scripts/setup-and-configure-resources.sh script
, ganti nama bucket dan repositori dengan nama yang Anda buat, lalu jalankan skrip:bash scripts/setup-and-configure-resources.sh
Build dan kirim image
pytorch-megatron:23.11-py3
ke repositori Anda. Pastikan nama repositori Docker dalam filescripts/build-and-push-docker-image.sh
cocok dengan nama repositori yang Anda gunakan dalam skripscripts/setup-and-configure-resources.sh
. Anda juga dapat mengedit nama tag image Docker sebelum melakukan push.bash scripts/build-and-push-docker-image.sh
Meluncurkan benchmark Llama2 Megatron-LM
Edit file
helm/values.yaml
untuk menentukan bucket Cloud Storage dan image Docker yang dibuat di bagian sebelumnya. Untuk mengetahui beberapa contoh konfigurasi, lihat contoh-konfigurasi.Opsional: Anda juga dapat mengedit file
selected-configuration.sh
untuk menentukan perubahan apa pun yang Anda buat pada konfigurasi Helm default.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Ganti
HELM_EXPERIMENT_NAME
dengan nama arbitrer untuk eksperimen Anda.
Eksperimen menulis metrik dari alat pembuatan profil Nsight Systems ke bucket Cloud Storage yang ditentukan di direktori megatron-experiments
.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan di halaman ini, ikuti langkah-langkah berikut.
Hapus cluster GKE:
Buka halaman Cluster:
- Pilih kotak centang untuk CLUSTER_NAME.
- Klik Delete.
- Untuk mengonfirmasi penghapusan, ketik CLUSTER_NAME, lalu klik Delete.
Menghapus bucket Cloud Storage
Buka halaman Bucket:
Centang kotak untuk bucket Cloud Storage yang Anda buat untuk memulai cepat ini.
Klik
Delete.Untuk mengonfirmasi penghapusan, ketik
DELETE
, lalu klik Delete.