Installieren Sie das Kubernetes-Geräte-Plugin für GPUs - 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 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.

Installieren Sie das Kubernetes-Geräte-Plugin für GPUs

Kubernetes-Geräte-Plugins waren der wichtigste Mechanismus GPUs, um spezielle Infrastrukturen wie Netzwerkschnittstellen und Netzwerkadapter als nutzbare Ressourcen für Kubernetes-Workloads zu bewerben. Dynamic Resource Allocation (DRA) ist zwar die future für das Gerätemanagement in Kubernetes, aber die meisten spezialisierten Infrastrukturanbieter unterstützen DRA-Treiber noch früh. Kubernetes-Geräte-Plugins sind auch heute noch ein weit verbreiteter Ansatz für die Verwendung GPUs in Kubernetes-Clustern.

Überlegungen

Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin

Das folgende Verfahren beschreibt, wie Sie das NVIDIA Kubernetes-Geräte-Plug-In installieren und einen Beispieltest auf NVIDIA-GPU-Instanzen ausführen.

Voraussetzungen

  • Der EKS-Cluster wurde erstellt

  • NVIDIA-GPU-Knoten, die im Cluster mit EKS-optimiertem AL2 023 NVIDIA AMI ausgeführt werden

  • Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter Anweisungen zur Einrichtung von Helm.

Verfahren

  1. Fügen Sie das nvdp Helm-Chart-Repository hinzu.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
  2. Aktualisieren Sie Ihr lokales Helm-Repository, um sicherzustellen, dass Sie über die aktuellsten Diagramme verfügen.

    helm repo update
  3. Holen Sie sich die neueste Version des NVIDIA Kubernetes-Geräte-Plugins

    helm search repo nvdp --devel
    NAME CHART VERSION APP VERSION DESCRIPTION nvdp/gpu-feature-discovery 0.17.4 0.17.4 ... nvdp/nvidia-device-plugin 0.17.4 0.17.4 ...
  4. Installieren Sie das NVIDIA Kubernetes-Geräte-Plugin auf Ihrem Cluster und 0.17.4 ersetzen Sie es durch die neueste Version aus dem obigen Befehl.

    helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version 0.17.4 \ --set gfd.enabled=true
  5. Stellen Sie sicher, dass das NVIDIA Kubernetes-Geräte-Plugin in Ihrem Cluster ausgeführt wird. Die folgende Ausgabe zeigt die Ausgabe mit zwei Knoten im Cluster.

    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> 11m
  6. Stellen Sie mit dem folgenden Befehl sicher, dass Ihre Knoten über Allocatable GPUs verfügen.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
    NAME GPU ip-192-168-11-225.us-west-2.compute.internal 1 ip-192-168-24-96.us-west-2.compute.internal 1
  7. Erstellen Sie eine Datei mit dem Namen nvidia-smi.yaml und dem folgenden Inhalt. Dieses Manifest startet ein minimales AL2 023-Container-Image, das nvidia-smi auf einem Knoten ausgeführt wird.

    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'
  8. Wenden Sie das Manifest mit dem folgenden Befehl an.

    kubectl apply -f nvidia-smi.yaml
  9. Nachdem der Pod ausgeführt wurde, zeigen Sie mit dem folgenden Befehl seine Protokolle an.

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

Installieren Sie das Neuron Kubernetes-Geräte-Plugin

Das folgende Verfahren beschreibt, wie Sie das Neuron Kubernetes-Geräte-Plugin installieren und einen Beispieltest auf einer Inferentia-Instanz ausführen.

Voraussetzungen

  • Der EKS-Cluster wurde erstellt

  • Neuron-GPU-Knoten, die im Cluster mit EKS-optimiertem AL2 023 Neuron AMI oder Bottlerocket AMI ausgeführt werden

  • Helm ist in Ihrer Befehlszeilenumgebung installiert. Weitere Informationen finden Sie unter Anweisungen zur Einrichtung von Helm.

Verfahren

  1. Installieren Sie das Neuron Kubernetes-Geräte-Plugin auf Ihrem Cluster.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. Stellen Sie sicher, dass das Neuron Kubernetes-Geräte-Plugin in Ihrem Cluster ausgeführt wird. Die folgende Ausgabe zeigt die Ausgabe mit einem einzelnen Neuron-Knoten im Cluster.

    kubectl get ds -n kube-system neuron-device-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 72s
  3. Stellen Sie mit dem folgenden Befehl sicher, dass Ihre Knoten über Allocatable NueronCores verfügen.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"
    NAME NeuronCore ip-192-168-47-173.us-west-2.compute.internal 2
  4. Stellen Sie mit dem folgenden Befehl sicher, dass Ihre Knoten über Allocatable NueronDevices verfügen.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron"
    NAME NeuronDevice ip-192-168-47-173.us-west-2.compute.internal 1
  5. Erstellen Sie eine Datei mit dem Namen neuron-ls.yaml und dem folgenden Inhalt. Dieses Manifest startet einen Neuron Monitor-Container, in dem das Tool installiert ist. neuron-ls

    apiVersion: v1 kind: Pod metadata: name: neuron-ls spec: restartPolicy: Never containers: - name: neuron-container image: public.ecr.aws/g4h4h0b5/neuron-monitor:1.0.0 command: ["/bin/sh"] args: ["-c", "neuron-ls"] resources: limits: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule"
  6. Wenden Sie das Manifest mit dem folgenden Befehl an.

    kubectl apply -f neuron-ls.yaml
  7. Nachdem der Pod ausgeführt wurde, zeigen Sie mit dem folgenden Befehl seine Protokolle an.

    kubectl logs neuron-ls

    Unten sehen Sie eine Beispielausgabe.

    instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+