Halaman ini menunjukkan cara membuat cluster Google Kubernetes Engine (GKE) yang dioptimalkan untuk AI yang menggunakan virtual machine (VM) A4 atau A3 Ultra untuk mendukung workload AI dan ML Anda. Untuk A4X, lihat Membuat cluster GKE yang dioptimalkan untuk AI kustom yang menggunakan A4X.
Seri mesin A4 dan A3 Ultra dirancang untuk memungkinkan Anda menjalankan cluster AI/ML skala besar dengan fitur seperti penempatan workload yang ditargetkan, kontrol pemeliharaan cluster tingkat lanjut, dan penjadwalan yang sesuai topologi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pengelolaan cluster.
GKE menyediakan satu platform untuk menjalankan beragam set workload bagi organisasi Anda, sehingga mengurangi beban operasional dalam mengelola beberapa platform. Anda dapat menjalankan workload seperti pra-pelatihan terdistribusi berperforma tinggi, penyesuaian model, inferensi model, penayangan aplikasi, dan layanan pendukung.
Di halaman ini, Anda akan mempelajari cara membuat cluster GKE dengan Google Cloud CLI untuk mendapatkan fleksibilitas maksimum dalam mengonfigurasi cluster berdasarkan kebutuhan workload Anda. Atau, Anda dapat memilih untuk menggunakan Cluster Toolkit guna men-deploy cluster dengan cepat menggunakan setelan default yang mencerminkan praktik terbaik untuk banyak kasus penggunaan. Untuk mengetahui petunjuk cara melakukannya, lihat Membuat cluster GKE yang dioptimalkan untuk AI dengan konfigurasi default.
Opsi konfigurasi cluster dengan GPUDirect RDMA
Untuk membuat cluster dengan Google Cloud CLI, Anda dapat memilih salah satu opsi konfigurasi cluster berikut:
- Jika Anda tidak berencana menjalankan workload AI terdistribusi: buat cluster GKE tanpa menggunakan GPUDirect RDMA.
- Jika Anda berencana menjalankan workload AI terdistribusi: buat cluster GKE dengan GPUDirect RDMA.
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.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna membuat dan mengelola cluster GKE, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Kubernetes Engine Admin (
roles/container.admin) -
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Compute Admin (
roles/compute.admin) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Service Account Admin (
roles/iam.serviceAccountAdmin) -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) -
Storage Admin (
roles/storage.admin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memilih opsi pemakaian dan mendapatkan kapasitas
Pilih opsi pemakaian. Buat pilihan berdasarkan cara Anda ingin mendapatkan dan menggunakan resource GPU. Untuk mengetahui informasi selengkapnya, lihat Memilih opsi pemakaian.
Untuk GKE, pertimbangkan informasi tambahan berikut saat Anda memilih opsi penggunaan:
- 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, lihat Melihat topologi fisik node di cluster GKE.
- Anda hanya bisa mendapatkan informasi topologi saat menggunakan VM Spot jika Anda mengonfigurasi penempatan rapat.
Dapatkan kapasitas. Pelajari cara mendapatkan kapasitas untuk opsi penggunaan Anda.
Persyaratan
Persyaratan berikut berlaku untuk cluster GKE yang dioptimalkan untuk AI:
- Untuk menggunakan model penyediaan mulai fleksibel, Anda harus menggunakan GKE versi 1.32.2-gke.1652000 atau yang lebih baru.
Pastikan Anda menggunakan versi driver GPU minimum, bergantung pada jenis mesin:
- A4: GPU B200 di VM A4 memerlukan versi driver GPU R570 minimum. 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 R550 minimum, yang tersedia di GKE versi 1.31 sebagai versi driver
latest. Untuk VM A3 Ultra, Anda harus menetapkan nilai kolomgpu-driver-version=latestdengan GKE versi 1.31. Untuk GKE versi 1.31.5-gke.1169000 atau yang lebih baru, GKE secara otomatis menginstal versi driver GPU R550 di node A3 Ultra secara default, termasuk saat Anda menghilangkan tandagpu-driver-version.
Untuk menggunakan GPUDirect RDMA, persyaratan tambahan berikut berlaku:
- Gunakan versi minimum berikut, bergantung pada jenis mesin:
- A4: gunakan versi 1.32.2-gke.1475000 atau yang lebih baru.
- A3 Ultra: gunakan versi 1.31.4-gke.1183000 atau yang lebih baru.
- Node GKE harus menggunakan image node Container-Optimized OS. Image node Ubuntu dan Windows tidak didukung.
- Workload GKE Anda harus menggunakan semua GPU yang tersedia dan Pod Anda harus menggunakan semua kartu antarmuka jaringan (NIC) sekunder yang tersedia di satu node GKE. Beberapa Pod tidak dapat berbagi RDMA di satu node GKE.
- Penyiapan ini menjalankan pengujian NCCL. Untuk menjalankan pengujian NCCL ini, Anda harus memiliki kuota VM minimum sebesar
2(yaitu, 16 GPU jika Anda menggunakan jenis mesina4-highgpu-8gataua3-ultragpu-8g). - GPUDirect RDMA tidak kompatibel dengan NCCL Fast Socket atau GPUDirect TCPX/TCPXO. Jangan mengaktifkan NCCL Fast Socket atau menginstal plugin TCPX/TCPXO di cluster yang menggunakan GPUDirect RDMA.
- Gunakan versi minimum berikut, bergantung pada jenis mesin:
Pastikan Anda menggunakan lokasi yang memiliki ketersediaan untuk jenis mesin yang Anda pilih. Untuk mengetahui informasi selengkapnya, lihat Lokasi GPU.
Membuat cluster GKE yang dioptimalkan untuk AI
Ikuti petunjuk di bagian ini untuk membuat cluster GKE yang memenuhi persyaratan untuk cluster GKE yang dioptimalkan untuk AI. Anda dapat memilih antara membuat cluster dengan atau tanpa GPUDirect RDMA.
Pertimbangan untuk membuat cluster
Saat Anda membuat cluster, pertimbangkan informasi berikut:
- Pilih lokasi cluster:
- Pastikan Anda menggunakan lokasi yang memiliki ketersediaan untuk jenis mesin yang Anda pilih. Untuk mengetahui informasi selengkapnya, lihat Lokasi GPU.
- Untuk reservasi padat, Anda dapat membuat cluster zonal. Dalam hal ini, ganti flag
--regiondengan flag--zone=COMPUTE_ZONE, denganCOMPUTE_ZONEadalah zona bidang kontrol Anda. - Untuk beban kerja yang berjalan di lebih dari 1.000 node dan yang memerlukan latensi jaringan rendah
antar-node, Anda dapat membuat cluster regional.
Untuk melakukan kolokasi fisik pada node yang sensitif terhadap performa, buat node pool GPU Anda dalam satu zona menggunakan flag
--node-locations.
- Pilih versi driver:
- Versi driver dapat berupa salah satu nilai berikut:
default: menginstal versi driver default untuk versi node GKE Anda. Untuk mengetahui informasi selengkapnya tentang persyaratan untuk versi driver default, lihat bagian Persyaratan.latest: menginstal versi driver terbaru yang tersedia untuk versi GKE Anda. Opsi ini hanya tersedia untuk node yang menggunakan Container-Optimized OS.disabled: melewati penginstalan driver otomatis. Anda harus menginstal driver secara manual setelah membuat node pool.
- Untuk mengetahui informasi selengkapnya tentang versi driver GPU default dan terbaru untuk versi node GKE, lihat Menginstal driver GPU NVIDIA secara manual.
- Versi driver dapat berupa salah satu nilai berikut:
Pilih afinitas reservasi:
- Anda dapat menemukan informasi tentang reservasi Anda, seperti nama reservasi atau nama blok tertentu dalam reservasi Anda. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.
- Flag
--reservation-affinitydapat mengambil nilaispecificatauany. Namun, untuk workload AI terdistribusi berperforma tinggi, sebaiknya gunakan reservasi tertentu. Saat Anda menggunakan reservasi tertentu, termasuk reservasi bersama, tentukan nilai flag
--reservationdalam format berikut:projects/PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMEGanti kode berikut:
PROJECT_ID: Google Cloud Project ID Anda.RESERVATION_NAME: nama pemesanan Anda.BLOCK_NAME: nama blok tertentu dalam reservasi.
Membuat cluster tanpa GPUDirect RDMA
Untuk membuat cluster tanpa GPUDirect RDMA, gunakan petunjuk berikut untuk membuat cluster dengan node pool default berbasis CPU dan node pool tambahan dengan GPU. Pendekatan ini memungkinkan kumpulan node default menjalankan layanan lain.
Membuat cluster:
gcloud container clusters create CLUSTER_NAME \ --cluster-version=CLUSTER_VERSION \ --region=COMPUTE_REGIONGanti kode berikut:
CLUSTER_NAME: nama cluster baru.CLUSTER_VERSION: versi cluster baru Anda. Untuk mengetahui informasi selengkapnya tentang versi GKE yang mendukung konfigurasi Anda, lihat bagian Persyaratan.COMPUTE_REGION: region cluster baru Anda. Jika Anda berencana membuat cluster zona, gunakan flag--zone, bukan flag--region, misalnya:--zone=COMPUTE_ZONE. GantiCOMPUTE_ZONEdengan zona bidang kontrol.
Buat node pool berbasis GPU dengan salah satu perintah berikut. Perintah yang perlu Anda jalankan bergantung pada opsi penggunaan yang Anda gunakan untuk deployment. Pilih tab yang sesuai dengan model penyediaan opsi konsumsi Anda.
Terikat dengan reservasi
Untuk penyediaan yang terikat dengan reservasi, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \ --region COMPUTE_REGION --cluster CLUSTER_NAME \ --node-locations COMPUTE_ZONE \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \ --machine-type MACHINE_TYPE \ --num-nodes=NUM_NODES \ --reservation-affinity=specific \ --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAMEGanti kode berikut:
NODE_POOL_NAME: nama node pool.COMPUTE_REGION: region cluster baru Anda.CLUSTER_NAME: nama cluster baru.COMPUTE_ZONE: zona node pool Anda.GPU_TYPE: jenis akselerator GPU:- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
AMOUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VMa4-highgpu-8gdana3-ultragpu-8g, jumlah GPU adalah8.DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Nilainya dapat berupa salah satu nilai berikut:default,latest, ataudisabled.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.NUM_NODES: jumlah node untuk node pool.RESERVATION_NAME: nama pemesanan Anda. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.BLOCK_NAME: nama blok tertentu dalam reservasi. Untuk mengetahui nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.
Flex-start
Untuk penyediaan mulai fleksibel, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \ --region COMPUTE_REGION --cluster CLUSTER_NAME \ --node-locations COMPUTE_ZONE \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \ --machine-type MACHINE_TYPE \ --flex-start --enable-autoscaling --num-nodes=0 \ --total-max-nodes TOTAL_MAX_NODES \ --no-enable-autorepair --location-policy=ANY \ --reservation-affinity=none [\ --enable-queued-provisioning]Ganti kode berikut:
NODE_POOL_NAME: nama node pool.COMPUTE_REGION: region cluster baru Anda.CLUSTER_NAME: nama cluster baru.COMPUTE_ZONE: zona node pool Anda.GPU_TYPE: jenis akselerator GPU:- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
AMOUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VMa4-highgpu-8gdana3-ultragpu-8g, jumlah GPU adalah8.DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Nilainya dapat berupa salah satu nilai berikut:default,latest, ataudisabled.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.TOTAL_MAX_NODES: jumlah maksimum node yang akan diskalakan secara otomatis untuk seluruh node pool.Jika Anda ingin menggunakan flex-start dengan penyediaan dalam antrean, sertakan flag
--enable-queued-provisioning.Untuk mengetahui informasi selengkapnya tentang penggunaan mulai fleksibel, lihat Menjalankan workload skala besar dengan mulai fleksibel dengan penyediaan dalam antrean.
Spot
Untuk penyediaan spot, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \ --region COMPUTE_REGION --cluster CLUSTER_NAME \ --node-locations COMPUTE_ZONE \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \ --machine-type MACHINE_TYPE \ --num-nodes=NUM_NODES \ --spotGanti kode berikut:
NODE_POOL_NAME: nama node pool.COMPUTE_REGION: region cluster baru Anda.CLUSTER_NAME: nama cluster baru.COMPUTE_ZONE: zona node pool Anda.GPU_TYPE: jenis akselerator GPU:- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
AMOUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VMa4-highgpu-8gdana3-ultragpu-8g, jumlah GPU adalah8.DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Nilainya dapat berupa salah satu nilai berikut:default,latest, ataudisabled.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.NUM_NODES: jumlah node untuk node pool.Untuk mengetahui informasi selengkapnya tentang cara membuat cluster dengan Spot VM, lihat artikel Menjalankan workload fault-tolerant dengan biaya lebih rendah menggunakan Spot VM.
Hubungkan ke cluster Anda, sehingga Anda dapat menjalankan perintah
kubectldi bagian berikutnya:gcloud container clusters get-credentials CLUSTER_NAME --location=COMPUTE_REGIONGanti kode berikut:
CLUSTER_NAME: nama cluster Anda.COMPUTE_REGION: nama region komputasi.Untuk mengetahui informasi selengkapnya, lihat Menginstal kubectl dan mengonfigurasi akses cluster.
Membuat cluster dengan GPUDirect RDMA
Untuk beban kerja AI terdistribusi, beberapa node GPU sering kali ditautkan bersama untuk bekerja sebagai satu komputer. VM A4 dan VM A3 Ultra dilengkapi dengan adaptor jaringan Titanium ML, yang dibangun di NIC NVIDIA ConnectX-7 (CX7). VM A4 dan VM A3 Ultra memberikan traffic antar-GPU antar-node 3,2 Tbps yang tidak memblokir dengan menggunakan RDMA over Converged Ethernet (RoCE). RoCE memungkinkan penskalaan dan kolaborasi di beberapa GPU dengan memberikan pengalaman cloud berperforma tinggi untuk workload AI.
Untuk mengetahui informasi selengkapnya tentang cara membuat cluster GKE menggunakan Google Cloud CLI dan GPUDirect TCPX (VM A3 Tinggi) atau TCPXO (VM A3 Mega), lihat memaksimalkan bandwidth jaringan GPU di cluster mode Autopilot, atau memaksimalkan bandwidth jaringan GPU di cluster mode Standar.
Untuk membuat cluster GKE dalam mode Autopilot atau Standard dengan GPUDirect RDMA, selesaikan langkah-langkah berikut, yang dijelaskan di bagian berikutnya:
- Membuat VPC dan subnet
- Membuat cluster GKE dengan multi-networking
- Membuat objek jaringan GKE
- Instal biner RDMA dan konfigurasi NCCL
- Men-deploy dan menjalankan uji NCCL
- Mengonfigurasi manifes Pod untuk GPUDirect-RDMA
Membuat VPC dan subnet
VM A4 dan VM A3 Ultra memiliki konfigurasi berikut:
- Delapan GPU NVIDIA B200 (A4) atau H200 (A3 Ultra) per mesin virtual yang terhubung dengan NVLink
- Dua CPU Intel Emerald Rapids
- Delapan NIC CX-7 400 Gbps untuk jaringan antar-GPU
- Dua NIC Google Titanium 200 Gbps untuk layanan eksternal
Workload AI dan ML, seperti pelatihan terdistribusi, memerlukan akselerasi yang canggih untuk mengoptimalkan performa dengan mengurangi waktu penyelesaian tugas. Untuk beban kerja yang memerlukan performa tinggi, throughput tinggi, dan latensi rendah, GPUDirect RDMA mengurangi hop jaringan yang diperlukan untuk mentransfer payload ke dan dari GPU, sehingga menggunakan bandwidth jaringan yang tersedia secara lebih efisien. GPUDirect RDMA dirancang untuk meningkatkan throughput secara signifikan dalam skala besar dibandingkan dengan GPU yang tidak menggunakan GPUDirect.
Salah satu NIC Google Titanium yang terkait dengan CPU menggunakan jaringan default di GKE. Anda tidak perlu membuat VPC baru untuk NIC ini jika memiliki rentang alamat IP yang cukup untuk jaringan default.
Anda dapat membuat satu VPC untuk NIC Titanium CPU kedua (gVNIC) dan VPC lain untuk delapan NIC RDMA CX-7 menggunakan perintah ini.
Tetapkan variabel lingkungan agar sesuai dengan deployment Anda:
export REGION="COMPUTE_REGION" export ZONE="COMPUTE_ZONE" export PROJECT="PROJECT_ID" export GVNIC_NETWORK_PREFIX="GVNIC_NETWORK_PREFIX" export RDMA_NETWORK_PREFIX="RDMA_NETWORK_PREFIX"Ganti variabel berikut:
COMPUTE_REGION: region cluster Anda.COMPUTE_ZONE: zona node pool Anda.PROJECT_ID: Google Cloud Project ID Anda.GVNIC_NETWORK_PREFIX:a4high-gvnicuntuk VM A4 ataua3ultra-gvnicuntuk VM A3 Ultra.RDMA_NETWORK_PREFIX:a4high-rdmauntuk VM A4 ataua3ultra-rdmauntuk VM A3 Ultra.
Buat dua jaringan VPC:
# Create a VPC for the additional Google Titanium CPU NIC gcloud compute --project=${PROJECT} \ networks create \ ${GVNIC_NETWORK_PREFIX}-net \ --subnet-mode=custom gcloud compute --project=${PROJECT} \ networks subnets create \ ${GVNIC_NETWORK_PREFIX}-sub \ --network=${GVNIC_NETWORK_PREFIX}-net \ --region=${REGION} \ --range=192.168.0.0/24 gcloud compute --project=${PROJECT} \ firewall-rules create \ ${GVNIC_NETWORK_PREFIX}-internal \ --network=${GVNIC_NETWORK_PREFIX}-net \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=192.168.0.0/16 # Create HPC VPC for the RDMA NICs with 8 subnets. gcloud beta compute --project=${PROJECT} \ networks create ${RDMA_NETWORK_PREFIX}-net \ --network-profile=${ZONE}-vpc-roce \ --subnet-mode=custom # Create subnets for the HPC VPC. for N in $(seq 0 7); do gcloud compute --project=${PROJECT} \ networks subnets create \ ${RDMA_NETWORK_PREFIX}-sub-$N \ --network=${RDMA_NETWORK_PREFIX}-net \ --region=${REGION} \ --range=192.168.$((N+1)).0/24 & # offset to avoid overlap with gvnics done
Membuat cluster GKE dengan multi-jaringan
Autopilot
Buat cluster GKE Autopilot dengan multi-networking:
gcloud container clusters create-auto CLUSTER_NAME \ --enable-multi-networking \ --cluster-version=CLUSTER_VERSION \ --region=COMPUTE_REGIONGanti kode berikut:
CLUSTER_NAME: nama cluster Anda.CLUSTER_VERSION: versi cluster baru Anda. Untuk mengetahui versi GKE yang mendukung konfigurasi Anda, lihat bagian Persyaratan.COMPUTE_REGION: nama region komputasi.
Hubungkan ke cluster Anda, sehingga Anda dapat menjalankan perintah
kubectldi bagian berikutnya:gcloud container clusters get-credentials CLUSTER_NAME --location=COMPUTE_REGIONGanti kode berikut:
CLUSTER_NAME: nama cluster Anda.COMPUTE_REGION: nama region komputasi.
Untuk mengetahui informasi selengkapnya, lihat Menginstal kubectl dan mengonfigurasi akses cluster.
Standar
Buat cluster GKE Standard dan node pool GPU dengan multi-jaringan:
Membuat cluster:
gcloud container clusters create CLUSTER_NAME \ --region=COMPUTE_REGION \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2 --enable-ip-alias --enable-multi-networking [\ --services-ipv4-cidr=SERVICE_CIDR \ --cluster-ipv4-cidr=POD_CIDR]Ganti kode berikut:
CLUSTER_NAME: nama cluster Anda.CLUSTER_VERSION: versi cluster baru Anda. Untuk mengetahui versi GKE yang mendukung konfigurasi Anda, lihat bagian Persyaratan.COMPUTE_REGION: nama region komputasi.
Secara opsional, Anda dapat memberikan rentang CIDR sekunder secara eksplisit untuk layanan dan Pod. Jika Anda menggunakan flag opsional ini, ganti variabel berikut:
SERVICE_CIDR: rentang CIDR sekunder untuk layanan.POD_CIDR: rentang CIDR sekunder untuk Pod.
Saat menggunakan flag ini, Anda harus memverifikasi bahwa rentang CIDR tidak tumpang-tindih dengan rentang subnet untuk jaringan node tambahan. Misalnya, rentang dalam nilai
SERVICE_CIDR=10.65.0.0/19danPOD_CIDR=10.64.0.0/19tidak tumpang-tindih satu sama lain. Untuk mengetahui informasi selengkapnya, lihat Menambahkan rentang alamat IPv4 Pod.Buat node pool. Perintah yang perlu Anda jalankan bergantung pada opsi penggunaan yang Anda gunakan untuk deployment. Pilih tab yang sesuai dengan model penyediaan opsi konsumsi Anda.
Terikat dengan reservasi
Untuk penyediaan yang terikat dengan reservasi, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \ --region COMPUTE_REGION --cluster CLUSTER_NAME \ --node-locations COMPUTE_ZONE \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \ --machine-type MACHINE_TYPE \ --num-nodes=NUM_NODES \ --reservation-affinity=specific \ --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAME \ --additional-node-network network=${GVNIC_NETWORK_PREFIX}-net,subnetwork=${GVNIC_NETWORK_PREFIX}-sub \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-0 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-1 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-2 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-3 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-4 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-5 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-6 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-7Ganti kode berikut:
NODE_POOL_NAME: nama node pool.COMPUTE_REGION: region cluster baru Anda.CLUSTER_NAME: nama cluster baru.COMPUTE_ZONE: zona node pool Anda.GPU_TYPE: jenis akselerator GPU:- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
AMOUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VMa4-highgpu-8gdana3-ultragpu-8g, jumlah GPU adalah8.DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Nilainya dapat berupa salah satu nilai berikut:default,latest, ataudisabled.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.NUM_NODES: jumlah node untuk node pool. Untuk flex-start, nilai ini harus ditetapkan ke0.RESERVATION_NAME: nama pemesanan Anda. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.BLOCK_NAME: nama blok tertentu dalam reservasi. Untuk mengetahui nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.
Flex-start
Untuk penyediaan mulai fleksibel, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \ --region COMPUTE_REGION --cluster CLUSTER_NAME \ --node-locations COMPUTE_ZONE \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=DRIVER_VERSION \ --machine-type MACHINE_TYPE \ --num-nodes=NUM_NODES \ --flex-start --num-nodes=0 --enable-autoscaling \ --total-max-nodes TOTAL_MAX_NODES \ --no-enable-autorepair --location-policy=ANY \ --reservation-affinity=none \ [--enable-queued-provisioning \] --additional-node-network network=${GVNIC_NETWORK_PREFIX}-net,subnetwork=${GVNIC_NETWORK_PREFIX}-sub \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-0 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-1 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-2 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-3 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-4 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-5 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-6 \ --additional-node-network network=${RDMA_NETWORK_PREFIX}-net,subnetwork=${RDMA_NETWORK_PREFIX}-sub-7Ganti kode berikut:
NODE_POOL_NAME: nama node pool.COMPUTE_REGION: region cluster baru Anda.CLUSTER_NAME: nama cluster baru.COMPUTE_ZONE: zona node pool Anda.GPU_TYPE: jenis akselerator GPU:- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
AMOUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VMa4-highgpu-8gdana3-ultragpu-8g, jumlah GPU adalah8.DRIVER_VERSION: versi driver NVIDIA yang akan diinstal. Nilainya dapat berupa salah satu nilai berikut:default,latest, ataudisabled.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.MACHINE_TYPE: jenis mesin Compute Engine untuk node. Misalnya, gunakana4-highgpu-8guntuk VM A4, dana3-ultragpu-8guntuk VM A3 Ultra.NUM_NODES: jumlah node untuk node pool. Untuk flex-start, nilai ini harus ditetapkan ke0.TOTAL_MAX_NODES: jumlah maksimum node yang akan diskalakan secara otomatis untuk seluruh node pool.
Jika Anda ingin menggunakan flex-start dengan penyediaan dalam antrean, sertakan flag
--enable-queued-provisioning.Untuk mengetahui informasi selengkapnya tentang penggunaan mulai fleksibel, lihat Menjalankan workload skala besar dengan mulai fleksibel dengan penyediaan dalam antrean.
Hubungkan ke cluster Anda, sehingga Anda dapat menjalankan perintah
kubectldi bagian berikutnya:gcloud container clusters get-credentials CLUSTER_NAME --location=COMPUTE_REGIONGanti kode berikut:
CLUSTER_NAME: nama cluster Anda.COMPUTE_REGION: nama region komputasi.
Untuk mengetahui informasi selengkapnya, lihat Menginstal kubectl dan mengonfigurasi akses cluster.
Membuat objek jaringan GKE
Jaringan VPC yang dibuat di bagian sebelumnya perlu dikonfigurasi melalui set parameter jaringan GKE. Secara khusus, NIC Titanium CPU kedua (gVNIC) harus dikonfigurasi dalam mode NetDevice dan masing-masing dari delapan NIC RDMA CX-7 harus dikonfigurasi dalam mode RDMA.
Perintah ini menggunakan nama berikut:
- VPC CPU Titanium NIC (gVNIC) diberi nama
${GVNIC_NETWORK_PREFIX}-netdengan subnet bernama${GVNIC_NETWORK_PREFIX}-sub - VPC NIC RDMA CX-7 diberi nama
${RDMA_NETWORK_PREFIX}-netdengan subnet bernama${RDMA_NETWORK_PREFIX}-sub-[0…7]
Buat objek jaringan GKE dengan menjalankan perintah berikut:
kubectl apply -f - <<EOF
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: gvnic-1
spec:
vpc: ${GVNIC_NETWORK_PREFIX}-net
vpcSubnet: ${GVNIC_NETWORK_PREFIX}-sub
deviceMode: NetDevice
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: gvnic-1
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: gvnic-1
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-0
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-0
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-0
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-0
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-1
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-1
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-1
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-1
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-2
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-2
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-2
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-2
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-3
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-3
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-3
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-3
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-4
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-4
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-4
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-4
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-5
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-5
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-5
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-5
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-6
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-6
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-6
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-6
---
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: rdma-7
spec:
vpc: ${RDMA_NETWORK_PREFIX}-net
vpcSubnet: ${RDMA_NETWORK_PREFIX}-sub-7
deviceMode: RDMA
---
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: rdma-7
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: rdma-7
EOF
Instal biner RDMA dan konfigurasi NCCL
Terapkan DaemonSet berikut untuk menginstal biner RDMA dan library NCCL di setiap node. Di setiap VM pokok, biner RDMA diinstal di direktori /home/kubernetes/bin/gib, dan library NCCL diinstal di direktori /home/kubernetes/bin/nvidia/lib64.
Autopilot
Untuk mode Autopilot GKE, jalankan perintah berikut:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/gpudirect-rdma/nccl-rdma-installer-autopilot.yaml
Standar
Untuk mode GKE Standard, jalankan perintah berikut:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/gpudirect-rdma/nccl-rdma-installer.yaml
Menjalankan pengujian NCCL
Untuk memvalidasi fungsi cluster yang disediakan, Anda dapat menjalankan pengujian NCCL. Untuk mengetahui petunjuknya, lihat Men-deploy dan menjalankan pengujian NCCL.
Mengonfigurasi manifes Pod untuk GPUDirect RDMA
Untuk menjalankan workload menggunakan GPUDirect RDMA, konfigurasi manifes Pod Anda dengan langkah-langkah berikut:
Tambahkan anotasi berikut ke metadata Pod.
Autopilot
Gunakan anotasi berikut untuk mode GKE Autopilot:
metadata: annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"gvnic-1"}, {"interfaceName":"eth2","network":"rdma-0"}, {"interfaceName":"eth3","network":"rdma-1"}, {"interfaceName":"eth4","network":"rdma-2"}, {"interfaceName":"eth5","network":"rdma-3"}, {"interfaceName":"eth6","network":"rdma-4"}, {"interfaceName":"eth7","network":"rdma-5"}, {"interfaceName":"eth8","network":"rdma-6"}, {"interfaceName":"eth9","network":"rdma-7"} ]Standar
Anotasi berikut untuk mode GKE Standard tidak menyertakan spesifikasi
gvnic-1, tetapi Anda dapat menambahkannya jika workload Anda memerlukannya.Gunakan anotasi berikut untuk mode GKE Standard:
metadata: annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth2","network":"rdma-0"}, {"interfaceName":"eth3","network":"rdma-1"}, {"interfaceName":"eth4","network":"rdma-2"}, {"interfaceName":"eth5","network":"rdma-3"}, {"interfaceName":"eth6","network":"rdma-4"}, {"interfaceName":"eth7","network":"rdma-5"}, {"interfaceName":"eth8","network":"rdma-6"}, {"interfaceName":"eth9","network":"rdma-7"} ]Tentukan jenis GPU yang dipilih dan reservasi tertentu menggunakan pemilih node:
spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific"Ganti kode berikut:
ACCELERATOR: akselerator yang Anda pesan dalam reservasi kapasitas Compute Engine. Anda harus menggunakan salah satu nilai berikut:nvidia-b200: NVIDIA B200 (180 GB) untuk VM A4nvidia-h200-141gb: NVIDIA H200 (141 GB) untuk VM A3 Ultra
RESERVATION_NAME: nama reservasi kapasitas Compute Engine.
Untuk menggunakan reservasi bersama, atau blok dan sub-blok reservasi tertentu, lihat bagian masing-masing di Menggunakan resource jalur zona yang dipesan.
Tambahkan volume berikut ke spesifikasi Pod:
spec: volumes: - name: library-dir-host hostPath: path: /home/kubernetes/bin/nvidia - name: gib hostPath: path: /home/kubernetes/bin/gibTambahkan pemasangan volume, variabel lingkungan, dan resource berikut ke container yang meminta GPU. Container workload Anda harus meminta kedelapan GPU:
Autopilot
Untuk mode GKE Autopilot, konfigurasi resource berikut:
containers: - name: my-container volumeMounts: - name: library-dir-host mountPath: /usr/local/nvidia readOnly: true - name: gib mountPath: /usr/local/gib readOnly: true env: - name: LD_LIBRARY_PATH value: /usr/local/nvidia/lib64 resources: limits: nvidia.com/gpu: 8Standar
Untuk mode GKE Standard, konfigurasi resource berikut:
containers: - name: my-container volumeMounts: - name: library-dir-host mountPath: /usr/local/nvidia - name: gib mountPath: /usr/local/gib env: - name: LD_LIBRARY_PATH value: /usr/local/nvidia/lib64 resources: limits: nvidia.com/gpu: 8Tetapkan semua variabel lingkungan yang diperlukan untuk mengonfigurasi NCCL menggunakan skrip shell berikut dari container workload:
source /usr/local/gib/scripts/set_nccl_env.sh
Tab berikut menyertakan contoh manifes Pod yang telah selesai.
Autopilot
Untuk mode Autopilot GKE, manifes Pod yang telah selesai akan terlihat serupa dengan berikut ini:
apiVersion: apps/v1
kind: Pod
metadata:
name: my-pod
labels:
k8s-app: my-pod
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"gvnic-1"},
{"interfaceName":"eth2","network":"rdma-0"},
{"interfaceName":"eth3","network":"rdma-1"},
{"interfaceName":"eth4","network":"rdma-2"},
{"interfaceName":"eth5","network":"rdma-3"},
{"interfaceName":"eth6","network":"rdma-4"},
{"interfaceName":"eth7","network":"rdma-5"},
{"interfaceName":"eth8","network":"rdma-6"},
{"interfaceName":"eth9","network":"rdma-7"}
]
spec:
...
volumes:
- name: library-dir-host
hostPath:
path: /home/kubernetes/bin/nvidia
- name: gib
hostPath:
path: /home/kubernetes/bin/gib
containers:
- name: my-container
volumeMounts:
- name: library-dir-host
mountPath: /usr/local/nvidia
readOnly: true
- name: gib
mountPath: /usr/local/gib
readOnly: true
env:
- name: LD_LIBRARY_PATH
value: /usr/local/nvidia/lib64
resources:
limits:
nvidia.com/gpu: 8
...
Standar
Untuk mode GKE Standard, manifes Pod yang telah selesai akan terlihat mirip dengan berikut ini:
apiVersion: apps/v1
kind: Pod
metadata:
name: my-pod
labels:
k8s-app: my-pod
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth2","network":"rdma-0"},
{"interfaceName":"eth3","network":"rdma-1"},
{"interfaceName":"eth4","network":"rdma-2"},
{"interfaceName":"eth5","network":"rdma-3"},
{"interfaceName":"eth6","network":"rdma-4"},
{"interfaceName":"eth7","network":"rdma-5"},
{"interfaceName":"eth8","network":"rdma-6"},
{"interfaceName":"eth9","network":"rdma-7"}
]
spec:
...
volumes:
- name: library-dir-host
hostPath:
path: /home/kubernetes/bin/nvidia
- name: gib
hostPath:
path: /home/kubernetes/bin/gib
containers:
- name: my-container
volumeMounts:
- name: library-dir-host
mountPath: /usr/local/nvidia
- name: gib
mountPath: /usr/local/gib
env:
- name: LD_LIBRARY_PATH
value: /usr/local/nvidia/lib64
resources:
limits:
nvidia.com/gpu: 8
...
Menguji performa jaringan untuk cluster yang menggunakan GPUDirect RDMA
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.
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang penjadwalan workload di cluster GKE menggunakan Topology Aware Scheduling (TAS) dan Kueue, lihat Menjadwalkan workload GKE dengan Topology Aware Scheduling.
- Untuk mengetahui informasi selengkapnya tentang 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 Mengoptimalkan jaringan cluster menggunakan NCCL/gIB.