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 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 konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda ikuti. Untuk mengetahui grup mana saja yang Anda ikuti, 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 konsol Google Cloud , 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 Pilih peran, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
- Klik Simpan.
-
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 telah mengaktifkan GPUDirect-TCPXO dan multi-jaringan.CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.PROJECT_ID: Google Cloud Project ID Anda.
Konfigurasi 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
kubectldan 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} \ --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 kompatibel dengan topologi untuk men-deploy Pod
Anda dapat menggunakan penjadwal yang kompatibel dengan 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.
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.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
Bangun 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
Bangun 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
Luncurkan 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 sample-configurations.Opsional: Anda juga dapat mengedit file
selected-configuration.shuntuk menentukan perubahan apa pun yang Anda lakukan pada konfigurasi Helm default.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Ganti
HELM_EXPERIMENT_NAMEdengan 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 pada 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 panduan memulai cepat ini.
Klik Delete.
Untuk mengonfirmasi penghapusan, ketik
DELETE, lalu klik Delete.