Melatih Llama2 dengan Megatron-LM di mesin virtual 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:
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Pastikan Anda memiliki peran berikut di project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Memeriksa peran
-
Di Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang menyertakan Anda. Untuk mempelajari grup mana yang menyertakan Anda, hubungi administrator Anda.
- Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Select a role, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role , lalu tambahkan tiap peran tambahan.
- Klik Save.
-
Membuat cluster A3 Mega
Buat cluster GKE A3 Mega dengan GPUDirect-TCPXO dan multi-jaringan. Untuk mengetahui informasi selengkapnya, lihat Memaksimalkan bandwidth jaringan GPU dengan GPUDirect dan multi-jaringan.
Menyiapkan lingkungan Anda
Buat variabel lingkungan untuk beberapa parameter umum
export CLUSTER_NAME=CLUSTER_NAME export CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION export PROJECT_ID=PROJECT_ID
Ganti kode berikut:
CLUSTER_NAME: nama cluster GKE A3 Mega Anda yang mengaktifkan GPUDirect-TCPXO dan multi-jaringan.CONTROL_PLANE_LOCATION: lokasi Compute Engine dari control plane cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.PROJECT_ID: Project ID Google Cloud Anda.
Konfigurasi Google Cloud CLI untuk menggunakankredensial Anda untuk autentikasi: Google Cloud
gcloud auth login
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan Google Cloud CLI.
Instal
kubectldan plugin GKE gcloud CLI: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} \ --location=${CONTROL_PLANE_LOCATION} \ --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 mendukung topologi untuk men-deploy Pod
Anda dapat menggunakan penjadwal yang mendukung topologi untuk men-deploy Pod GKE ke node yang memiliki topologi GPU tertentu.
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.
Menyiapkan 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.pyInstal 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.yamlAmati tindakan penjadwal topologi:
kubectl -n kube-system logs topology-scheduler-pod
Menjalankan workload
Mem-build Dockerfile dan mengirim ke Google Cloud Artifact Registry
Buat bucket Cloud Storage dan repositori Docker. Dalam
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-py3ke repositori Anda. Pastikan nama repositori Docker dalam filescripts/build-and-push-docker-image.shcocok dengan nama repositori yang Anda gunakan dalam skripscripts/setup-and-configure-resources.sh. Anda juga dapat mengedit nama tag image Docker sebelum mengirim.bash scripts/build-and-push-docker-image.sh
Meluncurkan benchmark Megatron-LM Llama2
Edit file
helm/values.yamluntuk menentukan bucket Cloud Storage dan image Docker yang dibuat di bagian sebelumnya. Untuk beberapa contoh konfigurasi, lihat contoh-konfigurasi.Opsional: Anda juga dapat mengedit file
selected-configuration.shuntuk menentukan perubahan yang Anda buat pada konfigurasi Helm default.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Ganti
HELM_EXPERIMENT_NAMEdengan nama arbitrer untuk eksperimen Anda.
Eksperimen ini menulis metrik dari alat pembuatan profil Nsight Systems ke bucket Cloud Storage
yang ditentukan dalam direktori megatron-experiments.
Pembersihan
Agar akunAnda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Google Cloud
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:
Pilih kotak centang untuk bucket Cloud Storage yang Anda buat untuk panduan memulai ini.
Klik Delete.
Untuk mengonfirmasi penghapusan, ketik
DELETE, lalu klik Delete.