Installa il plug-in del dispositivo Kubernetes per GPUs - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Installa il plug-in del dispositivo Kubernetes per GPUs

I plugin per dispositivi Kubernetes sono stati il meccanismo principale per pubblicizzare infrastrutture specializzate come interfacce di rete e adattatori di rete come GPUs risorse consumabili per i carichi di lavoro Kubernetes. Sebbene la Dynamic Resource Allocation (DRA) sia considerata il futuro della gestione dei dispositivi in Kubernetes, la maggior parte dei fornitori di infrastrutture specializzati supporta i driver DRA nelle prime fasi. I plugin per dispositivi Kubernetes rimangono oggi un approccio ampiamente disponibile per l'utilizzo nei cluster Kubernetes. GPUs

Considerazioni

Installa il plug-in per dispositivi NVIDIA Kubernetes

La procedura seguente descrive come installare il plug-in per dispositivi NVIDIA Kubernetes ed eseguire un test di esempio sulle istanze GPU NVIDIA.

Prerequisiti

  • Cluster EKS creato

  • Nodi GPU NVIDIA in esecuzione nel cluster utilizzando AMI NVIDIA 023 ottimizzata per EKS AL2

  • Helm è installato nell’ambiente a riga di comando, consulta Setup Helm instructions.

Procedura

  1. Aggiungi l'archivio cartografico Helm. nvdp

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
  2. Aggiorna il repository locale per assicurarti di avere i grafici più recenti.

    helm repo update
  3. Scarica l'ultima versione del plug-in per dispositivi NVIDIA Kubernetes

    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. Installa il plug-in per dispositivi NVIDIA Kubernetes sul tuo cluster, sostituendolo 0.17.4 con la versione più recente del comando precedente.

    helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version 0.17.4 \ --set gfd.enabled=true
  5. Verifica che il plug-in del dispositivo NVIDIA Kubernetes sia in esecuzione nel cluster. L'output seguente mostra l'output con due nodi nel 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. Verifica che i tuoi nodi siano allocabili GPUs con il seguente comando.

    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. Crea un file denominato nvidia-smi.yaml con i seguenti contenuti. Questo manifesto avvia un'immagine contenitore AL2 023 minima che viene eseguita nvidia-smi su un nodo.

    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. Applicare il file manifesto con il comando seguente.

    kubectl apply -f nvidia-smi.yaml
  9. Quando il pod ha terminato l’esecuzione, visualizzane i registri tramite il comando seguente.

    kubectl logs nvidia-smi

    Di seguito viene riportato un output di esempio.

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

Installa il plug-in del dispositivo Neuron Kubernetes

La procedura seguente descrive come installare il plug-in del dispositivo Neuron Kubernetes ed eseguire un test di esempio su un'istanza Inferentia.

Prerequisiti

  • Cluster EKS creato

  • Nodi GPU Neuron in esecuzione nel cluster utilizzando l'AMI AL2 Neuron 023 o l'AMI Bottlerocket ottimizzati per EKS

  • Helm è installato nell’ambiente a riga di comando, consulta Setup Helm instructions.

Procedura

  1. Installa il plug-in del dispositivo Neuron Kubernetes sul tuo cluster.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. Verifica che il plug-in del dispositivo Neuron Kubernetes sia in esecuzione nel cluster. L'output seguente mostra l'output con un singolo nodo Neuron nel 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. Verifica che i tuoi nodi siano allocabili NueronCores con il seguente comando.

    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. Verifica che i tuoi nodi siano allocabili NueronDevices con il seguente comando.

    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. Crea un file denominato neuron-ls.yaml con i seguenti contenuti. Questo manifest avvia un contenitore Neuron Monitor su cui è installato lo strumento. 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. Applicare il file manifesto con il comando seguente.

    kubectl apply -f neuron-ls.yaml
  7. Quando il pod ha terminato l’esecuzione, visualizzane i registri tramite il comando seguente.

    kubectl logs neuron-ls

    Di seguito viene riportato un output di esempio.

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