View a markdown version of this page

Verwenden Sie den NVIDIA DRA-Treiber oder das Geräte-Plugin auf Amazon EKS - Amazon EKS

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 unter, 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.

Verwenden Sie den NVIDIA DRA-Treiber oder das Geräte-Plugin auf Amazon EKS

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.

Wir empfehlen, den NVIDIA DRA-Treiber für neue Bereitstellungen mit Kubernetes-Versionen 1.34 und höher zu verwenden, wenn Sie die statische Kapazitätsbereitstellung in Karpenter, von EKS verwalteten Knotengruppen oder selbstverwalteten Knoten verwenden. Der NVIDIA DRA-Treiber wird derzeit nicht im EKS-Automatikmodus unterstützt. Verwenden Sie das NVIDIA-Geräte-Plug-In mit EKS Auto Mode oder mit Karpenter, wenn Sie dynamische Kapazitätsbereitstellung verwenden. Das NVIDIA-Geräte-Plugin wird auch weiterhin für EKS-verwaltete Knotengruppen und selbstverwaltete Knoten unterstützt.

Wenn Sie GPU-Sharing-Funktionen wie Mehrinstanz-GPUs (MIG) oder Time-Slicing verwenden, empfehlen wir, die statische Konfiguration mit dem DRA-Treiber oder das NVIDIA-Geräte-Plug-In zu verwenden. Dynamisches MIG und Time-Slicing befinden sich im NVIDIA DRA-Treiber im Alpha-Zustand. Die neuesten Updates finden Sie in den NVIDIA DRA-Treiberversionen am GitHub .

NVIDIA-DRA-Treiber im Vergleich zum NVIDIA-Geräte-Plug-In

Feature NVIDIA DRA-Treiber NVIDIA-Geräte-Plugin

Mindestversion von Kubernetes

1.34

Alle EKS-supported Kubernetes-Versionen

EKS Compute

Karpenter (nur statische Kapazität), verwaltete Knotengruppen, selbstverwaltete Knoten

EKS Auto Mode, Karpenter, verwaltete Knotengruppen, selbstverwaltete Knoten

EKS-optimized AMIs

AL 2023 (NVIDIA), Flaschenrakete

AL2023 (NVIDIA), Flaschenrakete

Werbung für Geräte

Umfangreiche Attribute anhand von ResourceSlice Objekten wie GPU-Modell, Speicher, Treiberversion und Topologie

Ganzzahlige Anzahl nvidia.com/gpu erweiterter Ressourcen

GPU-Freigabe

(Alpha) Dynamisches MIG, MPS, Time-Slicing

(GA) Statische MIG, MPS, Zeitaufteilung

ComputeDomains

Verwaltet Multi-Node NVLink (MNNVL) mithilfe von ComputeDomain Ressourcen für eine 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-Zuweisung

DRA-native Kenntnis der Topologie

Automatische Topologieerkennung (nur AL2023 AMIs) EKS-optimized

Installieren Sie den NVIDIA DRA-Treiber

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 unterP6e-GB200 UltraServers Mit Amazon EKS verwenden.

Voraussetzungen

  • Ein Amazon EKS-Cluster mit Kubernetes-Version 1.34 oder höher mit statischer Kapazität, die von Karpenter bereitgestellt wird, von EKS verwalteten Knotengruppen oder selbstverwalteten Knotengruppen.

  • Knoten mit NVIDIA-GPU-Instanztypen (z. B. OR-Instances). P G

  • Knoten mit Komponenten auf Host-Ebene, die für NVIDIA-GPUs installiert sind. Bei Verwendung der EKS-optimized AL2023- oder Bottlerocket NVIDIA-AMIs 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.

  • kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter. Installieren oder aktualisieren Sie kubectl

Verfahren

Wichtig

Wenn Sie den NVIDIA DRA-Treiber für die GPU-Geräteverwaltung verwenden, stellen Sie ihn nicht zusammen mit dem NVIDIA-Geräte-Plugin auf demselben Knoten bereit. Andernfalls kann es zu einer unbemerkten Überbelegung der zugrunde liegenden Geräte für mehrere Pods auf demselben Knoten kommen.

Deaktiviere das integrierte NVIDIA-Geräte-Plugin auf Bottlerocket

Die EKS-optimized Bottlerocket NVIDIA-Varianten enthalten das NVIDIA-Geräte-Plugin und aktivieren es standardmäßig. Der DRA-Treiber kann nicht zusammen mit dem Geräte-Plugin auf demselben Knoten ausgeführt werden. Bevor Sie den DRA-Treiber verwenden, deaktivieren Sie das integrierte Geräte-Plugin auf Ihren Bottlerocket-GPU-Knoten. falseIn den settings.kubelet-device-plugins.nvidia.enabled Benutzerdaten des Bottlerocket-Knotens auf festgelegt.

[settings.kubelet-device-plugins.nvidia] enabled = false

Die settings.kubelet-device-plugins.nvidia.enabled Einstellung ist in Bottlerocket Version 1.63.0 und höher verfügbar. In früheren Versionen kann das integrierte NVIDIA-Geräte-Plugin nicht deaktiviert werden. Weitere Informationen finden Sie unter os/bottlerocket Bottlerocket-Pull Request #4856 on. GitHub

  1. Installieren Sie den NVIDIA DRA-Treiber direkt aus der Kubernetes SIG OCI-Registrierung. Die verfügbaren Versionen finden Sie in den NVIDIA DRA-Treiberversionen am. 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

    Erweiterte Konfigurationsoptionen finden Sie im Helm-Diagramm für den NVIDIA DRA-Treiber auf der Kubernetes SIG-Website. Um die für eine bestimmte Diagrammversion verfügbaren Werte anzuzeigen, führen Sie den Befehl aus. helm show values oci://registry.k8s.io/dra-driver-nvidia/charts/dra-driver-nvidia-gpu --version 0.4.1

  2. (Optional) Um Time-Slicing über den DRA-Treiber zu verwenden, fügen Sie dem helm install Befehl im vorherigen Schritt das TimeSlicingSettings Feature-Gate hinzu. Dies ist eine Alpha-Funktion, die standardmäßig deaktiviert ist. Weitere Informationen finden Sie unter Verwenden Sie GPU-Timeslicing mit dem NVIDIA DRA-Treiber.

    --set featureGates.TimeSlicingSettings=true
  3. (Optional) Um dynamische MIG über den DRA-Treiber zu verwenden, fügen Sie dem helm install Befehl im vorherigen Schritt das DynamicMIG Feature-Gate hinzu. Dies ist eine Alpha-Funktion, die standardmäßig deaktiviert ist. Sie können das DynamicMIG Feature-Gate nicht mit denPassthroughSupport,NVMLDeviceHealthCheck, oder MPSSupport Feature-Gates kombinieren. Weitere Informationen finden Sie unter Verwenden Sie MIG mit dem NVIDIA DRA-Treiber.

    --set featureGates.DynamicMIG=true
  4. Stellen Sie sicher, dass die DRA-Treiber-Pods laufen.

    kubectl get pods -n nvidia
  5. Stellen Sie sicher, dass die DeviceClass Objekte erstellt wurden.

    kubectl get deviceclass
    NAME AGE gpu.nvidia.com 60s
  6. 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 einenResourceClaimTemplate, der auf den verweist, gpu.nvidia.com DeviceClass und verweisen Sie in Ihrer Pod-Spezifikation darauf. Das folgende Beispiel fordert eine einzelne GPU an. Schritte Topology-aware EFA und Gerätezuweisung GPU/Neuron 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: 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"

Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin

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

Voraussetzungen

  • Ein Amazon EKS-Cluster.

  • Knoten mit NVIDIA-GPU-Instance-Typen (z. B. P G OR-Instances).

  • Knoten mit NVIDIA-GPU-Instance-Typen, die das EKS-optimized AL2023 NVIDIA AMI verwenden. Die EKS-optimized Bottlerocket-AMIs enthalten das NVIDIA-Geräte-Plugin. Sie müssen sie nicht separat installieren.

  • Knoten mit installierten Komponenten auf Host-Ebene für NVIDIA-GPUs. Bei Verwendung der EKS-optimized AL2023- oder Bottlerocket NVIDIA-AMIs 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.

  • kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unter. Installieren oder aktualisieren Sie kubectl

Verfahren

  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
  2. Aktualisiere dein lokales Helm-Repository.

    helm repo update
  3. Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin.

    helm install nvdp nvdp/nvidia-device-plugin \ --create-namespace \ --namespace nvidia
    Optional: Aktivieren Sie GPU Feature Discovery (GFD)

    Das Geräte-Plugin kündigt nvidia.com/gpu erweiterte Ressourcen an und plant GPU-Pods eigenständig. Auf dem EKS-optimized AL2023 NVIDIA AMI wird das nvidia.com/gpu.present=true Node-Label bereits beim Booten von angewendetnodeadm, sodass GPU Feature Discovery (GFD) für die grundlegende GPU-Planung nicht erforderlich ist.

    Aktivieren Sie GFD mit, --set gfd.enabled=true wenn der Knoten mit detaillierten GPU-Attributen wienvidia.com/gpu.product,, nvidia.com/gpu.memory MIG-Profilbezeichnungen und Versionen beschriftet werden soll. nvidia.com/gpu.count driver/CUDA Mit diesen Labels können Sie bestimmte GPU-Typen mit nodeSelector oder Knotenaffinität als Ziel verwenden (z. B. indem Sie einen Workload nur für A10G-GPUs oder für ein bestimmtes MIG-Profil planen). GPU-Sharing-Konfigurationen wie Time-Slicing und MIG verwenden diese Labels ebenfalls. Wenn Sie keine attributbasierte Knotenauswahl oder GPU-Sharing benötigen, können Sie das Flag weglassen.

    helm install nvdp nvdp/nvidia-device-plugin \ --create-namespace \ --namespace nvidia \ --set gfd.enabled=true
    Aktivieren Sie GDRCopy, wenn Ihre Workloads es verwenden

    k8s-device-pluginv0.19.0 bis v0.19.2 aktivierten standardmäßig die GDRCopy- und MOFED-Funktionen. Diese Standardaktivierung wurde in v0.19.3 rückgängig gemacht. k8s-device-plugin Infolge der Wiederherstellung kann GdrCopy (gdrdrv) nicht mehr pro Container mit der NVIDIA_GDRCOPY=enabled Umgebungsvariablen in einer Pod-Spezifikation aktiviert werden. Diese Variable wird jetzt ignoriert.

    Wenn Ihre Workloads GDRCopy (GPUDirect RDMA Copy) verwenden, müssen Sie es bei der Installation im Geräte-Plug-In aktivieren, indem Sie Folgendes einstellen: gdrcopyEnabled=true

    helm upgrade --install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --set gdrcopyEnabled=true

    (Fügen Sie --set gfd.enabled=true auch hinzu, wenn Sie auch GPU Feature Discovery-Labels wünschen, wie zuvor beschrieben.)

    Wenn Sie das NVIDIA-Geräte-Plugin über den NVIDIA-GPU-Operator an verwalten GitHub, wird der Operator dynamisch festgelegt, GDRCOPY_ENABLED=true wenn das gdrdrv Kernelmodul auf den Knoten geladen wird.

    Weitere Informationen finden Sie in der NVIDIA k8s-device-plugin-Ausgabe #1692 unter. GitHub

    Anmerkung

    Sie können das NVIDIA Kubernetes-Geräte-Plugin auch mit dem NVIDIA GPU Operator on installieren und verwalten. Dieser automatisiert die Verwaltung aller GitHub NVIDIA-Softwarekomponenten, die für die Bereitstellung von GPUs erforderlich sind.

  4. 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
  5. 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

Um NVIDIA-GPUs mithilfe des Geräte-Plug-ins anzufordern, geben Sie die nvidia.com/gpu Ressource in Ihren Container-Ressourcenanforderungen und Grenzwerten 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 | +-----------------------------------------------------------------------------------------+