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:
Buat cluster dengan konfigurasi default untuk resource komputasi, penyimpanan, dan jaringan, serta dengan GPUDirect RDMA-over-Converged-Ethernet (RoCE) yang diaktifkan:
- Gunakan Cluster Toolkit untuk membuat cluster GKE yang siap produksi dengan cepat.
- Gunakan Accelerated Processing Kit (XPK) untuk membuat cluster GKE dengan cepat untuk pembuktian konsep dan pengujian.
Atau, Anda dapat membuat cluster GKE secara manual untuk penyesuaian atau perluasan lingkungan GKE produksi yang ada secara presisi. Untuk membuat cluster GKE yang dioptimalkan untuk AI secara manual, lihat salah satu halaman berikut:
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)
- Kubernetes Engine Admin (
Memilih opsi pemakaian dan mendapatkan kapasitas
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:
- VM A4X tidak dapat disediakan oleh flex-start.
- Untuk mengetahui informasi selengkapnya tentang mulai fleksibel (Pratinjau) dan GKE, lihat Tentang ketersediaan GPU dengan mulai fleksibel.
- Flex-start menggunakan penempatan rapat upaya terbaik. Untuk memeriksa topologi Anda, lihat Melihat topologi fisik node di cluster GKE Anda.
- Anda hanya bisa mendapatkan informasi topologi saat menggunakan VM Spot jika Anda mengonfigurasi penempatan rapat.
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 menyetelgpu-driver-version=latestdengan 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
- 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.
Clone Cluster Toolkit dari repositori git:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.gitInstal Cluster Toolkit:
cd cluster-toolkit && git checkout main && makeBuat 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 --versioningGanti 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.
Di cetak biru
examples/gke-a4x/gke-a4x-deployment.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar 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 adalahgke-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 GPU1x72dalam 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.
- Untuk menempatkan node pool di mana saja dalam reservasi, berikan
nama reservasi Anda
(
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 adalah10. Nilai defaultnya adalah200.A4X_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4X. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Untuk mengubah setelan lanjutan, edit file
examples/gke-a4x/gke-a4x.yaml.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 kolomenable_periodic_health_checksketrue.Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok
vars, tetapkan kolomhealth_check_scheduleke 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)
Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:
gcloud auth application-default loginDeploy 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.yamlSaat 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-templatedalam blueprint, resource bucketGoogle Cloud , penyimpanan jaringan, dan volume persisten akan dibuat.
A4
- 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.
Clone Cluster Toolkit dari repositori git:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.gitInstal Cluster Toolkit:
cd cluster-toolkit && git checkout main && makeBuat 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 --versioningGanti 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.
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.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar 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 adalahgke-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.
- Untuk menempatkan node pool di mana saja dalam reservasi, berikan
nama reservasi Anda (
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 adalah10. Nilai defaultnya adalah100.A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Untuk mengubah setelan lanjutan, edit
examples/gke-a4/gke-a4.yaml.Flex-start
Di cetak biru
examples/gke-a4/gke-a4-deployment.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar 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 adalahgke-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 denganenable_flex_start: true. Tambahkan di baris berikutnyaenable_queued_provisioning: truejika 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 adalah10. Nilai defaultnya adalah100.A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Dalam blueprint
examples/gke-a4/gke-a4.yamldari repo GitHub, lakukan perubahan berikut:- Di blok
vars, hapusstatic_node_count. - Di blok
vars, pastikan nomorversion_prefixadalah"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 blokreservation(termasuk barisreservationitu sendiri) denganenable_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 blokreservation_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:
Tambahkan
gpu_nominal_quota: NOMINAL_QUOTAke blokvars. Nilaigpu_nominal_quotadigunakan untuk menetapkannominalQuotaGPU dalam spesifikasiClusterQueue(pada langkah-langkah berikut, lihat langkah-langkah menetapkanClusterQueue). Dalam contoh ini,ClusterQueuehanya mengizinkan workload jika jumlah permintaan GPU kurang dari atau sama dengan nilaiNOMINAL_QUOTA. Untuk mengetahui informasi selengkapnya tentangClusterQueue, lihat dokumen Kueue tentang Antrean Cluster berikut.Perbarui blok
kueuemenjadi berikut:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Ganti konten file
kueue-configuration.yaml.tftpldengan 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 variabelnode_countdengan2.
- Di blok
Spot
Di cetak biru
examples/gke-a4/gke-a4-deployment.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar 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 adalahgke-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 barisreservationitu sendiri) denganspot: 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 adalah10. Nilai defaultnya adalah100.A4_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A4. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Dalam blueprint
examples/gke-a4/gke-a4.yamldari repo GitHub, lakukan perubahan berikut:- Di blok
vars, ganti seluruh blokreservation(termasuk barisreservationitu sendiri) denganspot: true. Di bagian
id: a4-pool, hapus blokreservation_affinity. Ganti blok ini dengan baris berikut:spot: $(vars.spot)
- Di blok
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 kolomenable_periodic_health_checksketrue.Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok
vars, tetapkan kolomhealth_check_scheduleke 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)
Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:
gcloud auth application-default loginDeploy 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.yamlSaat 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-templatedalam blueprint, resource bucketGoogle Cloud , penyimpanan jaringan, dan volume persisten akan dibuat.
A3 Ultra
- 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.
Clone Cluster Toolkit dari repositori git:
cd ~ git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.gitInstal Cluster Toolkit:
cd cluster-toolkit && git checkout main && makeBuat 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 --versioningGanti 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.
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.yamldari repositori GitHub, ganti variabel berikut di bagianterraform_backend_defaultsdanvarsagar 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.
- Untuk menempatkan node pool di mana saja dalam reservasi, berikan
nama reservasi Anda (
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 adalah10. Nilai defaultnya adalah100.A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Untuk mengubah setelan lanjutan, edit
examples/gke-a3-ultragpu/gke-a3-ultragpu.yaml.Flex-start
Dalam cetak biru
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamldari repositori GitHub, ganti variabel berikut di bagianterraform_backend_defaultsdanvarsagar 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 denganenable_flex_start: true. Tambahkan di baris berikutnyaenable_queued_provisioning: truejika 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 adalah10. Nilai defaultnya adalah100.A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Di cetak biru
examples/gke-a3-ultragpu/gke-a3-ultragpu.yamldari repositori GitHub, lakukan perubahan berikut:- Di blok
vars, hapusstatic_node_count. - Di blok
vars, perbarui nomorversion_prefixke"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 blokreservation(termasuk barisreservationitu sendiri) denganenable_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 blokreservation_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:
Tambahkan
gpu_nominal_quota: NOMINAL_QUOTAke blokvars. Nilaigpu_nominal_quotadigunakan untuk menyetelnominalQuotaGPU dalam spesifikasiClusterQueue. Dalam contoh ini,ClusterQueuehanya mengizinkan workload jika jumlah permintaan GPU kurang dari atau sama dengan nilaiNOMINAL_QUOTA. Untuk mengetahui informasi selengkapnya tentangClusterQueue, lihat dokumen Kueue tentang Antrean Cluster berikut.Perbarui blok
kueuemenjadi berikut:kueue: install: true config_path: $(vars.kueue_configuration_path) config_template_vars: num_gpus: $(vars.gpu_nominal_quota)Ganti konten file
kueue-configuration.yaml.tftpldengan 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 variabelnode_countdengan2.
- Di blok
Spot
Di cetak biru
examples/gke-a3-ultragpu/gke-a3-ultragpu-deployment.yamldari repo GitHub, isi setelan berikut di bagianterraform_backend_defaultsdanvarsagar 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 barisreservationitu sendiri) denganspot: 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 adalah10. Nilai defaultnya adalah100.A3ULTRA_NODE_POOL_DISK_SIZE_GB: ukuran boot disk untuk setiap node di node pool A3 Ultra. Ukuran disk terkecil yang diizinkan adalah10. Nilai defaultnya adalah100.
Dalam blueprint
examples/gke-a3-ultragpu/gke-a3-ultragpu.yamldari repo GitHub, lakukan perubahan berikut:- Di blok
vars, ganti seluruh blokreservation(termasuk barisreservationitu sendiri) denganspot: true. Di bagian
id: a3-ultragpu-pool, hapus blokreservation_affinity. Ganti blok ini dengan baris berikut:spot: $(vars.spot)
- Di blok
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 kolomenable_periodic_health_checksketrue.Secara default, pemeriksaan kesehatan dijalankan setiap hari Minggu pukul 00.00 PST. Jika Anda ingin mengubah setelan ini, di blok
vars, tetapkan kolomhealth_check_scheduleke 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)
Buat Kredensial Default Aplikasi (ADC) untuk memberikan akses ke Terraform. Jika menggunakan Cloud Shell, Anda dapat menjalankan perintah berikut:
gcloud auth application-default loginDeploy 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.yamlSaat 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-templatedalam 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:
- Instal alat yang diperlukan untuk memenuhi prasyarat XPK.
- Salin nomor versi rilis XPK yang diberi tag terbaru, misalnya,
"v0.8.0". Pada perintah berikut, ganti
XPK_TAGdengan nomor versi XPK terbaru. 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/binBuat 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_NAMEGanti 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.
Pastikan bahwa cluster berhasil dibuat:
python3 xpk.py cluster list --zone=COMPUTE_ZONE --project=PROJECT_IDOpsional: 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_IDGanti 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
- Untuk mempelajari cara menjadwalkan workload di cluster GKE menggunakan TAS dan Kueue, lihat Menjadwalkan workload GKE dengan Topology Aware Scheduling.
- Untuk mempelajari cara mengelola peristiwa umum yang relevan dengan cluster GKE dan workload AI, lihat Mengelola cluster GKE yang dioptimalkan untuk AI.
- Untuk mengetahui informasi tentang cara menguji lingkungan Anda untuk penyiapan dan pengoptimalan yang tepat, lihat Ringkasan pengoptimalan jaringan cluster