Halaman ini membantu Anda memutuskan kapan harus menggunakan operator GPU NVIDIA dan menunjukkan cara mengaktifkan Operator GPU NVIDIA di GKE.
Ringkasan
Operator adalah ekstensi software Kubernetes yang memungkinkan pengguna membuat resource kustom yang mengelola aplikasi dan komponennya. Anda dapat menggunakan operator untuk mengotomatiskan tugas kompleks di luar yang disediakan Kubernetes itu sendiri, seperti men-deploy dan mengupgrade aplikasi.
Operator GPU NVIDIA adalah operator Kubernetes yang menyediakan infrastruktur dan API umum untuk men-deploy, mengonfigurasi, dan mengelola komponen software yang diperlukan untuk menyediakan GPU NVIDIA di cluster Kubernetes. Operator GPU NVIDIA memberi Anda pengalaman yang konsisten, menyederhanakan pengelolaan resource GPU, dan menyederhanakan integrasi beban kerja yang dipercepat GPU ke dalam Kubernetes.
Mengapa menggunakan Operator GPU NVIDIA?
Sebaiknya gunakan pengelolaan GPU GKE untuk node GPU Anda, karena GKE sepenuhnya mengelola siklus proses node GPU. Untuk mulai menggunakan GKE guna mengelola node GPU, pilih salah satu opsi berikut:
Atau, Operator GPU NVIDIA mungkin merupakan opsi yang sesuai untuk Anda jika Anda mencari pengalaman yang konsisten di beberapa penyedia layanan cloud, Anda sudah menggunakan Operator GPU NVIDIA, atau jika Anda menggunakan software yang bergantung pada operator GPU NVIDIA.
Untuk pertimbangan selengkapnya saat memutuskan antara opsi ini, lihat Mengelola stack GPU melalui GKE atau Operator GPU NVIDIA di GKE.
Batasan
Operator GPU NVIDIA didukung di image node Container-Optimized OS (COS) dan Ubuntu dengan batasan berikut:
- Operator GPU NVIDIA didukung di GKE mulai dari Operator GPU versi 24.6.0 atau yang lebih baru.
- Operator GPU NVIDIA tidak didukung di cluster Autopilot.
- Operator GPU NVIDIA tidak didukung pada image node Windows.
- Operator GPU NVIDIA tidak dikelola oleh GKE. Untuk mengupgrade Operator GPU NVIDIA, lihat dokumentasi NVIDIA.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan 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
gcloud components update
.
- Pastikan Anda memenuhi persyaratan di Menjalankan GPU di node pool Standard.
Pastikan Anda telah menginstal Helm di lingkungan pengembangan. Helm sudah diinstal sebelumnya di Cloud Shell.
Meskipun tidak ada persyaratan versi Helm tertentu, Anda dapat menggunakan perintah berikut untuk memverifikasi bahwa Anda telah menginstal Helm.
helm version
Jika output-nya mirip dengan
Command helm not found
, Anda dapat menginstal Helm CLI dengan menjalankan perintah ini:curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \ && chmod 700 get_helm.sh \ && ./get_helm.sh
Membuat dan menyiapkan node pool GPU
Untuk membuat dan menyiapkan node pool GPU, ikuti langkah-langkah berikut:
Buat node pool GPU dengan mengikuti petunjuk cara Membuat node pool GPU dengan modifikasi berikut:
- Tetapkan
gpu-driver-version=disabled
untuk melewati penginstalan driver GPU otomatis karena tidak didukung saat menggunakan operator GPU NVIDIA. - Tetapkan
--node-labels="gke-no-default-nvidia-gpu-device-plugin=true"
untuk menonaktifkan Daemonset plugin perangkat GPU yang dikelola GKE.
Jalankan perintah berikut dan tambahkan flag lain untuk pembuatan node pool GPU sesuai kebutuhan:
gcloud container node-pools create POOL_NAME \ --accelerator type=GPU_TYPE,count=AMOUNT,gpu-driver-version=disabled \ --node-labels="gke-no-default-nvidia-gpu-device-plugin=true"
Ganti kode berikut:
- POOL_NAME nama yang Anda pilih untuk node pool.
- GPU_TYPE: jenis akselerator GPU yang
ingin Anda gunakan. Contohnya,
nvidia-h100-80gb
- AMOUNT: jumlah GPU yang akan dipasang ke node di node pool.
Misalnya, perintah berikut membuat node pool GKE,
a3nodepool
, dengan GPU H100 di cluster zonaa3-cluster
. Dalam contoh ini, Daemonset plugin perangkat GPU GKE dan penginstalan driver otomatis dinonaktifkan.gcloud container node-pools create a3nodepool \ --region=us-central1 --cluster=a3-cluster \ --node-locations=us-central1-a \ --accelerator=type=nvidia-h100-80gb,count=8,gpu-driver-version=disabled \ --machine-type=a3-highgpu-8g \ --node-labels="gke-no-default-nvidia-gpu-device-plugin=true" \ --num-nodes=1
- Tetapkan
Dapatkan kredensial autentikasi untuk cluster dengan menjalankan perintah berikut:
USE_GKE_GCLOUD_AUTH_PLUGIN=True \ gcloud container clusters get-credentials CLUSTER_NAME [--zone COMPUTE_ZONE] [--region COMPUTE_REGION]
Ganti kode berikut:
- CLUSTER_NAME: nama cluster yang berisi node pool Anda.
- COMPUTE_REGION atau COMPUTE_ZONE: tentukan region atau zona cluster berdasarkan apakah cluster Anda merupakan cluster regional atau zona.
Outputnya mirip dengan hal berikut ini:
Fetching cluster endpoint and auth data. kubeconfig entry generated for CLUSTER_NAME.
(Opsional) Pastikan Anda dapat terhubung ke cluster.
kubectl get nodes -o wide
Anda akan melihat daftar semua node yang berjalan di cluster ini.
Buat namespace
gpu-operator
untuk Operator GPU NVIDIA dengan menjalankan perintah ini:kubectl create ns gpu-operator
Outputnya mirip dengan hal berikut ini:
namespace/gpu-operator created
Buat kuota resource di namespace
gpu-operator
dengan menjalankan perintah ini:kubectl apply -n gpu-operator -f - << EOF apiVersion: v1 kind: ResourceQuota metadata: name: gpu-operator-quota spec: hard: pods: 100 scopeSelector: matchExpressions: - operator: In scopeName: PriorityClass values: - system-node-critical - system-cluster-critical EOF
Outputnya mirip dengan hal berikut ini:
resourcequota/gpu-operator-quota created
Lihat kuota resource untuk namespace
gpu-operator
:kubectl get -n gpu-operator resourcequota gpu-operator-quota
Outputnya mirip dengan hal berikut ini:
NAME AGE REQUEST LIMIT gpu-operator-quota 2m27s pods: 0/100
Instal driver secara manual di node Container-Optimized OS atau Ubuntu. Untuk petunjuk mendetail, lihat Menginstal driver GPU NVIDIA secara manual.
Jika menggunakan COS, jalankan perintah berikut untuk men-deploy DaemonSet penginstalan dan menginstal versi driver GPU default:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
Jika menggunakan Ubuntu, DaemonSet penginstalan yang Anda deploy bergantung pada jenis GPU dan versi node GKE seperti yang dijelaskan dalam bagian Ubuntu dalam petunjuk.
Verifikasi versi driver GPU dengan menjalankan perintah ini:
kubectl logs -l k8s-app=nvidia-driver-installer \ -c "nvidia-driver-installer" --tail=-1 -n kube-system
Jika penginstalan driver GPU berhasil, outputnya akan mirip dengan berikut:
I0716 03:17:38.863927 6293 cache.go:66] DRIVER_VERSION=535.183.01 … I0716 03:17:38.863955 6293 installer.go:58] Verifying GPU driver installation I0716 03:17:41.534387 6293 install.go:543] Finished installing the drivers.
Menginstal Operator GPU NVIDIA
Bagian ini menunjukkan cara menginstal Operator GPU NVIDIA menggunakan Helm. Untuk mempelajari lebih lanjut, lihat dokumentasi NVIDIA tentang menginstal Operator GPU NVIDIA.
Tambahkan repositori Helm NVIDIA:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Instal Operator GPU NVIDIA menggunakan Helm dengan opsi konfigurasi berikut:
- Pastikan versi GPU Operator adalah 24.6.0 atau yang lebih baru.
- Konfigurasikan jalur penginstalan driver di Operator GPU dengan
hostPaths.driverInstallDir=/home/kubernetes/bin/nvidia
. - Tetapkan jalur penginstalan toolkit
toolkit.installDir=/home/kubernetes/bin/nvidia
untuk COS dan Ubuntu. Di COS, direktori/home
dapat ditulis dan berfungsi sebagai lokasi stateful untuk menyimpan biner runtime NVIDIA. Untuk mempelajari lebih lanjut, lihat Ringkasan disk dan sistem file COS. - Aktifkan Antarmuka Perangkat Penampung (CDI) di Operator GPU dengan
cdi.enabled=true
dancdi.default=true
karena mode lama tidak didukung. CDI diperlukan untuk COS dan Ubuntu di GKE.
helm install --wait --generate-name \ -n gpu-operator \ nvidia/gpu-operator \ --set hostPaths.driverInstallDir=/home/kubernetes/bin/nvidia \ --set toolkit.installDir=/home/kubernetes/bin/nvidia \ --set cdi.enabled=true \ --set cdi.default=true \ --set driver.enabled=false
Untuk mempelajari setelan ini lebih lanjut, lihat Opsi Penyesuaian Diagram Umum dan Skenario Deployment Umum dalam dokumentasi NVIDIA.
Pastikan operator GPU NVIDIA berhasil diinstal.
Untuk memeriksa apakah operand Operator GPU berjalan dengan benar, jalankan perintah berikut.
kubectl get pods -n gpu-operator
Outputnya terlihat mirip dengan yang berikut ini:
NAME READY STATUS RESTARTS AGE gpu-operator-5c7cf8b4f6-bx4rg 1/1 Running 0 11m gpu-operator-node-feature-discovery-gc-79d6d968bb-g7gv9 1/1 Running 0 11m gpu-operator-node-feature-discovery-master-6d9f8d497c-thhlz 1/1 Running 0 11m gpu-operator-node-feature-discovery-worker-wn79l 1/1 Running 0 11m gpu-feature-discovery-fs9gw 1/1 Running 0 8m14s gpu-operator-node-feature-discovery-worker-bdqnv 1/1 Running 0 9m5s nvidia-container-toolkit-daemonset-vr8fv 1/1 Running 0 8m15s nvidia-cuda-validator-4nljj 0/1 Completed 0 2m24s nvidia-dcgm-exporter-4mjvh 1/1 Running 0 8m15s nvidia-device-plugin-daemonset-jfbcj 1/1 Running 0 8m15s nvidia-mig-manager-kzncr 1/1 Running 0 2m5s nvidia-operator-validator-fcrr6 1/1 Running 0 8m15s
Untuk memeriksa apakah jumlah GPU dikonfigurasi dengan benar di kolom 'Allocatable' node, jalankan perintah berikut:
kubectl describe node GPU_NODE_NAME | grep Allocatable -A7
Ganti GPU_NODE_NAME dengan nama node yang memiliki GPU.
Outputnya mirip dengan hal berikut ini:
Allocatable: cpu: 11900m ephemeral-storage: 47060071478 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 80403000Ki nvidia.com/gpu: 1 # showing correct count of GPU associated with the nods pods: 110
Untuk memeriksa apakah beban kerja GPU berjalan dengan benar, Anda dapat menggunakan alat
cuda-vectoradd
:cat << EOF | kubectl create -f - apiVersion: v1 kind: Pod metadata: name: cuda-vectoradd spec: restartPolicy: OnFailure containers: - name: vectoradd image: nvidia/samples:vectoradd-cuda11.2.1 resources: limits: nvidia.com/gpu: 1 EOF
Kemudian, jalankan perintah berikut:
kubectl logs cuda-vectoradd
Outputnya mirip dengan hal berikut ini:
[Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED Done
Langkah selanjutnya
- Pelajari cara menjalankan GPU di node pool Standard.
- Pelajari strategi berbagi GPU untuk GKE.
- Pelajari praktik terbaik untuk menskalakan otomatis beban kerja inferensi LLM dengan GPU di GKE.
- Pelajari dokumentasi Operator GPU NVIDIA.