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:

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Pastikan Anda memiliki peran berikut di project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser

    Memeriksa peran

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. 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.

    4. Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Klik Grant access.
    4. Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.

    5. Klik Pilih peran, lalu telusuri peran.
    6. Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
    7. 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

  1. 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.
  2. 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.

  3. Instal kubectl dan plugin gcloud CLI GKE:

    sudo apt-get install kubectl
    sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
    
  4. Ambil kredensial untuk cluster GKE Anda:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
      --location=${CONTROL_PLANE_LOCATION} \
      --project=${PROJECT_ID}
    
  5. 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.

  1. Siapkan akun layanan:

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
    
  2. 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
    
  3. 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
    
  4. Amati tindakan penjadwal topologi:

    kubectl -n kube-system logs topology-scheduler-pod
    

Menjalankan workload

Bangun Dockerfile dan kirim ke Google Cloud Artifact Registry

  1. 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
    
  2. Bangun dan kirim image pytorch-megatron:23.11-py3 ke repositori Anda. Pastikan nama repositori Docker dalam file scripts/build-and-push-docker-image.sh cocok dengan nama repositori yang Anda gunakan dalam skrip scripts/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

  1. Edit file helm/values.yaml untuk menentukan bucket Cloud Storage dan image Docker yang dibuat di bagian sebelumnya. Untuk beberapa contoh konfigurasi, lihat sample-configurations.

  2. Opsional: Anda juga dapat mengedit file selected-configuration.sh untuk menentukan perubahan apa pun yang Anda lakukan 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 pada halaman ini, ikuti langkah-langkah berikut.

Hapus cluster GKE:

Buka halaman Cluster:

Buka Cluster

  1. Pilih kotak centang untuk CLUSTER_NAME.
  2. Klik Delete.
  3. Untuk mengonfirmasi penghapusan, ketik CLUSTER_NAME, lalu klik Delete.

Menghapus bucket Cloud Storage

Buka halaman Bucket:

Buka Buckets

  1. Centang kotak untuk bucket Cloud Storage yang Anda buat untuk panduan memulai cepat ini.

  2. Klik Delete.

  3. Untuk mengonfirmasi penghapusan, ketik DELETE, lalu klik Delete.

Langkah berikutnya