

 **Unterstützung für die Verbesserung dieser Seite beitragen** 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link **Diese Seite bearbeiten auf**, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# NVIDIA-GPU-Geräte auf Amazon EKS verwalten
<a name="device-management-nvidia"></a>

NVIDIA-GPUs werden häufig für maschinelles Lernen, Inferenz und Hochleistungsrechner-Workloads verwendet. Amazon EKS unterstützt zwei Mechanismen für die Verwaltung von NVIDIA-GPU-Geräten in Ihren EKS-Clustern: den *NVIDIA DRA-Treiber für GPUs* und das *NVIDIA Kubernetes-Geräte-Plugin*.

Es wird empfohlen, den NVIDIA DRA-Treiber für neue Bereitstellungen auf Clustern zu verwenden, auf denen Kubernetes Version 1.34 oder höher mit von EKS verwalteten Knotengruppen oder selbstverwalteten Knotengruppen ausgeführt wird. Der NVIDIA DRA-Treiber ermöglicht eine flexible GPU-Zuweisung und GPU-Sharing zwischen Containern.

Der NVIDIA DRA-Treiber wird im automatischen Modus von Karpenter oder EKS nicht unterstützt. Verwenden Sie das [NVIDIA-Geräte-Plugin](#nvidia-device-plugin) mit Karpenter und EKS Auto Mode. Das NVIDIA-Geräte-Plugin wird auch weiterhin für von EKS verwaltete Knotengruppen und selbstverwaltete Knoten unterstützt.

## NVIDIA-DRA-Treiber im Vergleich zum NVIDIA-Geräte-Plugin
<a name="_nvidia_dra_driver_vs_nvidia_device_plugin"></a>


| Funktion | NVIDIA DRA-Treiber | NVIDIA-Geräte-Plugin | 
| --- | --- | --- | 
| Mindestversion von Kubernetes | 1.34 | Alle EKS-supported Kubernetes-Versionen | 
| EKS Compute | Verwaltete Knotengruppen, selbstverwaltete Knoten | EKS Auto Mode, Karpenter, verwaltete Knotengruppen, selbstverwaltete Knoten | 
| EKS-optimized AMIs | AL2023 (NVIDIA) | AL2023 (NVIDIA), Bottlerocket | 
| Werbung für Geräte | Umfangreiche Attribute mithilfe von `ResourceSlice` Objekten wie GPU-Modell, Speicher, Treiberversion und Topologie | Ganzzahlzahl `nvidia.com/gpu` erweiterter Ressourcen | 
| GPU-Freigabe | Mehrere Container im selben Pod können sich über gemeinsame `ResourceClaim` Referenzen eine GPU teilen | Nicht unterstützt Jede GPU ist ausschließlich einem Container zugewiesen. | 
| ComputeDomains | Verwaltet Multi-Node NVLink (MNNVL) mithilfe von `ComputeDomain` Ressourcen für die sichere GPU-Kommunikation mit mehreren Knoten | Nicht unterstützt | 
| Attribute-based Auswahl | Filtern Sie GPUs mithilfe von CEL-Ausdrücken nach Modell, Speicher oder anderen Attributen | Nicht unterstützt | 
| Topology-aware EFA-Zuteilung | DRA-native Kenntnis der Topologie | Automatische Topologieerkennung (nur EKS-optimized AL2023-AMIs) | 

## Installieren Sie den NVIDIA DRA-Treiber
<a name="nvidia-dra-driver"></a>

Der NVIDIA DRA-Treiber für GPUs verwaltet zwei Arten von Ressourcen: GPUs und. ComputeDomains Es werden zwei DRA-Kubelet-Plugins ausgeführt: und. `gpu-kubelet-plugin` `compute-domain-kubelet-plugin` Jedes kann während der Installation separat aktiviert oder deaktiviert werden. Dieses Handbuch konzentriert sich auf die GPU-Zuweisung. Informationen zur Verwendung ComputeDomains finden Sie unter[P6e-GB200 UltraServers Mit Amazon EKS verwenden](ml-eks-nvidia-ultraserver.md).

### Voraussetzungen
<a name="_prerequisites"></a>
+ Ein Amazon EKS-Cluster, auf dem Kubernetes Version 1.34 oder höher mit von EKS verwalteten Knotengruppen oder selbstverwalteten Knotengruppen ausgeführt wird.
+ Knoten mit NVIDIA-GPU-Instanztypen (wie `P` OR-Instances). `G`
+ Knoten mit installierten Komponenten auf Host-Ebene für NVIDIA-GPUs. Bei Verwendung der NVIDIA-AMIs EKS-optimized AL2023 oder Bottlerocket sind der NVIDIA-Treiber auf Host-Ebene, der CUDA-Benutzermodus-Treiber und das Container-Toolkit vorinstalliert.
+ Weitere Informationen finden Sie in den [Anweisungen zur Einrichtung von Helm](helm.md).
+  `kubectl`konfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter. [Installieren oder Aktualisieren von `kubectl`](install-kubectl.md#kubectl-install-update)

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

**Wichtig**  
Wenn Sie den NVIDIA DRA-Treiber für die GPU-Geräteverwaltung verwenden, kann er nicht zusammen mit dem NVIDIA-Geräte-Plug-In auf demselben Knoten bereitgestellt werden. Updates finden Sie unter Upstream-Kubernetes [KEP-5004](https://github.com/kubernetes/enhancements/issues/5004).

**Wichtig**  
Die Verwendung des NVIDIA DRA-Treibers mit Bottlerocket wird derzeit nicht unterstützt.

1. Fügen Sie das Helm-Chart-Repository für den NVIDIA-DRA-Treiber hinzu.

   ```
   helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
   ```

1. Aktualisieren Sie Ihr lokales Helm-Repository.

   ```
   helm repo update
   ```

1. Holen Sie sich die neueste Version des NVIDIA DRA-Treibers.

   ```
   helm search repo nvidia/nvidia-dra
   ```

1. Installieren Sie den NVIDIA DRA-Treiber.

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

   Erweiterte Konfigurationsoptionen finden Sie in der [Helmtabelle für den NVIDIA DRA-Treiber](https://github.com/kubernetes-sigs/nvidia-dra-driver-gpu/blob/main/deployments/helm/nvidia-dra-driver-gpu/values.yaml).

1. Stellen Sie sicher, dass die DRA-Treiber-Pods ausgeführt werden.

   ```
   kubectl get pods -n nvidia-dra-driver-gpu
   ```

1. Stellen Sie sicher, dass die `DeviceClass` Objekte erstellt wurden.

   ```
   kubectl get deviceclass
   ```

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

1. Stellen Sie sicher, dass `ResourceSlice` Objekte für Ihre GPU-Knoten veröffentlicht wurden.

   ```
   kubectl get resourceslice
   ```

   Um NVIDIA-GPUs mithilfe des DRA-Treibers anzufordern, erstellen Sie einen`ResourceClaimTemplate`, der auf den verweist, `gpu.nvidia.com` `DeviceClass` und referenzieren Sie ihn in Ihrer Pod-Spezifikation. Im folgenden Beispiel wird eine einzelne GPU angefordert. Schritte [Topology-aware EFA und Gerätezuweisung GPU/Neuron](device-management-efa.md#efa-dra-topology-aware) zur Zuweisung von NVIDIA-GPUs mit topologieorientierten EFA-Schnittstellen finden Sie unter.

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

## Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin
<a name="nvidia-device-plugin"></a>

Das NVIDIA Kubernetes-Geräte-Plugin bewirbt NVIDIA-GPUs als erweiterte Ressourcen. `nvidia.com/gpu` Sie fordern GPUs in Container-Ressourcenanfragen und Grenzwerten an.

### Voraussetzungen
<a name="_prerequisites_2"></a>
+ Ein Amazon EKS-Cluster.
+ Knoten mit NVIDIA-GPU-Instanztypen, die das EKS-optimized AL2023 NVIDIA AMI verwenden. Die EKS-optimized Bottlerocket-AMIs enthalten das NVIDIA-Geräte-Plugin und es ist keine separate Installation erforderlich.
+ Weitere Informationen finden Sie in den [Anweisungen zur Einrichtung von Helm](helm.md).
+  `kubectl`konfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter[Installieren oder Aktualisieren von `kubectl`](install-kubectl.md#kubectl-install-update).

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

1. Fügen Sie das Helm-Chart-Repository für das NVIDIA-Geräte-Plugin hinzu.

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

1. Aktualisieren Sie Ihr lokales Helm-Repository.

   ```
   helm repo update
   ```

1. Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin.

   ```
   helm install nvdp nvdp/nvidia-device-plugin \
       --namespace nvidia \
       --create-namespace \
       --set gfd.enabled=true
   ```
**Deaktivieren Sie MOFED auf Knoten mit EFA-Geräten**  
Ab Version `k8s-device-plugin` 0.19.0 ist das Flag standardmäßig auf. `--mofed-enabled` `true` Dadurch hängt das NVIDIA-Geräte-Plugin alle `/dev/infiniband/uverbs*` Geräte in Containern ein, die GPUs () anfordern. `nvidia.com/gpu` Dies steht im Konflikt mit dem AWS EFA-Geräte-Plugin, das die Montage der `uverbs` Geräte verwaltet. Workloads, die weniger als alle EFA-Geräte auf einem Knoten anfordern, sind betroffen, da das NVIDIA-Geräte-Plug-In standardmäßig alle `uverbs` Geräte beansprucht.  
Wenn Ihre Knoten über EFA-Geräte verfügen, deaktivieren Sie MOFED explizit, wenn Sie das NVIDIA-Geräte-Plugin installieren:  

   ```
   helm upgrade --install nvdp nvdp/nvidia-device-plugin \
       --namespace nvidia \
       --create-namespace \
       --set gfd.enabled=true \
       --set mofedEnabled=false
   ```
Wenn Sie das NVIDIA-Geräte-Plugin über den [NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator) verwalten, deaktivieren Sie MOFED mithilfe des folgenden Felds: `devicePlugin.env`  

   ```
   helm upgrade --install gpu-operator nvidia/gpu-operator \
       --namespace gpu-operator \
       --set 'devicePlugin.env[0].name=MOFED_ENABLED' \
       --set 'devicePlugin.env[0].value=false'
   ```
Weitere Informationen finden Sie unter [NVIDIA k8s-device-plugin](https://github.com/NVIDIA/k8s-device-plugin/issues/1692) issue \#1692.
**Anmerkung**  
Sie können das NVIDIA Kubernetes-Geräte-Plugin auch mit dem NVIDIA [GPU Operator installieren und verwalten, der die Verwaltung aller NVIDIA-Softwarekomponenten](https://github.com/NVIDIA/gpu-operator) automatisiert, die für die Bereitstellung von GPUs benötigt werden.

1. Stellen Sie sicher, dass das NVIDIA-Geräte-Plugin ausgeführt wird. DaemonSet 

   ```
   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. Stellen Sie sicher, dass Ihre Knoten über zuweisbare GPUs verfügen.

   ```
   kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
   ```

   Eine Beispielausgabe sieht wie folgt aus.

   ```
   NAME                                           GPU
   ip-192-168-11-225.us-west-2.compute.internal   1
   ip-192-168-24-96.us-west-2.compute.internal    1
   ```

### Fordern Sie NVIDIA-GPUs in einem Pod an
<a name="_request_nvidia_gpus_in_a_pod"></a>

Um NVIDIA-GPUs mithilfe des Geräte-Plug-ins anzufordern, geben Sie die `nvidia.com/gpu` Ressource in Ihren Container-Ressourcenanfragen und -limits an.

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

Um diesen Test auszuführen, wenden Sie das Manifest an und sehen Sie sich die Protokolle an:

```
kubectl apply -f nvidia-smi.yaml
kubectl logs nvidia-smi
```

Eine Beispielausgabe sieht wie folgt aus.

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