Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kelola perangkat GPU NVIDIA di Amazon EKS
NVIDIA banyak GPUs digunakan untuk pelatihan pembelajaran mesin, inferensi, dan beban kerja komputasi kinerja tinggi. Amazon EKS mendukung dua mekanisme untuk mengelola perangkat GPU NVIDIA di kluster EKS Anda: driver NVIDIA DRA untuk GPUs dan plugin perangkat NVIDIA Kubernetes.
Disarankan untuk menggunakan driver NVIDIA DRA untuk penerapan baru pada cluster yang menjalankan Kubernetes versi 1.34 atau yang lebih baru. Driver NVIDIA DRA memungkinkan alokasi GPU yang fleksibel dan berbagi GPU antar kontainer. Plugin perangkat NVIDIA tetap didukung.
Driver NVIDIA DRA vs plugin perangkat NVIDIA
| Kemampuan | Pengemudi NVIDIA DRA | Plugin perangkat NVIDIA |
|---|---|---|
|
Versi Kubernetes minimum |
1,34 |
Semua versi Kubernetes yang didukung EKS |
|
Mode Otomatis Karpenter dan EKS |
Tidak didukung |
Didukung |
|
EKS-dioptimalkan AMIs |
AL2023 |
AL2023, Bottlerocket |
|
Iklan perangkat |
Atribut kaya melalui |
Jumlah bilangan bulat dari sumber daya yang |
|
Berbagi GPU |
Beberapa kontainer dalam Pod yang sama dapat berbagi GPU melalui referensi bersama |
Tidak didukung. Setiap GPU secara eksklusif dialokasikan ke satu kontainer. |
|
ComputeDomains |
Mengelola Multi-Node NVLink (MNNVL) melalui |
Tidak didukung |
|
Pilihan berbasis atribut |
Filter GPUs berdasarkan model, memori, atau atribut lainnya menggunakan ekspresi CEL |
Tidak didukung |
Instal driver NVIDIA DRA
Driver NVIDIA DRA untuk GPUs mengelola dua jenis sumber daya: GPUs dan ComputeDomains. Ini menjalankan dua plugin DRA kubelet: dan. gpu-kubelet-plugin compute-domain-kubelet-plugin Masing-masing dapat diaktifkan atau dinonaktifkan secara terpisah selama instalasi. Panduan ini berfokus pada alokasi GPU. Untuk menggunakan ComputeDomains, lihatGunakan P6e- dengan GB200 UltraServers Amazon EKS.
Menggunakan driver NVIDIA DRA dengan Bottlerocket saat ini tidak didukung.
Prasyarat
-
Cluster Amazon EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru.
-
Node dengan jenis instans GPU NVIDIA (seperti
PatauGinstance). -
Node dengan komponen tingkat host diinstal untuk NVIDIA. GPUs Saat menggunakan NVIDIA yang dioptimalkan EKS AL2023 atau Bottlerocket, driver NVIDIA tingkat host AMIs, driver mode pengguna CUDA, dan toolkit kontainer sudah diinstal sebelumnya.
-
Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Setup Helm untuk informasi selengkapnya.
-
kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.
Prosedur
penting
Saat menggunakan driver NVIDIA DRA untuk manajemen perangkat GPU, itu tidak dapat digunakan bersama plugin perangkat NVIDIA pada node yang sama. Lihat upstream Kubernetes KEP-5004 untuk pembaruan.
-
Tambahkan repositori bagan Helm driver NVIDIA DRA.
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia -
Perbarui repositori Helm lokal Anda.
helm repo update -
Dapatkan versi terbaru dari driver NVIDIA DRA.
helm search repo nvidia/nvidia-dra -
Instal driver NVIDIA DRA.
helm install nvidia-dra-driver-gpu nvidia/nvidia-dra-driver-gpu \ --create-namespace \ --namespace nvidia-dra-driver-gpu \ --set resources.computeDomains.enabled=false \ --set 'gpuResourcesEnabledOverride=true'Untuk opsi konfigurasi lanjutan, lihat bagan Helm driver NVIDIA DRA
. -
Verifikasi bahwa pod driver DRA sedang berjalan.
kubectl get pods -n nvidia-dra-driver-gpu -
Verifikasi bahwa
DeviceClassobjek telah dibuat.kubectl get deviceclassNAME AGE gpu.nvidia.com 60s -
Verifikasi bahwa
ResourceSliceobjek dipublikasikan untuk node GPU Anda.kubectl get resourceslice
Minta NVIDIA GPUs di Pod
Untuk meminta NVIDIA GPUs menggunakan driver DRA, buat referensi ResourceClaimTemplate yang mereferensikan gpu.nvidia.com DeviceClass dan mereferensikannya dalam spesifikasi Pod Anda.
Contoh berikut meminta satu GPU:
apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: single-gpu spec: spec: devices: requests: - name: gpu exactly: deviceClassName: gpu.nvidia.com count: 1 --- apiVersion: v1 kind: Pod metadata: name: gpu-workload spec: containers: - name: app ... resources: claims: - name: gpu resourceClaims: - name: gpu resourceClaimTemplateName: single-gpu tolerations: - key: "nvidia.com/gpu" operator: "Exists" effect: "NoSchedule"
Instal plugin perangkat NVIDIA Kubernetes
Plugin perangkat NVIDIA Kubernetes mengiklankan NVIDIA GPUs sebagai sumber daya yang diperluas. nvidia.com/gpu Anda meminta permintaan GPUs dan batasan sumber daya kontainer.
Prasyarat
-
Cluster Amazon EKS.
-
Node dengan tipe instans GPU NVIDIA menggunakan NVIDIA AMI yang dioptimalkan EKS AL2023 . Bottlerocket yang dioptimalkan EKS AMIs menyertakan plugin perangkat NVIDIA dan tidak diperlukan instalasi terpisah.
-
Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Setup Helm untuk informasi selengkapnya.
-
kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.
Prosedur
-
Tambahkan plugin perangkat NVIDIA Repositori bagan helm.
helm repo add nvdp https://nvidia.github.io/k8s-device-plugin -
Perbarui repositori Helm lokal Anda.
helm repo update -
Instal plugin perangkat NVIDIA Kubernetes.
helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --set gfd.enabled=truecatatan
Anda juga dapat menginstal dan mengelola plugin perangkat NVIDIA Kubernetes menggunakan Operator GPU NVIDIA
, yang mengotomatiskan pengelolaan semua komponen perangkat lunak NVIDIA yang diperlukan untuk penyediaan. GPUs -
Verifikasi plugin perangkat NVIDIA DaemonSet sedang berjalan.
kubectl get ds -n nvidia nvdp-nvidia-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE nvdp-nvidia-device-plugin 2 2 2 2 2 <none> 60s -
Verifikasi bahwa node Anda telah dialokasikan GPUs.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"Contoh output adalah sebagai berikut.
NAME GPU ip-192-168-11-225.us-west-2.compute.internal 1 ip-192-168-24-96.us-west-2.compute.internal 1
Minta NVIDIA GPUs di Pod
Untuk meminta NVIDIA GPUs menggunakan plugin perangkat, tentukan nvidia.com/gpu sumber daya dalam batas sumber daya kontainer Anda.
apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: restartPolicy: OnFailure containers: - name: gpu-demo image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal command: ["/bin/sh", "-c"] args: ["nvidia-smi && tail -f /dev/null"] resources: limits: nvidia.com/gpu: 1 tolerations: - key: "nvidia.com/gpu" operator: "Equal" value: "true" effect: "NoSchedule"
Untuk menjalankan pengujian ini, terapkan manifes dan lihat log:
kubectl apply -f nvidia-smi.yaml kubectl logs nvidia-smi
Contoh output adalah sebagai berikut.
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI XXX.XXX.XX Driver Version: XXX.XXX.XX CUDA Version: XX.X | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA L4 On | 00000000:31:00.0 Off | 0 | | N/A 27C P8 11W / 72W | 0MiB / 23034MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+