

 **Bantu meningkatkan 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 GitHub ** tautan ** Edit halaman ini di 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.

# Gunakan driver NVIDIA DRA atau plugin perangkat di Amazon EKS
<a name="device-management-nvidia-dra-device-plugin"></a>

Amazon EKS mendukung dua mekanisme untuk mengelola perangkat GPU NVIDIA di cluster EKS Anda: driver * NVIDIA DRA untuk GPU * dan plugin perangkat * NVIDIA Kubernetes. *

Sebaiknya gunakan driver NVIDIA DRA untuk penerapan baru dengan Kubernetes versi 1.34 dan yang lebih baru saat menggunakan penyediaan kapasitas [ statis ](https://karpenter.sh/docs/concepts/nodepools/#static-nodepool) di Karpenter, grup node terkelola EKS, atau node yang dikelola sendiri. Driver NVIDIA DRA saat ini tidak didukung dengan Mode Otomatis EKS. Gunakan plugin perangkat [ NVIDIA ](#eks-nvidia-device-plugin) dengan Mode Otomatis EKS, atau dengan Karpenter saat Anda menggunakan penyediaan kapasitas dinamis. Plugin perangkat NVIDIA juga tetap didukung untuk grup node yang dikelola EKS dan node yang dikelola sendiri.

Jika Anda menggunakan fitur berbagi GPU seperti GPU multi-instance (MIG) atau pemotongan waktu, sebaiknya gunakan konfigurasi statis dengan driver DRA atau menggunakan plugin perangkat NVIDIA. MIG dinamis dan pemotongan waktu berada dalam keadaan alfa di driver NVIDIA DRA. Lihat rilis [ driver ](https://github.com/kubernetes-sigs/dra-driver-nvidia-gpu/releases) NVIDIA DRA GitHub untuk pembaruan terbaru.

## Driver NVIDIA DRA vs plugin perangkat NVIDIA
<a name="eks-nvidia-dra-vs-plugin"></a>


| Fitur | Driver NVIDIA DRA | Plugin perangkat NVIDIA | 
| --- | --- | --- | 
| Versi Kubernetes minimum | 1.34 | Semua versi EKS-supported Kubernetes | 
| Komputasi EKS | Karpenter (hanya kapasitas statis), grup node terkelola, node yang dikelola sendiri | Mode Otomatis EKS, Karpenter, grup simpul terkelola, node yang dikelola sendiri | 
| EKS-optimized AMI | AL2023 (NVIDIA), Bottlerocket | AL2023 (NVIDIA), Bottlerocket | 
| Iklan perangkat | Atribut kaya melalui `ResourceSlice` objek termasuk model GPU, memori, versi driver, dan topologi | Jumlah bilangan bulat dari sumber daya `nvidia.com/gpu` yang diperluas | 
| Berbagi GPU | (Alpha) MIG dinamis, MPS, pemotongan waktu | (GA) MIG statis, MPS, pemotongan waktu | 
| ComputeDomains | Mengel Multi-Node ola NVLink (MNNVL) melalui `ComputeDomain` sumber daya untuk komunikasi GPU multi-node yang aman | Tidak didukung | 
| Attribute-based seleksi | Filter GPU berdasarkan model, memori, atau atribut lainnya menggunakan ekspresi CEL | Tidak didukung | 
| Topology-aware Alokasi EFA | DRA-native kesadaran topologi | Kesadaran topologi otomatis (hanya AMI EKS-optimized AL2023) | 

## Instal driver NVIDIA DRA
<a name="eks-nvidia-dra-driver"></a>

Driver NVIDIA DRA untuk GPU mengelola dua jenis sumber daya: GPU dan. ComputeDomains Ini menjalankan dua plugin DRA kubelet: `gpu-kubelet-plugin` dan. `compute-domain-kubelet-plugin` Masing-masing dapat diaktifkan atau dinonaktifkan secara terpisah selama instalasi. Panduan ini berfokus pada alokasi GPU. Untuk menggunakan ComputeDomains, lihat[Gunakan P6e-GB200 UltraServers dengan Amazon EKS](ml-eks-nvidia-ultraserver.md).

### Prasyarat
<a name="_prerequisites"></a>
+ Cluster Amazon EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru dengan kapasitas statis yang disediakan oleh Karpenter, grup node yang dikelola EKS, atau grup node yang dikelola sendiri.
+ Node dengan tipe instans GPU NVIDIA (seperti `P` atau `G` instance).
+ Node dengan komponen tingkat host yang diinstal untuk GPU NVIDIA. Saat menggunakan AMI NVIDIA EKS-optimized AL2023 atau Bottlerocket, driver NVIDIA tingkat host, driver mode pengguna CUDA, dan toolkit wadah sudah diinstal sebelumnya.
+ Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Peng [ aturan Helm ](helm.md) untuk informasi selengkapnya.
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat [Instal atau perbarui `kubectl`](install-kubectl.md#kubectl-install-update) untuk informasi selengkapnya.

### Prosedur
<a name="_procedure"></a>

**penting**  
Saat menggunakan driver NVIDIA DRA untuk manajemen perangkat GPU, jangan menyebarkannya bersama plugin perangkat NVIDIA pada node yang sama. Melakukannya dapat menyebabkan kelebihan langganan senyap dari perangkat yang mendasarinya ke beberapa pod pada node yang sama.

**Nonaktifkan plugin perangkat NVIDIA bawaan di Bottlerocket**  
Var EKS-optimized ian Bottlerocket NVIDIA menyertakan plugin perangkat NVIDIA dan mengaktifkannya secara default. Driver DRA tidak dapat berjalan bersama plugin perangkat pada node yang sama. Sebelum Anda menggunakan driver DRA, nonaktifkan plugin perangkat bawaan pada node GPU Bottlerocket Anda. Setel `settings.kubelet-device-plugins.nvidia.enabled` ke `false` dalam data pengguna node Bottlerocket.  

```
[settings.kubelet-device-plugins.nvidia]
enabled = false
```
Peng `settings.kubelet-device-plugins.nvidia.enabled` aturan ini tersedia di Bottlerocket versi 1.63.0 dan yang lebih baru. Pada versi sebelumnya, plugin perangkat NVIDIA bawaan tidak dapat dinonaktifkan. Untuk informasi lebih lanjut, lihat [ bottlerocket- os/bottlerocket pull request \#4856 on. ](https://github.com/bottlerocket-os/bottlerocket/pull/4856) GitHub

1. Instal driver NVIDIA DRA langsung dari registri Kubernetes SIG OCI. Untuk menemukan versi yang tersedia, lihat rilis driver [ NVIDIA DRA ](https://github.com/kubernetes-sigs/dra-driver-nvidia-gpu/releases) pada GitHub.

   ```
   helm install dra-driver-nvidia-gpu \
       oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu \
       --version {{0.4.1}} \
       --create-namespace \
       --namespace nvidia \
       --set resources.computeDomains.enabled=false \
       --set gpuResourcesEnabledOverride=true
   ```

   Untuk opsi konfigurasi lanjutan, lihat nilai grafik Helm driver [ NVIDIA DRA ](https://dra-driver-nvidia-gpu.sigs.k8s.io/docs/reference/helm-values/) di situs web Kubernetes SIG. Untuk melihat nilai yang tersedia untuk versi bagan tertentu, jalankan`helm show values oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu --version 0.4.1`.

1. (Opsional) Untuk menggunakan pemotongan waktu melalui driver DRA, tambahkan gerbang `TimeSlicingSettings` fitur ke `helm install` perintah pada langkah sebelumnya. Ini adalah fitur alfa yang dinonaktifkan secara default. Untuk informasi selengkapnya, lihat [Gunakan pemotongan waktu GPU dengan driver NVIDIA DRA](device-management-nvidia-time-slicing.md#eks-time-slicing-dra).

   ```
   --set featureGates.TimeSlicingSettings=true
   ```

1. (Opsional) Untuk menggunakan MIG dinamis melalui driver DRA, tambahkan gerbang `DynamicMIG` fitur ke `helm install` perintah pada langkah sebelumnya. Ini adalah fitur alfa yang dinonaktifkan secara default. Anda tidak dapat menggabungkan gerbang `DynamicMIG` fitur dengan gerbang `PassthroughSupport``NVMLDeviceHealthCheck`,, atau `MPSSupport` fitur. Untuk informasi selengkapnya, lihat [Gunakan MIG dengan driver NVIDIA DRA](device-management-nvidia-mig.md#eks-mig-dra-driver).

   ```
   --set featureGates.DynamicMIG=true
   ```

1. Verifikasi bahwa pod driver DRA sedang berjalan.

   ```
   kubectl get pods -n nvidia
   ```

1. Verifikasi bahwa `DeviceClass` objek telah dibuat.

   ```
   kubectl get deviceclass
   ```

   ```
   NAME            AGE
   gpu.nvidia.com  60s
   ```

1. Verifikasi bahwa `ResourceSlice` objek dipublikasikan untuk node GPU Anda.

   ```
   kubectl get resourceslice
   ```

   Untuk meminta GPU NVIDIA menggunakan driver DRA, buat `ResourceClaimTemplate` yang mereferensikan `gpu.nvidia.com` `DeviceClass` dan mereferensikannya dalam spesifikasi Pod Anda. Contoh berikut meminta GPU tunggal. Lihat langkah-langkah [Topology-aware EFA dan alokasi GPU/Neuron perangkat](device-management-efa.md#efa-dra-topology-aware) untuk mengalokasikan GPU NVIDIA dengan antarmuka EFA yang selaras dengan topologi.

   ```
   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: gpu-demo
       image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
       command: ["/bin/sh", "-c"]
       args: ["nvidia-smi && tail -f /dev/null"]
       resources:
         claims:
         - name: gpu
     resourceClaims:
     - name: gpu
       resourceClaimTemplateName: single-gpu
     tolerations:
     - key: "nvidia.com/gpu"
       operator: "Exists"
       effect: "NoSchedule"
   ```

## Instal plugin perangkat NVIDIA Kubernetes
<a name="eks-nvidia-device-plugin"></a>

Plugin perangkat NVIDIA Kubernetes mengiklankan GPU NVIDIA sebagai sumber daya yang diperluas. `nvidia.com/gpu` Anda meminta GPU dalam permintaan dan batasan sumber daya kontainer.

### Prasyarat
<a name="_prerequisites_2"></a>
+ Cluster Amazon EKS.
+ Node dengan tipe instans GPU NVIDIA (seperti `P` atau `G` instance).
+ Node dengan tipe instans GPU NVIDIA menggunakan EKS-optimized AL2023 NVIDIA AMI. AMI EKS-optimized Bottlerocket menyertakan plugin perangkat NVIDIA. Anda tidak perlu menginstalnya secara terpisah.
+ Node dengan komponen tingkat host yang diinstal untuk GPU NVIDIA. Saat menggunakan AMI NVIDIA EKS-optimized AL2023 atau Bottlerocket, driver NVIDIA tingkat host, driver mode pengguna CUDA, dan toolkit wadah sudah diinstal sebelumnya.
+ Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Peng [ aturan Helm ](helm.md) untuk informasi selengkapnya.
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat [Instal atau perbarui `kubectl`](install-kubectl.md#kubectl-install-update) untuk informasi selengkapnya.

### Prosedur
<a name="_procedure_2"></a>

1. Tambahkan plugin perangkat NVIDIA repositori bagan Helm.

   ```
   helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
   ```

1. Perbarui repositori Helm lokal Anda.

   ```
   helm repo update
   ```

1. Instal plugin perangkat NVIDIA Kubernetes.

   ```
   helm install nvdp nvdp/nvidia-device-plugin \
       --create-namespace \
       --namespace nvidia
   ```
**Opsional: aktifkan GPU Feature Discovery (GFD)**  
Plugin perangkat mengiklankan sumber daya yang `nvidia.com/gpu` diperluas dan menjadwalkan Pod GPU sendiri. Pada EKS-optimized AL2023 NVIDIA AMI, label `nvidia.com/gpu.present=true` node sudah diterapkan saat boot by`nodeadm`, jadi GPU Feature Discovery (GFD) tidak diperlukan untuk penjadwalan GPU dasar.  
Aktifkan GFD dengan `--set gfd.enabled=true` jika Anda ingin node diberi label dengan atribut GPU terperinci — seperti`nvidia.com/gpu.product`,,`nvidia.com/gpu.memory`, label profil MIG`nvidia.com/gpu.count`, dan versi. driver/CUDA Dengan label ini, Anda dapat menargetkan jenis GPU tertentu dengan afinitas `nodeSelector` atau simpul (misalnya, menjadwalkan beban kerja hanya ke GPU A10G atau ke profil MIG tertentu). Konfigurasi berbagi GPU seperti time-slicing dan MIG juga menggunakan label ini. Jika Anda tidak memerlukan pemilihan node berbasis atribut atau berbagi GPU, Anda dapat menghilangkan bendera tersebut.  

   ```
   helm install nvdp nvdp/nvidia-device-plugin \
       --create-namespace \
       --namespace nvidia \
       --set gfd.enabled=true
   ```
**Aktifkan GDRCopy jika beban kerja Anda menggunakannya**  
 `k8s-device-plugin`v0.19.0 hingga v0.19.2 mengaktifkan fitur GDRCopy dan MOFED secara default. Pengaktifan default ini dikembalikan di v0.19.3. `k8s-device-plugin` Sebagai hasil dari pengembalian, gdrCopy (`gdrdrv`) tidak dapat lagi diaktifkan per wadah dengan variabel `NVIDIA_GDRCOPY=enabled` lingkungan dalam spesifikasi Pod, variabel itu sekarang diabaikan.  
Jika beban kerja Anda menggunakan GDRCopy (salinan RDMA GPUdirect), Anda harus mengaktifkannya pada plugin perangkat pada waktu penginstalan dengan menyetel: `gdrcopyEnabled=true`  

   ```
   helm upgrade --install nvdp nvdp/nvidia-device-plugin \
       --namespace nvidia \
       --create-namespace \
       --set gdrcopyEnabled=true
   ```
(Tambahkan `--set gfd.enabled=true` juga jika Anda juga ingin label Penemuan Fitur GPU, seperti yang dijelaskan sebelumnya.)  
Jika Anda mengelola plugin perangkat NVIDIA melalui Operator [ GPU ](https://github.com/NVIDIA/gpu-operator) NVIDIA aktif GitHub, operator secara dinamis `GDRCOPY_ENABLED=true` mengatur saat modul `gdrdrv` kernel dimuat pada node.  
Untuk informasi selengkapnya, lihat masalah [ NVIDIA k8s-device-plugin \#1692 on. ](https://github.com/NVIDIA/k8s-device-plugin/issues/1692) GitHub
**catatan**  
Anda juga dapat menginstal dan mengelola plugin perangkat NVIDIA Kubernetes menggunakan [ NVIDIA GPU Operator ](https://github.com/NVIDIA/gpu-operator) on GitHub, yang mengotomatiskan pengelolaan semua komponen perangkat lunak NVIDIA yang diperlukan untuk menyediakan GPU.

1. Verifikasi plugin perangkat NVIDIA DaemonSet sedang berjalan.

   ```
   kubectl get ds -n nvidia nvdp-nvidia-device-plugin
   ```

   ```
   NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   nvdp-nvidia-device-plugin   2         2         2       2            2           <none>          60s
   ```

1. Pastikan node Anda memiliki GPU yang dapat dialokasikan.

   ```
   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
   ```

### Meminta GPU NVIDIA di Pod
<a name="_request_nvidia_gpus_in_a_pod"></a>

Untuk meminta GPU NVIDIA menggunakan plugin perangkat, tentukan `nvidia.com/gpu` sumber daya dalam permintaan dan batasan 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
      requests:
        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                                                             |
+-----------------------------------------------------------------------------------------+
```