Halaman ini membantu Anda memutuskan kapan harus menggunakan operator GPU NVIDIA dan menunjukkan cara mengaktifkan Operator GPU NVIDIA di GKE.
Ringkasan
Operator merupakan ekstensi software Kubernetes yang memungkinkan pengguna membuat resource yang mengelola aplikasi dan komponennya. Anda dapat menggunakan operator untuk mengotomatiskan tugas-tugas kompleks di luar fungsi yang disediakan Kubernetes, seperti men-deploy dan mengupgrade aplikasi.
Operator GPU NVIDIA adalah operator Kubernetes yang menyediakan dan API untuk men-deploy, mengonfigurasi, dan mengelola software komponen yang diperlukan untuk menyediakan GPU NVIDIA di cluster Kubernetes. NVIDIA Operator GPU memberikan pengalaman yang konsisten, menyederhanakan sumber daya GPU manajemen proyek, dan menyederhanakan integrasi beban kerja yang dipercepat oleh GPU ke dalam Kubernetes.
Mengapa menggunakan Operator GPU NVIDIA?
Sebaiknya gunakan pengelolaan GPU GKE untuk node GPU Anda, karena GKE mengelola sepenuhnya siklus proses node GPU. Untuk mulai menggunakan menggunakan GKE untuk mengelola node GPU Anda, pilih salah satu opsi berikut:
Atau, Operator GPU NVIDIA mungkin menjadi opsi yang cocok untuk Anda menginginkan pengalaman yang konsisten di beberapa layanan {i>cloud<i} penyedia lain, Anda sudah menggunakan Operator GPU NVIDIA, atau jika Anda menggunakan perangkat lunak yang tergantung pada operator GPU NVIDIA.
Untuk pertimbangan selengkapnya saat memutuskan di antara opsi tersebut, lihat Kelola stack GPU melalui GKE atau Operator GPU NVIDIA di GKE.
Batasan
Operator GPU NVIDIA didukung pada Container-Optimized OS (COS) dan image node Ubuntu dengan batasan berikut:
- Operator GPU NVIDIA didukung di GKE yang dimulai dengan Operator GPU versi 24.6.0 atau yang lebih baru.
- Operator GPU NVIDIA tidak didukung pada 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. Mengaktifkan 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 dalam Jalankan GPU di kumpulan node standar.
Pastikan Anda telah menginstal Helm di lingkungan pengembangan. Helm sudah terinstal di Cloud Shell.
Meskipun tidak ada persyaratan versi Helm khusus, Anda dapat menggunakan perintah berikut untuk memverifikasi bahwa Anda telah menginstal Helm.
helm version
Jika output mirip dengan
Command helm not found
, Anda dapat instal 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 kumpulan node GPU
Untuk membuat dan menyiapkan kumpulan node GPU, ikuti langkah-langkah berikut:
Buat kumpulan node GPU dengan mengikuti petunjuk cara Membuat kumpulan node GPU dengan modifikasi berikut:
- Setel
gpu-driver-version=disabled
untuk melewati driver GPU otomatis karena tidak didukung saat menggunakan operator GPU NVIDIA. - Setel
--node-labels="gke-no-default-nvidia-gpu-device-plugin=true"
hingga 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 kumpulan node.
- GPU_TYPE: jenis akselerator GPU yang
yang ingin Anda gunakan. Contohnya,
nvidia-h100-80gb
- AMOUNT: jumlah GPU yang akan dipasang ke node di kumpulan node.
Misalnya, perintah berikut akan membuat node pool GKE,
a3nodepool
, dengan GPU H100 di cluster zonaa3-cluster
. Di sini misalnya, Daemonset plugin perangkat GPU GKE dan penginstalan {i>driver<i} 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
- Setel
Dapatkan kredensial autentikasi untuk cluster dengan menjalankan perintah 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 kumpulan node Anda.
- COMPUTE_REGION atau COMPUTE_ZONE: menentukan region atau zona cluster berdasarkan apakah cluster Anda merupakan cluster regional atau zona, secara berurutan.
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 Anda yang berjalan di cluster ini.
Membuat namespace
gpu-operator
untuk Operator GPU NVIDIA dengan menjalankan perintah berikut: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 Container-Optimized OS atau Ubuntu. Untuk petunjuk terperinci, lihat Instal driver GPU NVIDIA secara manual.
Jika menggunakan COS, jalankan perintah berikut untuk men-deploy penginstalan DaemonSet, lalu instal 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 GPU jenis dan versi node GKE sebagaimana dijelaskan dalam Bagian petunjuk Ubuntu.
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, output-nya mirip dengan berikut ini:
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 selengkapnya, lihat dokumentasi NVIDIA tentang menginstal Operator GPU NVIDIA.
Tambahkan repositori NVIDIA Helm:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \ && helm repo update
Instal Operator GPU NVIDIA menggunakan Helm dengan kode berikut opsi konfigurasi:
- Pastikan versi Operator GPU adalah 24.6.0 atau yang lebih baru.
- Konfigurasikan jalur penginstalan driver di Operator GPU dengan
hostPaths.driverInstallDir=/home/kubernetes/bin/nvidia
. - Menetapkan jalur penginstalan toolkit
toolkit.installDir=/home/kubernetes/bin/nvidia
untuk COS dan Ubuntu. Dalam COS, direktori/home
dapat ditulis dan berfungsi sebagai stateful untuk menyimpan biner {i>runtime<i} NVIDIA. Untuk mempelajari lebih lanjut, lihat ke Ringkasan sistem file dan disk COS. - Aktifkan Container Device Interface (CDI) di Operator GPU dengan
cdi.enabled=true
dancdi.default=true
sebagai 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 metode 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 hitungan GPU dikonfigurasi dengan benar di antarmuka 'Dapat dialokasikan' , 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
Lalu, 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 workload inferensi LLM dengan GPU di GKE.
- Pelajari dokumentasi Operator GPU NVIDIA.