Dokumen ini menunjukkan cara membuat cluster Google Kubernetes Engine (GKE) yang dioptimalkan untuk AI yang menggunakan instance A4X Max Compute Engine untuk mendukung workload AI dan ML Anda.
Seri A4X Max dan A4X memungkinkan Anda menjalankan cluster AI/ML skala besar dengan menggunakan sistem NVIDIA Multi-Node NVLink (MNNVL), solusi skala rak yang memungkinkan daya dan performa GPU yang lebih tinggi. Mesin ini menawarkan fitur seperti penempatan workload yang ditargetkan, penjadwalan yang sesuai topologi, dan kontrol pemeliharaan cluster tingkat lanjut. Untuk mengetahui informasi selengkapnya, lihat Kemampuan pengelolaan cluster. Dengan A4X Max, GKE juga menyediakan penyiapan jaringan otomatis yang menyederhanakan konfigurasi cluster.
Workload AI dan ML, seperti pelatihan terdistribusi, memerlukan akselerasi yang canggih untuk mengoptimalkan performa dengan mengurangi waktu penyelesaian tugas. GKE menyediakan satu platform untuk menjalankan beragam workload bagi organisasi Anda, sehingga mengurangi beban operasional dalam mengelola beberapa platform. Anda dapat menjalankan workload seperti pra-pelatihan terdistribusi berperforma tinggi, fine-tuning model, inferensi model, penayangan aplikasi, dan layanan pendukung. Untuk workload yang memerlukan performa tinggi, throughput tinggi, dan latensi rendah, GPUDirect RDMA mengurangi hop jaringan yang diperlukan untuk mentransfer payload ke dan dari GPU. Pendekatan ini menggunakan bandwidth jaringan yang tersedia secara lebih efisien. Untuk mengetahui informasi selengkapnya, lihat Stack jaringan GPU.
Dalam dokumen ini, Anda akan mempelajari cara membuat cluster GKE dengan Google Cloud CLI untuk mendapatkan fleksibilitas maksimum dalam mengonfigurasi cluster berdasarkan kebutuhan workload Anda. Untuk menggunakan gcloud CLI guna membuat cluster dengan jenis mesin lain, lihat artikel berikut:
- A4X: Buat cluster GKE yang dioptimalkan untuk AI kustom yang menggunakan A4X.
- A4 atau A3 Ultra: Untuk membuat cluster yang menggunakan A4 atau A3 Ultra, lihat Membuat cluster GKE yang dioptimalkan untuk AI kustom yang menggunakan A4 atau A3 Ultra. Anda dapat menggunakan rangkaian mesin ini untuk menjalankan workload dengan atau tanpa GPUDirect RDMA.
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 informasi selengkapnya, lihat Membuat cluster GKE yang dioptimalkan untuk AI dengan konfigurasi default.
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. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Mendapatkan kapasitas
Anda dapat memperoleh kapasitas untuk instance komputasi A4X Max dengan membuat pemesanan untuk masa mendatang. Untuk mengetahui informasi selengkapnya tentang pemesanan untuk masa mendatang, lihat kolom Pemesanan untuk masa mendatang di AI Hypercomputer dalam tabel untuk Pilih opsi penggunaan.
Untuk mendapatkan kapasitas dengan pemesanan untuk masa mendatang, lihat baris Pemesanan untuk masa mendatang di AI Hypercomputer dalam tabel untuk Cara mendapatkan kapasitas.
Persyaratan
Persyaratan berikut berlaku untuk cluster GKE yang dioptimalkan untuk AI dengan instance komputasi A4X Max:
Untuk A4X Max, Anda harus menggunakan salah satu versi berikut:
- Untuk 1.35 atau yang lebih baru, gunakan GKE versi 1.35.0-gke.2745000 atau yang lebih baru.
- Untuk 1.34, gunakan GKE versi 1.34.3-gke.1318000 atau yang lebih baru.
Versi ini membantu memastikan bahwa A4X Max menggunakan hal berikut:
- R580.95.05, versi driver GPU minimum untuk A4X Max, yang diaktifkan secara default.
- Pengelolaan Memori Berbasis Driver yang Koheren (CDMM), yang diaktifkan secara default. NVIDIA merekomendasikan agar cluster Kubernetes mengaktifkan mode ini untuk menyelesaikan 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 dan MNNVL, yang direkomendasikan untuk mengaktifkan node pool A4X Max agar dapat menggunakan kemampuan jaringan A4X Max.
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 NIC sekunder yang tersedia pada satu node GKE. Beberapa Pod tidak dapat berbagi RDMA pada satu node GKE.
Anda harus menggunakan model penyediaan terikat reservasi untuk membuat cluster dengan A4X Max. Model penyediaan lainnya tidak didukung.
Petunjuk ini menggunakan DRANET untuk mengonfigurasi cluster GKE yang dioptimalkan untuk AI dengan A4X Max. Multi-networking tidak didukung untuk jenis mesin
a4x-maxgpu-4g-metal.
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 Ketersediaan akselerator.
- Saat membuat node pool di cluster regional—yang direkomendasikan untuk workload produksi—Anda dapat menggunakan flag
--node-locationsuntuk menentukan zona bagi node GKE Anda.
- 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 tabel di bagian 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 nilai berikut:
PROJECT_ID: Google Cloud project ID Anda.RESERVATION_NAME: nama pemesanan Anda.BLOCK_NAME: nama blok tertentu dalam reservasi.
Sebaiknya Anda juga menggunakan reservasi yang ditargetkan sub-blok agar instance komputasi ditempatkan pada satu sub-blok dalam
BLOCK_NAME. Tambahkan kode berikut ke bagian akhir jalur:/reservationSubBlocks/SUB_BLOCK_NAMEGanti
SUB_BLOCK_NAMEdengan nama sub-blok.
Membuat cluster GKE yang dioptimalkan untuk AI yang menggunakan A4X Max dan GPUDirect RDMA
Untuk beban kerja AI terdistribusi, beberapa node GPU sering kali ditautkan bersama untuk bekerja sebagai satu komputer. A4X Max adalah platform exascale yang didasarkan pada arsitektur skala rak NVL72 NVIDIA GB300. Instance komputasi A4X Max menggunakan arsitektur jaringan hierarkis multi-layer dengan desain yang selaras dengan rel untuk mengoptimalkan performa berbagai jenis komunikasi. Jenis mesin ini memungkinkan penskalaan dan kolaborasi di beberapa GPU dengan memberikan pengalaman cloud berperforma tinggi untuk workload AI. Untuk mengetahui informasi selengkapnya tentang arsitektur jaringan untuk A4X Max, termasuk bandwidth jaringan dan pengaturan NIC, lihat Jenis mesin A4X Max (bare metal).
Untuk membuat cluster Standard GKE dengan A4X Max yang menggunakan GPUDirect RDMA dan MNNVL, selesaikan langkah-langkah yang dijelaskan di bagian berikut:
- Buat cluster GKE
- Membuat kebijakan beban kerja
- Membuat node pool dengan A4X Max
- Mengonfigurasi NIC MRDMA dengan
asapd-lite - Instal driver DRA dan CRD NVIDIA Compute Domain
- Mengonfigurasi manifes workload untuk domain RDMA dan IMEX
Petunjuk ini menggunakan profil jaringan akselerator untuk mengonfigurasi jaringan dan subnet VPC secara otomatis untuk node A4X Max Anda. Atau, Anda dapat menentukan jaringan dan subnet VPC secara eksplisit.
Membuat cluster GKE
Buat cluster GKE Standar:
gcloud container clusters create CLUSTER_NAME \ --enable-dataplane-v2 \ --enable-ip-alias \ --location=COMPUTE_REGION \ --cluster-version=CLUSTER_VERSION \ --no-enable-shielded-nodes [\ --services-ipv4-cidr=SERVICE_CIDR \ --cluster-ipv4-cidr=POD_CIDR \ --addons=GcpFilestoreCsiDriver=ENABLED]Ganti kode berikut:
CLUSTER_NAME: nama cluster Anda.CLUSTER_VERSION: versi cluster baru Anda. Untuk mengetahui informasi selengkapnya tentang versi GKE yang mendukung konfigurasi Anda, lihat Persyaratan dalam dokumen ini.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, pertimbangkan
SERVICE_CIDR=10.65.0.0/19danPOD_CIDR=10.64.0.0/19. Untuk mengetahui informasi selengkapnya, lihat Menambahkan rentang alamat IPv4 Pod.
Untuk menjalankan perintah
kubectldi bagian berikutnya, hubungkan ke cluster Anda: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 kebijakan beban kerja
Kebijakan workload diperlukan untuk membuat partisi. Untuk mengetahui informasi selengkapnya, lihat Kebijakan workload untuk MIG.
Buat kebijakan workload HIGH_THROUGHPUT dengan kolom accelerator_topology
ditetapkan ke 1x72.
gcloud beta compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
--type HIGH_THROUGHPUT \
--accelerator-topology 1x72 \
--project PROJECT \
--region COMPUTE_REGION
Ganti kode berikut:
WORKLOAD_POLICY_NAME: nama kebijakan workload Anda.PROJECT: nama project Anda.COMPUTE_REGION: nama region komputasi.
Membuat node pool dengan A4X Max
Buat file konfigurasi berikut untuk mengalokasikan terlebih dahulu hugepage dengan node pool:
cat > node_custom.yaml <<EOF linuxConfig: hugepageConfig: hugepage_size2m: 4096 EOF export NODE_CUSTOM=node_custom.yamlBuat node pool A4X Max:
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --location=COMPUTE_REGION \ --node-locations=COMPUTE_ZONE \ --num-nodes=NODE_COUNT \ --placement-policy=WORKLOAD_POLICY_NAME \ --machine-type=a4x-maxgpu-4g-metal \ --accelerator=type=nvidia-gb300,count=4,gpu-driver-version=latest \ --system-config-from-file=${NODE_CUSTOM} \ --accelerator-network-profile=auto \ --node-labels=cloud.google.com/gke-networking-dra-driver=true,cloud.google.com/gke-dpv2-unified-cni=cni-migration \ --reservation-affinity=specific \ --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAMEGanti kode berikut:
NODE_POOL_NAME: nama node pool.CLUSTER_NAME: nama cluster Anda.COMPUTE_REGION: region komputasi cluster.COMPUTE_ZONE: zona node pool Anda.NODE_COUNT: jumlah node untuk node pool, yang harus 18 node atau kurang. Sebaiknya gunakan 18 node untuk mendapatkan topologi GPU1x72dalam satu sub-blok menggunakan domain NVLink.WORKLOAD_POLICY_NAME: nama kebijakan beban kerja yang Anda buat sebelumnya.RESERVATION_NAME: nama pemesanan Anda. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.BLOCK_NAME: nama blok tertentu dalam reservasi. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.
Perintah ini secara otomatis membuat jaringan yang menghubungkan semua node A4X Max dalam satu zona menggunakan profil jaringan akselerator
auto. Saat Anda membuat node pool dengan tanda--accelerator-network-profile=auto, GKE secara otomatis menambahkan labelgke.networks.io/accelerator-network-profile: autoke node. Untuk menjadwalkan workload di node ini, Anda harus menyertakan label ini di kolomnodeSelectorworkload.
Mengonfigurasi NIC MRDMA dengan asapd-lite
DaemonSet asapd-lite mengonfigurasi NIC MRDMA. asapd-liteDaemonSet yang tidak berfungsi dengan baik
dapat menunjukkan tidak adanya konektivitas RDMA.
Instal DaemonSet:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/refs/heads/master/asapd-lite-installer/asapd-lite-installer-a4x-max-bm-cos.yamlValidasi replika di DaemonSet
asapd-lite:kubectl get daemonset -n kube-system asapd-liteOutputnya mirip dengan hal berikut ini:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE asapd-lite 18 18 18 18 18 <none> 5mJumlah replika
READYharus cocok dengan jumlah node yang dibuat dan responsif di node pool.
Menginstal driver DRA dan CRD Compute Domain NVIDIA
Langkah-langkah berikut menginstal driver DRA dan CRD Domain Komputasi NVIDIA untuk memungkinkan penggunaan MNNVL. Untuk mengetahui informasi selengkapnya, lihat Driver DRA NVIDIA untuk GPU.
Pastikan Anda telah menginstal Helm di lingkungan pengembangan. Helm sudah terinstal di Cloud Shell.
Meskipun tidak ada persyaratan versi Helm tertentu, Anda dapat menggunakan perintah berikut untuk memverifikasi bahwa Anda telah menginstal Helm.
helm versionJika outputnya mirip dengan
Command helm not found, Anda dapat menginstal Helm CLI:curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ && chmod 700 get_helm.sh \ && ./get_helm.shTambahkan repositori Helm NVIDIA:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo updateBuat objek
ResourceQuotauntuk Driver DRA:export POD_QUOTA=POD_QUOTA kubectl create ns nvidia-dra-driver-gpu kubectl apply -n nvidia-dra-driver-gpu -f - << EOF apiVersion: v1 kind: ResourceQuota metadata: name: nvidia-dra-driver-gpu-quota spec: hard: pods: ${POD_QUOTA} scopeSelector: matchExpressions: - operator: In scopeName: PriorityClass values: - system-node-critical - system-cluster-critical EOFGanti
POD_QUOTAdengan angka yang setidaknya 2 kali jumlah node A4X Max dalam cluster ditambah 1. Misalnya, Anda harus menyetel variabel ke minimal 37 jika memiliki 18 node A4X Max di cluster.Instal driver DRA dan CRD ComputeDomain:
helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu \ --set controller.args.v=4 --set kubeletPlugin.args.v=4 \ --version="25.8.0" \ --create-namespace \ --namespace nvidia-dra-driver-gpu \ -f <(cat <<EOF nvidiaDriverRoot: /home/kubernetes/bin/nvidia resources: gpus: enabled: false controller: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: "nvidia.com/gpu" operator: "DoesNotExist" kubeletPlugin: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: cloud.google.com/gke-accelerator operator: In values: - nvidia-gb300 - key: kubernetes.io/arch operator: In values: - arm64 tolerations: - key: nvidia.com/gpu operator: Equal value: present effect: NoSchedule - key: kubernetes.io/arch operator: Equal value: arm64 effect: NoSchedule EOF )
Mengonfigurasi manifes workload untuk domain RDMA dan IMEX
Tambahkan aturan afinitas node untuk menjadwalkan workload di node Arm:
spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/arch operator: In values: - arm64Tambahkan volume berikut ke spesifikasi Pod:
spec: volumes: - name: library-dir-host hostPath: path: /home/kubernetes/bin/nvidiaTambahkan pemasangan volume, variabel lingkungan, dan resource berikut ke container yang meminta GPU. Container workload Anda harus meminta keempat GPU:
containers: - name: my-container volumeMounts: - name: library-dir-host mountPath: /usr/local/nvidia env: - name: LD_LIBRARY_PATH value: /usr/local/nvidia/lib64 resources: limits: nvidia.com/gpu: 4Buat resource
ComputeDomainuntuk workload:apiVersion: resource.nvidia.com/v1beta1 kind: ComputeDomain metadata: name: a4x-max-compute-domain spec: numNodes: NUM_NODES channel: resourceClaimTemplate: name: a4x-max-compute-domain-channelGanti
NUM_NODESdengan jumlah node yang diperlukan workload.Buat ResourceClaimTemplate untuk mengalokasikan resource jaringan menggunakan DRANET dan meminta perangkat RDMA untuk Pod Anda:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-mrdma spec: spec: devices: requests: - name: req-mrdma exactly: deviceClassName: mrdma.google.com allocationMode: ExactCount count: 8Tentukan ResourceClaimTemplate yang digunakan Pod:
spec: ... volumes: ... containers: - name: my-container ... resources: limits: nvidia.com/gpu: 4 claims: - name: compute-domain-channel - name: rdma ... resourceClaims: - name: compute-domain-channel resourceClaimTemplateName: a4x-max-compute-domain-channel - name: rdma resourceClaimTemplateName: all-mrdmaPastikan library userspace dan paket libnccl diinstal di image container pengguna:
apt update -y apt install -y curl export DOCA_URL="https://linux.mellanox.com/public/repo/doca/3.1.0/ubuntu22.04/arm64-sbsa/" BASE_URL=$([ "${DOCA_PREPUBLISH:-false}" = "true" ] && echo https://doca-repo-prod.nvidia.com/public/repo/doca || echo https://linux.mellanox.com/public/repo/doca) DOCA_SUFFIX=${DOCA_URL#*public/repo/doca/}; DOCA_URL="$BASE_URL/$DOCA_SUFFIX" curl $BASE_URL/GPG-KEY-Mellanox.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/GPG-KEY-Mellanox.pub echo "deb [signed-by=/etc/apt/trusted.gpg.d/GPG-KEY-Mellanox.pub] $DOCA_URL ./" > /etc/apt/sources.list.d/doca.list apt update apt -y install doca-ofed-userspace # The installed libnccl2 is 2.27.7, to upgrade to 2.28.9 as we recommend apt install --only-upgrade --allow-change-held-packages -y libnccl2 libnccl-dev
Spesifikasi Pod yang sudah selesai akan terlihat seperti berikut:
apiVersion: resource.nvidia.com/v1beta1
kind: ComputeDomain
metadata:
name: a4x-max-compute-domain
spec:
numNodes: NUM_NODES
channel:
resourceClaimTemplate:
name: a4x-max-compute-domain-channel
---
apiVersion: apps/v1
kind: Pod
metadata:
name: my-pod
labels:
k8s-app: my-pod
spec:
...
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
volumes:
- name: library-dir-host
hostPath:
path: /home/kubernetes/bin/nvidia
hostNetwork: true
containers:
- name: my-container
volumeMounts:
- name: library-dir-host
mountPath: /usr/local/nvidia
env:
- name: LD_LIBRARY_PATH
value: /usr/local/nvidia/lib64
resources:
limits:
nvidia.com/gpu: 4
claims:
- name: compute-domain-channel
- name: rdma
...
resourceClaims:
- name: compute-domain-channel
resourceClaimTemplateName: a4x-max-compute-domain-channel
- name: rdma
resourceClaimTemplateName: all-mrdma
Menguji performa jaringan
Sebaiknya Anda memvalidasi fungsi cluster yang disediakan. Untuk melakukannya, gunakan pengujian NCCL/gIB, yaitu pengujian NVIDIA Collective Communications Library (NCCL) yang dioptimalkan untuk lingkungan Google.
Untuk mengetahui informasi selengkapnya, lihat Menjalankan NCCL di cluster GKE kustom yang menggunakan A4X Max.
Langkah berikutnya
- Untuk mempelajari cara menjadwalkan workload di cluster GKE dengan 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.