Membuat cluster GKE yang dioptimalkan untuk AI dengan konfigurasi default

Halaman ini menunjukkan cara membuat cluster Google Kubernetes Engine (GKE) yang dioptimalkan untuk AI menggunakan virtual machine (VM) A4X, A4, A3 Ultra, A3 Mega, dan A3 High (8 GPU) untuk mendukung beban kerja AI dan ML Anda.

Seri mesin A4X, A4, A3 Ultra, A3 Mega, dan A3 High (8 GPU) dirancang untuk memungkinkan Anda menjalankan cluster AI/ML skala besar dengan fitur seperti penempatan workload yang ditargetkan, kontrol pemeliharaan cluster lanjutan, dan penjadwalan yang sesuai topologi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pengelolaan cluster.

GKE menyediakan satu platform untuk menjalankan beragam set workload sesuai kebutuhan organisasi Anda. Hal ini mencakup pra-pelatihan terdistribusi berperforma tinggi, penyesuaian model, inferensi model, penyajian aplikasi, dan layanan pendukung. GKE mengurangi beban operasional pengelolaan beberapa platform.

Pilih cara membuat cluster GKE yang dioptimalkan untuk AI

Setiap opsi berikut untuk pembuatan cluster memberikan tingkat kemudahan dan fleksibilitas yang berbeda-beda dalam konfigurasi cluster dan penjadwalan workload:

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
  • Pastikan Anda memiliki izin yang diperlukan untuk membuat dan mengelola cluster GKE dan akun layanan terkait:
    • Kubernetes Engine Admin (roles/container.admin)
    • Compute Admin (roles/compute.admin)
    • Storage Admin (roles/storage.admin)
    • Project IAM Admin (roles/resourcemanager.projectIamAdmin)
    • (roles/iam.serviceAccountAdmin) Admin Akun Layanan
    • (roles/iam.serviceAccountUser) Pengguna Akun Layanan
    • Pelanggan Penggunaan Layanan (roles/serviceusage.serviceUsageConsumer)
    • Role Administrator (roles/iam.roleAdmin)
    • Secret Manager Secret Version Manager (roles/secretmanager.secretVersionManager)

Memilih opsi pemakaian dan mendapatkan kapasitas

  1. Pilih opsi pemakaian. Buat pilihan berdasarkan cara Anda ingin mendapatkan dan menggunakan resource GPU. Untuk mempelajari lebih lanjut, lihat Memilih opsi pemakaian.

    Untuk GKE, pertimbangkan informasi tambahan berikut saat memilih opsi penggunaan:

  2. Dapatkan kapasitas. Proses untuk mendapatkan kapasitas berbeda untuk setiap opsi konsumsi.

    Untuk mempelajari proses opsi penggunaan yang Anda pilih, lihat Ringkasan kapasitas.

Persyaratan

Persyaratan berikut berlaku untuk cluster GKE yang dioptimalkan untuk AI:

  • Untuk A4X, pastikan Anda menggunakan, untuk 1.33 atau yang lebih baru, GKE versi 1.33.4-gke.1036000 atau yang lebih baru. Atau, untuk 1.32, gunakan GKE versi 1.32.8-gke.1108000 atau yang lebih baru. Versi ini memastikan bahwa A4X menggunakan hal berikut:

    • R580, versi driver GPU minimum untuk A4X.
    • Pengelolaan Memori Berbasis Driver yang Koheren (CDMM), yang diaktifkan secara default. NVIDIA merekomendasikan agar cluster Kubernetes mengaktifkan mode ini untuk mengatasi masalah pelaporan berlebih memori. CDMM memungkinkan memori GPU dikelola melalui driver, bukan sistem operasi (OS). Pendekatan ini membantu Anda menghindari pengaktifan memori GPU oleh OS, dan mengekspos memori GPU sebagai node Non-Uniform Memory Access (NUMA) ke OS. GPU multi-instance tidak didukung saat CDMM diaktifkan. Untuk mengetahui informasi selengkapnya tentang CDMM, lihat Dukungan Hardware dan Software.
    • GPUDirect RDMA, yang direkomendasikan untuk mengaktifkan node pool A4X agar dapat menggunakan kemampuan jaringan A4X.
  • Pastikan Anda menggunakan versi driver GPU minimum, bergantung pada jenis mesin:

    • A4X: GPU GB200 di VM A4X memerlukan versi driver GPU R580 minimum. Lihat persyaratan versi yang disebutkan sebelumnya.
    • A4: GPU B200 di VM A4 memerlukan driver GPU versi R570 atau yang lebih baru. Secara default, GKE otomatis menginstal versi driver ini di semua node A4 yang menjalankan versi minimum yang diperlukan untuk A4, yaitu 1.32.1-gke.1729000 atau yang lebih baru.
    • A3 Ultra: GPU H200 di VM A3 Ultra memerlukan versi driver GPU minimum R550, yang tersedia di GKE 1.31 sebagai versi driver latest. Untuk A3 Ultra, Anda harus menyetel gpu-driver-version=latest dengan GKE 1.31. Untuk GKE versi 1.31.5-gke.1169000 atau yang lebih baru, GKE, secara default, otomatis menginstal versi driver GPU R550 di node A3 Ultra.
  • Untuk node pool A3 Ultra, Anda harus menetapkan jenis disk ke hyperdisk-balanced.

  • Untuk menggunakan GPUDirect RDMA, gunakan versi minimum berikut bergantung pada jenis mesin:

    • A4X: Lihat persyaratan versi yang disebutkan sebelumnya.
    • A4: Gunakan 1.32.2-gke.1475000 atau yang lebih baru.
    • A3 Ultra: Gunakan 1.31.4-gke.1183000 atau yang lebih baru.
  • Untuk menggunakan GPUDirect RDMA, node GKE harus menggunakan image node Container-Optimized OS. Image node Ubuntu dan Windows tidak didukung.

  • Anda harus menggunakan model penyediaan terikat reservasi untuk membuat cluster dengan A4X. Model penyediaan lainnya tidak didukung.

Membuat cluster

Gunakan petunjuk berikut untuk membuat cluster menggunakan Cluster Toolkit atau XPK.

Membuat cluster menggunakan Cluster Toolkit

Bagian ini memandu Anda melalui proses pembuatan cluster, memastikan bahwa project Anda mengikuti praktik terbaik dan memenuhi persyaratan untuk cluster GKE yang dioptimalkan untuk AI.

A4X

  1. Luncurkan Cloud Shell. Anda dapat menggunakan lingkungan yang berbeda; namun, sebaiknya gunakan Cloud Shell karena dependensi sudah diinstal sebelumnya untuk Cluster Toolkit. Jika Anda tidak ingin menggunakan Cloud Shell, ikuti petunjuk untuk menginstal dependensi guna menyiapkan lingkungan lain.
  2. Clone Cluster Toolkit dari repositori git:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. Instal Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. Buat bucket Cloud Storage untuk menyimpan status deployment Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning
    

    Ganti variabel berikut:

    • BUCKET_NAME: nama bucket Cloud Storage baru.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION_TERRAFORM_STATE: region komputasi tempat Anda ingin menyimpan status deployment Terraform.
  5. Di cetak biru examples/gke-a4x/gke-a4x-deployment.yaml dari repo GitHub, isi setelan berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

    • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal. Nilai defaultnya adalah gke-a4x.
    • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION: region komputasi untuk cluster.
    • COMPUTE_ZONE: zona komputasi untuk node pool mesin A4X. Perhatikan bahwa zona ini harus cocok dengan zona tempat mesin tersedia dalam reservasi Anda.
    • NODE_COUNT: jumlah node A4X di node pool cluster Anda, yang harus 18 node atau kurang. Sebaiknya gunakan 18 node untuk mendapatkan topologi GPU 1x72 dalam satu subblok menggunakan domain NVLink.
    • IP_ADDRESS/SUFFIX: rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus menyertakan alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
    • Untuk kolom extended_reservation, gunakan salah satu opsi berikut, bergantung pada apakah Anda ingin menargetkan blok tertentu dalam reservasi saat mem-provisioning node pool:

      • Untuk menempatkan node pool di mana saja dalam reservasi, berikan nama reservasi Anda (RESERVATION_NAME).
      • Untuk menargetkan blok tertentu dalam reservasi, gunakan nama reservasi dan blok dalam format berikut:

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      Jika Anda tidak tahu blok mana yang tersedia dalam reservasi Anda, lihat Melihat topologi reservasi.

    • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A4X. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 200.
      • A4X_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4X. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.

    Untuk mengubah setelan lanjutan, edit file examples/gke-a4x/gke-a4x.yaml.

  6. Secara opsional, Anda dapat mengaktifkan Cluster Health Scanner (CHS) di cluster. CHS memeriksa kondisi cluster GPU Anda dengan menjalankan pengujian untuk memverifikasi bahwa cluster siap menjalankan workload Anda. Untuk mengaktifkan CHS, lakukan perubahan berikut pada file examples/gke-a4x/gke-a4x-deployment.yaml:

    • Di blok vars, tetapkan kolom enable_periodic_health_checks ke true.

    • Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok vars, tetapkan kolom health_check_schedule ke nilai yang sesuai, dalam format cron.
      Jadwalkan dalam format cron: none * * * * * # | | | | | # | | | | day of the week (0-6) (Sunday to Saturday) # | | | month (1-12) # | | day of the month (1-31) # | hour (0-23) # minute (0-59)

  7. Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:

    gcloud auth application-default login
    
  8. Deploy blueprint untuk menyediakan infrastruktur GKE menggunakan jenis mesin A4X:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
    examples/gke-a4x/gke-a4x-deployment.yaml \
    examples/gke-a4x/gke-a4x.yaml
    
  9. Saat diminta, pilih (T)erapkan untuk men-deploy blueprint.

    • Blueprint ini membuat jaringan VPC, jaringan VPC RDMA GPU, akun layanan, cluster, dan node pool.
    • Untuk mendukung template tugas fio-bench-job-template dalam blueprint, resource bucketGoogle Cloud , penyimpanan jaringan, dan volume persisten akan dibuat.

A4

  1. Luncurkan Cloud Shell. Anda dapat menggunakan lingkungan yang berbeda; namun, sebaiknya gunakan Cloud Shell karena dependensi sudah diinstal sebelumnya untuk Cluster Toolkit. Jika Anda tidak ingin menggunakan Cloud Shell, ikuti petunjuk untuk menginstal dependensi guna menyiapkan lingkungan lain.
  2. Clone Cluster Toolkit dari repositori git:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. Instal Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. Buat bucket Cloud Storage untuk menyimpan status deployment Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning
    

    Ganti variabel berikut:

    • BUCKET_NAME: nama bucket Cloud Storage baru.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION_TERRAFORM_STATE: region komputasi tempat Anda ingin menyimpan status deployment Terraform.
  5. File yang perlu Anda edit untuk membuat cluster bergantung pada opsi penggunaan yang Anda gunakan untuk deployment. Pilih tab yang sesuai dengan model penyediaan opsi konsumsi Anda.

    Terikat dengan reservasi

    Di cetak biru examples/gke-a4/gke-a4-deployment.yaml dari repo GitHub, isi setelan berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

    • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal. Nilai defaultnya adalah gke-a4.
    • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION: region komputasi untuk cluster.
    • COMPUTE_ZONE: zona komputasi untuk node pool mesin A4. Perhatikan bahwa zona ini harus cocok dengan zona tempat mesin tersedia dalam reservasi Anda.
    • NODE_COUNT: jumlah node A4 di cluster Anda.
    • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus menyertakan alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
    • Untuk kolom reservation, gunakan salah satu opsi berikut, bergantung pada apakah Anda ingin menargetkan blok tertentu dalam reservasi saat mem-provisioning node pool:

      • Untuk menempatkan node pool di mana saja dalam reservasi, berikan nama reservasi Anda (RESERVATION_NAME).
      • Untuk menargetkan blok tertentu dalam reservasi, gunakan nama reservasi dan blok dalam format berikut:

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      Jika Anda tidak tahu blok mana yang tersedia dalam reservasi Anda, lihat Melihat topologi reservasi.

    • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A4. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
      • A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.

    Untuk mengubah setelan lanjutan, edit examples/gke-a4/gke-a4.yaml.

    Flex-start

    1. Di cetak biru examples/gke-a4/gke-a4-deployment.yaml dari repo GitHub, isi setelan berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

      • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal. Nilai defaultnya adalah gke-a4.
      • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
      • PROJECT_ID: Google Cloud Project ID Anda.
      • COMPUTE_REGION: region komputasi untuk cluster.
      • COMPUTE_ZONE: zona komputasi untuk node pool mesin A4.
      • Hapus static_node_count.
      • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus mencakup alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
      • Hapus kolom reservation, dan ganti kolom dengan enable_flex_start: true. Tambahkan di baris berikutnya enable_queued_provisioning: true jika Anda juga ingin menggunakan penyediaan dalam antrean. Untuk mengetahui informasi selengkapnya, lihat Menggunakan node pool dengan mulai fleksibel dengan penyediaan dalam antrean.
      • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A4. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
        • A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
    2. Dalam blueprint examples/gke-a4/gke-a4.yaml dari repo GitHub, lakukan perubahan berikut:

      • Di blok vars, hapus static_node_count.
      • Di blok vars, pastikan nomor version_prefix adalah "1.32." atau lebih tinggi. Untuk menggunakan mulai fleksibel di GKE, cluster Anda harus menggunakan versi 1.32.2-gke.1652000 atau yang lebih baru.
      • Di blok vars, ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan enable_flex_start: true, dan, secara opsional, enable_queued_provisioning: true.
      • Di blok vars, jika Anda tidak memerlukan penyediaan dalam antrean, hapus baris berikut: kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")).
      • Di bagian id: a4-pool, hapus baris berikut: static_node_count: $(vars.static_node_count).
      • Di bagian id: a4-pool, hapus blok reservation_affinity. Ganti blok ini dengan baris berikut:

        • enable_flex_start: $(vars.enable_flex_start)
        • auto_repair: false
        • Untuk penyediaan dalam antrean, jika Anda ingin mengaktifkannya, tambahkan baris tambahan berikut:
          • enable_queued_provisioning: $(vars.enable_queued_provisioning)
          • autoscaling_total_min_nodes: 0
      • Di bagian id: workload-manager-install, hapus blok berikut:

         kueue:
            install: true
            config_path: $(vars.kueue_configuration_path)
            config_template_vars:
               num_gpus: $(a3-ultragpu-pool.static_gpu_count)
               accelerator_type: $(vars.accelerator_type)
        
        • Untuk memulai fleksibel dengan penyediaan dalam antrean, lakukan hal berikut:

          1. Tambahkan gpu_nominal_quota: NOMINAL_QUOTA ke blok vars. Nilai gpu_nominal_quota digunakan untuk menetapkan nominalQuota GPU dalam spesifikasi ClusterQueue (pada langkah-langkah berikut, lihat langkah-langkah menetapkan ClusterQueue). Dalam contoh ini, ClusterQueue hanya mengizinkan workload jika jumlah permintaan GPU kurang dari atau sama dengan nilai NOMINAL_QUOTA. Untuk mengetahui informasi selengkapnya tentang ClusterQueue, lihat dokumen Kueue tentang Antrean Cluster berikut.

          2. Perbarui blok kueue menjadi berikut:

            kueue:
               install: true
               config_path: $(vars.kueue_configuration_path)
               config_template_vars:
                  num_gpus: $(vars.gpu_nominal_quota)
            
          3. Ganti konten file kueue-configuration.yaml.tftpl dengan berikut ini:

            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ResourceFlavor
            metadata:
               name: "default-flavor"
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: AdmissionCheck
            metadata:
               name: dws-prov
            spec:
               controllerName: kueue.x-k8s.io/provisioning-request
               parameters:
                  apiGroup: kueue.x-k8s.io
                  kind: ProvisioningRequestConfig
                  name: dws-config
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ProvisioningRequestConfig
            metadata:
               name: dws-config
            spec:
               provisioningClassName: queued-provisioning.gke.io
               managedResources:
               - nvidia.com/gpu
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ClusterQueue
            metadata:
               name: "dws-cluster-queue"
            spec:
               namespaceSelector: {}
               resourceGroups:
               - coveredResources: ["nvidia.com/gpu"]
                  flavors:
                  - name: "default-flavor"
                  resources:
                  - name: "nvidia.com/gpu"
                     nominalQuota: ${num_gpus}
               admissionChecks:
               - dws-prov
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: LocalQueue
            metadata:
               namespace: "default"
               name: "dws-local-queue"
            spec:
               clusterQueue: "dws-cluster-queue"
            ---
            
      • Di bagian id: job-template, ganti variabel node_count dengan 2.

    Spot

    1. Di cetak biru examples/gke-a4/gke-a4-deployment.yaml dari repo GitHub, isi setelan berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

      • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal. Nilai defaultnya adalah gke-a4.
      • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
      • PROJECT_ID: Google Cloud Project ID Anda.
      • COMPUTE_REGION: region komputasi untuk cluster.
      • COMPUTE_ZONE: zona komputasi untuk node pool mesin A4.
      • STATIC_NODE_COUNT: jumlah node A4 di cluster Anda.
      • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus mencakup alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
      • Ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan spot: true.
      • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A4. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
        • A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
    2. Dalam blueprint examples/gke-a4/gke-a4.yaml dari repo GitHub, lakukan perubahan berikut:

      • Di blok vars, ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan spot: true.
      • Di bagian id: a4-pool, hapus blok reservation_affinity. Ganti blok ini dengan baris berikut:

        • spot: $(vars.spot)
  6. Secara opsional, Anda dapat mengaktifkan Cluster Health Scanner (CHS) di cluster. CHS memeriksa kondisi cluster GPU Anda dengan menjalankan pengujian untuk memverifikasi bahwa cluster siap menjalankan workload Anda. Untuk mengaktifkan CHS, lakukan perubahan berikut pada file examples/gke-a4/gke-a4-deployment.yaml:

    • Di blok vars, tetapkan kolom enable_periodic_health_checks ke true.

    • Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok vars, tetapkan kolom health_check_schedule ke nilai yang sesuai, dalam format cron.
      Jadwalkan dalam format cron: none * * * * * # | | | | | # | | | | day of the week (0-6) (Sunday to Saturday) # | | | month (1-12) # | | day of the month (1-31) # | hour (0-23) # minute (0-59)

  7. Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:

    gcloud auth application-default login
    
  8. Deploy blueprint untuk menyediakan infrastruktur GKE menggunakan jenis mesin A4:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
    examples/gke-a4/gke-a4-deployment.yaml \
    examples/gke-a4/gke-a4.yaml
    
  9. Saat diminta, pilih (T)erapkan untuk men-deploy blueprint.

    • Blueprint ini membuat jaringan VPC, jaringan VPC RDMA GPU, akun layanan, cluster, dan node pool.
    • Untuk mendukung template tugas fio-bench-job-template dalam blueprint, resource bucketGoogle Cloud , penyimpanan jaringan, dan volume persisten akan dibuat.

A3 Ultra

  1. Luncurkan Cloud Shell. Anda dapat menggunakan lingkungan yang berbeda; namun, sebaiknya gunakan Cloud Shell karena dependensi sudah diinstal sebelumnya untuk Cluster Toolkit. Jika Anda tidak ingin menggunakan Cloud Shell, ikuti petunjuk untuk menginstal dependensi guna menyiapkan lingkungan lain.
  2. Clone Cluster Toolkit dari repositori git:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
    
  3. Instal Cluster Toolkit:

    cd cluster-toolkit && git checkout main && make
    
  4. Buat bucket Cloud Storage untuk menyimpan status deployment Terraform:

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=STANDARD \
        --project=PROJECT_ID \
        --location=COMPUTE_REGION_TERRAFORM_STATE \
        --uniform-bucket-level-access
    gcloud storage buckets update gs://BUCKET_NAME --versioning
    

    Ganti variabel berikut:

    • BUCKET_NAME: nama bucket Cloud Storage baru.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION_TERRAFORM_STATE: region komputasi tempat Anda ingin menyimpan status deployment Terraform.
  5. File yang perlu Anda edit untuk membuat cluster bergantung pada opsi penggunaan yang Anda gunakan untuk deployment. Pilih tab yang sesuai dengan model penyediaan opsi konsumsi Anda.

    Terikat dengan reservasi

    Dalam cetak biru examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml dari repositori GitHub, ganti variabel berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

    • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal.
    • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
    • PROJECT_ID: Google Cloud Project ID Anda.
    • COMPUTE_REGION: region komputasi untuk cluster.
    • COMPUTE_ZONE: zona komputasi untuk node pool mesin A3 Ultra. Perhatikan bahwa zona ini harus cocok dengan zona tempat mesin tersedia dalam reservasi Anda.
    • NODE_COUNT: jumlah node A3 Ultra dalam cluster Anda.
    • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus menyertakan alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
    • Untuk kolom reservation, gunakan salah satu opsi berikut, bergantung pada apakah Anda ingin menargetkan blok tertentu dalam reservasi saat mem-provisioning node pool:

      • Untuk menempatkan node pool di mana saja dalam reservasi, berikan nama reservasi Anda (RESERVATION_NAME).
      • Untuk menargetkan blok tertentu dalam reservasi, gunakan nama reservasi dan blok dalam format berikut:

        RESERVATION_NAME/reservationBlocks/BLOCK_NAME
        

      Jika Anda tidak tahu blok mana yang tersedia dalam reservasi Anda, lihat Melihat topologi reservasi.

    • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A3 Ultra. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

      • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
      • A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.

    Untuk mengubah setelan lanjutan, edit examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.

    Flex-start

    1. Dalam cetak biru examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml dari repositori GitHub, ganti variabel berikut di bagian terraform_backend_defaults dan vars agar cocok dengan nilai spesifik untuk deployment Anda:

      • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal.
      • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
      • PROJECT_ID: Google Cloud Project ID Anda.
      • COMPUTE_REGION: region komputasi untuk cluster.
      • COMPUTE_ZONE: zona komputasi untuk node pool mesin A3 Ultra.
      • Hapus static_node_count.
      • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus mencakup alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
      • Hapus kolom reservation, dan ganti kolom dengan enable_flex_start: true. Tambahkan di baris berikutnya enable_queued_provisioning: true jika Anda juga ingin menggunakan penyediaan dalam antrean. Untuk mengetahui informasi selengkapnya, lihat Menggunakan node pool dengan mulai fleksibel dengan penyediaan dalam antrean.
      • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A3 Ultra. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
        • A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
    2. Di cetak biru examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml dari repositori GitHub, lakukan perubahan berikut:

      • Di blok vars, hapus static_node_count.
      • Di blok vars, perbarui nomor version_prefix ke "1.32." atau yang lebih tinggi. Untuk menggunakan mulai fleksibel di GKE, cluster Anda harus menggunakan versi 1.32.2-gke.1652000 atau yang lebih baru.
      • Di blok vars, ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan enable_flex_start: true, dan, secara opsional, enable_queued_provisioning: true.
      • Di blok vars, hapus baris berikut: kueue_configuration_path: $(ghpc_stage("./kueue-configuration.yaml.tftpl")).
      • Di bagian id: a3-ultragpu-pool, hapus baris berikut: static_node_count: $(vars.static_node_count).
      • Di bagian id: a3-ultragpu-pool, hapus blok reservation_affinity. Ganti blok ini dengan baris berikut:

        • enable_flex_start: $(vars.enable_flex_start)
        • auto_repair: false
        • Untuk penyediaan dalam antrean, jika Anda ingin mengaktifkannya, tambahkan baris tambahan berikut:
          • enable_queued_provisioning: $(vars.enable_queued_provisioning)
          • autoscaling_total_min_nodes: 0
      • Di bagian id: workload-manager-install, hapus blok berikut:

        config_path: $(vars.kueue_configuration_path)
        config_template_vars:
          num_gpus: $(a4-pool.static_gpu_count)
          accelerator_type: $(vars.accelerator_type)
        
        • Untuk memulai fleksibel dengan penyediaan dalam antrean, ikuti tiga langkah berikut:

          1. Tambahkan gpu_nominal_quota: NOMINAL_QUOTA ke blok vars. Nilai gpu_nominal_quota digunakan untuk menyetel nominalQuota GPU dalam spesifikasi ClusterQueue. Dalam contoh ini, ClusterQueue hanya mengizinkan workload jika jumlah permintaan GPU kurang dari atau sama dengan nilai NOMINAL_QUOTA. Untuk mengetahui informasi selengkapnya tentang ClusterQueue, lihat dokumen Kueue tentang Antrean Cluster berikut.

          2. Perbarui blok kueue menjadi berikut:

            kueue:
               install: true
               config_path: $(vars.kueue_configuration_path)
               config_template_vars:
                  num_gpus: $(vars.gpu_nominal_quota)
            
          3. Ganti konten file kueue-configuration.yaml.tftpl dengan berikut ini:

            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ResourceFlavor
            metadata:
               name: "default-flavor"
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: AdmissionCheck
            metadata:
               name: dws-prov
            spec:
               controllerName: kueue.x-k8s.io/provisioning-request
               parameters:
                  apiGroup: kueue.x-k8s.io
                  kind: ProvisioningRequestConfig
                  name: dws-config
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ProvisioningRequestConfig
            metadata:
               name: dws-config
            spec:
               provisioningClassName: queued-provisioning.gke.io
               managedResources:
               - nvidia.com/gpu
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: ClusterQueue
            metadata:
               name: "dws-cluster-queue"
            spec:
               namespaceSelector: {}
               resourceGroups:
               - coveredResources: ["nvidia.com/gpu"]
                  flavors:
                  - name: "default-flavor"
                  resources:
                  - name: "nvidia.com/gpu"
                     nominalQuota: ${num_gpus}
               admissionChecks:
               - dws-prov
            ---
            apiVersion: kueue.x-k8s.io/v1beta1
            kind: LocalQueue
            metadata:
               namespace: "default"
               name: "dws-local-queue"
            spec:
               clusterQueue: "dws-cluster-queue"
            ---
            
        • Di kolom id: job-template, ganti variabel node_count dengan 2.

    Spot

    1. Di cetak biru examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml dari repo GitHub, isi setelan berikut di bagian terraform_backend_defaults dan vars agar sesuai dengan nilai spesifik untuk deployment Anda:

      • DEPLOYMENT_NAME: nama unik untuk deployment, yang panjangnya harus antara 6 dan 30 karakter. Jika nama deployment tidak unik dalam project, pembuatan cluster akan gagal.
      • BUCKET_NAME: nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.
      • PROJECT_ID: Google Cloud Project ID Anda.
      • COMPUTE_REGION: region komputasi untuk cluster.
      • COMPUTE_ZONE: zona komputasi untuk node pool mesin A3 Ultra.
      • STATIC_NODE_COUNT: jumlah node A3 Ultra di cluster Anda.
      • IP_ADDRESS/SUFFIX: Rentang alamat IP yang ingin Anda izinkan untuk terhubung dengan cluster. Blok CIDR ini harus mencakup alamat IP mesin yang ingin Anda gunakan untuk memanggil Terraform. Untuk mengetahui informasi selengkapnya, lihat Cara kerja jaringan yang diizinkan.
      • Ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan spot: true.
      • Tetapkan ukuran boot disk untuk setiap node sistem dan node pool A3 Ultra. Ukuran disk yang Anda butuhkan bergantung pada kasus penggunaan Anda. Misalnya, jika Anda menggunakan disk sebagai cache untuk mengurangi latensi penarikan image berulang kali, Anda dapat menetapkan ukuran disk yang lebih besar untuk mengakomodasi framework, model, atau image container Anda:

        • SYSTEM_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool sistem. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
        • A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah 10. Nilai defaultnya adalah 100.
    2. Dalam blueprint examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml dari repo GitHub, lakukan perubahan berikut:

      • Di blok vars, ganti seluruh blok reservation (termasuk baris reservation itu sendiri) dengan spot: true.
      • Di bagian id: a3-ultragpu-pool, hapus blok reservation_affinity. Ganti blok ini dengan baris berikut:

        • spot: $(vars.spot)
  6. Secara opsional, Anda dapat mengaktifkan Cluster Health Scanner (CHS) di cluster. CHS memeriksa kondisi cluster GPU Anda dengan menjalankan pengujian untuk memverifikasi bahwa cluster siap menjalankan workload Anda. Untuk mengaktifkan CHS, lakukan perubahan berikut pada file examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml:

    • Di blok vars, tetapkan kolom enable_periodic_health_checks ke true.

    • Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok vars, tetapkan kolom health_check_schedule ke nilai yang sesuai, dalam format cron.
      Jadwalkan dalam format cron: none * * * * * # | | | | | # | | | | day of the week (0-6) (Sunday to Saturday) # | | | month (1-12) # | | day of the month (1-31) # | hour (0-23) # minute (0-59)

  7. Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:

    gcloud auth application-default login
    
  8. Deploy blueprint untuk menyediakan infrastruktur GKE menggunakan jenis mesin A3 Ultra:

    cd ~/cluster-toolkit
    ./gcluster deploy -d \
    examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yaml \
    examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml
    
  9. Saat diminta, pilih (T)erapkan untuk men-deploy blueprint.

    • Blueprint ini membuat jaringan VPC, jaringan VPC RDMA GPU, akun layanan, cluster, dan node pool.
    • Untuk mendukung template tugas fio-bench-job-template dalam blueprint, resource bucketGoogle Cloud , penyimpanan jaringan, dan volume persisten akan dibuat.

Membuat cluster dan menjalankan workload menggunakan XPK

Accelerated Processing Kit (XPK) memungkinkan Anda menyediakan dan memanfaatkan cluster dengan cepat. XPK menghasilkan infrastruktur yang telah dikonfigurasi sebelumnya dan dioptimalkan untuk pelatihan, yang ideal saat eksekusi workload menjadi fokus utama Anda.

Buat cluster dan jalankan workload dengan VM A3 Ultra menggunakan XPK:

  1. Instal alat yang diperlukan untuk memenuhi prasyarat XPK.
  2. Salin nomor versi rilis XPK yang diberi tag terbaru, misalnya, "v0.8.0". Pada perintah berikut, ganti XPK_TAG dengan nomor versi XPK terbaru.
  3. Buka jendela shell di perangkat Linux, lalu masukkan perintah berikut untuk membuat clone XPK dari repositori Git, dan menginstal paket yang diperlukan:

      ## Setup virtual environment.
      VENV_DIR=~/venvp3
      python3 -m venv $VENV_DIR
      source $VENV_DIR/bin/activate
      ## Clone the repository.
      git clone --branch XPK_TAG https://github.com/google/xpk.git
      cd xpk
      ## Install required packages
      make install && export PATH=$PATH:$PWD/bin
    
  4. Buat cluster Standar menggunakan VM Ultra A3. Anda dapat menyediakan node cluster menggunakan kapasitas yang dicadangkan:

      python3 xpk.py cluster create \
         --cluster=CLUSTER_NAME \
         --device-type=h200-141gb-8 \
         --zone=COMPUTE_ZONE  \
         --project=PROJECT_ID \
         --num-nodes=NUM_NODES \
         --reservation=RESERVATION_NAME
    

    Ganti variabel berikut:

    • CLUSTER_NAME: nama untuk cluster.
    • COMPUTE_ZONE: zona komputasi untuk kumpulan node mesin A3 Ultra. Untuk menggunakan kapasitas yang dicadangkan, pastikan Anda menggunakan zona tempat Anda mencadangkan kapasitas. Selain itu, sebaiknya pilih zona di dekat pengguna untuk meminimalkan latensi.
    • PROJECT_ID: Project ID Google Cloud Anda.
    • NUM_NODES: jumlah node pekerja dalam node pool.
    • RESERVATION_NAME: nama pemesanan Anda.

      XPK menawarkan argumen tambahan untuk pembuatan cluster, termasuk argumen untuk membuat cluster pribadi, membuat Vertex AI Tensorboard, dan menggunakan penyediaan otomatis node. Untuk mengetahui informasi selengkapnya, lihat panduan pembuatan cluster untuk XPK.

  5. Pastikan bahwa cluster berhasil dibuat:

      python3 xpk.py cluster list --zone=COMPUTE_ZONE --project=PROJECT_ID
    
  6. Opsional: Jalankan beban kerja untuk menguji lingkungan cluster:

      python3 xpk.py workload create \
         --workload WORKLOAD_NAME --command "echo goodbye" \
         --cluster CLUSTER_NAME \
         --device-type=h200-141gb-8 \
         --num-nodes=WORKLOAD_NUM_NODES \
         --zone=COMPUTE_ZONE \
         --project=PROJECT_ID
    

    Ganti variabel berikut:

    • WORKLOAD_NAME: nama workload Anda.
    • CLUSTER_NAME: nama cluster.
    • WORKLOAD_NUM_NODES: jumlah node pekerja yang digunakan untuk eksekusi workload.
    • COMPUTE_ZONE: zona komputasi untuk node pool mesin A3 Ultra.
    • PROJECT_ID: Google Cloud Project ID Anda.

Menguji performa jaringan

Sebaiknya Anda memvalidasi fungsi cluster yang disediakan. Untuk melakukannya, gunakan uji NCCL/gIB, yaitu uji NVIDIA Collective Communications Library (NCCL) yang dioptimalkan untuk lingkungan Google.

Menjalankan benchmark yang dapat direproduksi

Anda dapat menggunakan benchmark pra-pelatihan yang direproduksi untuk model machine learning terbuka besar di VM A4 dan A3 Ultra di GKE.

Setiap resep memberikan petunjuk untuk menyelesaikan tugas-tugas berikut:

  • Siapkan lingkungan Anda.
  • Jalankan benchmark.
  • Menganalisis hasil tolok ukur. Hal ini mencakup hasil tolok ukur dan log mendetail untuk analisis lebih lanjut.

Untuk melihat semua resep yang tersedia, lihat repositori GitHub GPU recipes.

Model Framework Resep
Llama-3.1-70B MaxText Beban kerja 32 node
Llama-3.1-70B NeMo Beban kerja 32 node
Mixtral-8-7B NeMo Beban kerja 32 node

Membersihkan resource yang dibuat oleh Cluster Toolkit

Untuk menghindari biaya berulang untuk resource yang digunakan di halaman ini, bersihkan resource yang disediakan oleh Cluster Toolkit, termasuk jaringan VPC dan cluster GKE:

   cd ~/cluster-toolkit
   ./gcluster destroy CLUSTER_NAME/

Ganti CLUSTER_NAME dengan nama cluster Anda. Untuk cluster yang dibuat dengan Cluster Toolkit, nama cluster didasarkan pada DEPLOYMENT_NAME.

Langkah berikutnya