Latih Llama2 dengan Megatron-LM di virtual machine A3 Mega


Ringkasan

Dalam panduan memulai ini, Anda akan mempelajari cara menjalankan Megatron-LM berbasis container Workload PyTorch 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:

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API GKE.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Aktifkan API GKE.

    Mengaktifkan API

  8. 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

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. 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.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.

    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. 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

  1. 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 A3 Mega GKE Anda yang 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.
  2. Konfigurasikan Google Cloud CLI agar dapat menggunakan kredensial Google Cloud Anda untuk autentikasi:

    gcloud auth login
    

    Untuk mengetahui informasi selengkapnya, lihat Mengautentikasi 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} \
      --zone=${ZONE} \
      --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 sesuai topologi untuk men-deploy Pod

Anda dapat menggunakan penjadwal sesuai topologi untuk men-deploy Pod GKE ke node yang memiliki topologi GPU tertentu.

Dalam perintah kubectl berikut, Anda akan menggunakan file langsung dari repositori resource. Atau, Anda dapat meng-clone repositori secara lokal dan kubectl sebagai gantinya dapat merujuk 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 Pod penjadwal label topologi dan 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 beban kerja

Membangun Dockerfile dan mengirim ke Google Cloud Artifact Registry

  1. Buat bucket Cloud Storage dan repositori Docker. Di scripts/setup-and-configure-resources.sh script, ganti bucket dan nama repositori dengan 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 di scripts/build-and-push-docker-image.sh cocok dengan nama repositori yang Anda gunakan dalam scripts/setup-and-configure-resources.sh {i>script<i}. Anda juga dapat mengedit nama tag image Docker sebelum mengirim.

    bash scripts/build-and-push-docker-image.sh
    

Meluncurkan benchmark Megatron-LM Llama2

  1. Edit file helm/values.yaml untuk menentukan bucket Cloud Storage Anda 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 ditentukan perubahan yang Anda buat pada konfigurasi Helm {i>default<i}.

    helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
    

    Ganti HELM_EXPERIMENT_NAME dengan nama acak untuk eksperimen Anda.

Eksperimen ini menulis metrik dari alat profiling Nsight Systems ke bucket Cloud Storage yang ditentukan di direktori megatron-experiments.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda 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 Bucket

  1. Pilih kotak centang untuk bucket Cloud Storage yang Anda buat untuk bucket ini panduan memulai.

  2. Klik Delete.

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

Langkah selanjutnya