Installez le plugin d'appareil Kubernetes pour GPUs - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Installez le plugin d'appareil Kubernetes pour GPUs

Les plug-ins d'appareils Kubernetes ont été le principal mécanisme utilisé pour promouvoir des infrastructures spécialisées telles que les interfaces réseau et les adaptateurs réseau en tant que GPUs ressources consommables pour les charges de travail Kubernetes. Alors que l'allocation dynamique des ressources (DRA) est considérée comme le futur de la gestion des appareils dans Kubernetes, la plupart des fournisseurs d'infrastructures spécialisées prennent très tôt en charge les pilotes DRA. Les plug-ins pour appareils Kubernetes restent une approche largement disponible à utiliser GPUs dans les clusters Kubernetes aujourd'hui.

Considérations

Installer le plugin pour appareil NVIDIA Kubernetes

La procédure suivante décrit comment installer le plug-in pour appareil NVIDIA Kubernetes et exécuter un exemple de test sur des instances de GPU NVIDIA.

Conditions préalables

  • Cluster EKS créé

  • Nœuds GPU NVIDIA exécutés dans le cluster à l'aide de l'AMI NVIDIA AL2 023 optimisée pour EKS

  • Helm installé dans votre environnement de ligne de commande, consultez les Instructions de configuration de Helm.

Procédure

  1. Ajoutez le référentiel de nvdp diagrammes Helm.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
  2. Mettez à jour votre référentiel Helm local pour vous assurer que vous disposez des graphiques les plus récents.

    helm repo update
  3. Téléchargez la dernière version du plugin pour appareil 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. Installez le plug-in pour appareil NVIDIA Kubernetes sur votre cluster, en le 0.17.4 remplaçant par la dernière version de la commande ci-dessus.

    helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --version 0.17.4 \ --set gfd.enabled=true
  5. Vérifiez que le plug-in de l'appareil NVIDIA Kubernetes est en cours d'exécution dans votre cluster. La sortie ci-dessous montre la sortie avec deux nœuds dans le 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. Vérifiez que vos nœuds sont allouables à l' GPUs aide de la commande suivante.

    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. Créez un fichier nommé nvidia-smi.yaml avec les contenus suivants. Ce manifeste lance une image de conteneur AL2 023 minimale qui s'exécute nvidia-smi sur un nœud.

    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. Appliquez le manifeste ci-dessus avec la commande suivante.

    kubectl apply -f nvidia-smi.yaml
  9. Une fois que le pod n’est plus en cours d’exécution, affichez ses journaux à l’aide de la commande suivante.

    kubectl logs nvidia-smi

    L'exemple qui suit illustre un résultat.

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

Installer le plugin pour appareil Neuron Kubernetes

La procédure suivante décrit comment installer le plug-in de périphérique Neuron Kubernetes et exécuter un exemple de test sur une instance d'Inferentia.

Conditions préalables

  • Cluster EKS créé

  • Nœuds GPU Neuron exécutés dans le cluster à l'aide de l'AMI AL2 023 Neuron ou de l'AMI Bottlerocket optimisées pour EKS

  • Helm installé dans votre environnement de ligne de commande, consultez les Instructions de configuration de Helm.

Procédure

  1. Installez le plug-in pour appareil Neuron Kubernetes sur votre cluster.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. Vérifiez que le plug-in de l'appareil Neuron Kubernetes est en cours d'exécution dans votre cluster. La sortie ci-dessous montre la sortie avec un seul nœud neuronal dans le 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. Vérifiez que vos nœuds sont allouables à l' NueronCores aide de la commande suivante.

    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. Vérifiez que vos nœuds sont allouables à l' NueronDevices aide de la commande suivante.

    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. Créez un fichier nommé neuron-ls.yaml avec les contenus suivants. Ce manifeste lance un conteneur Neuron Monitor sur lequel l'neuron-lsoutil est installé.

    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. Appliquez le manifeste ci-dessus avec la commande suivante.

    kubectl apply -f neuron-ls.yaml
  7. Une fois que le pod n’est plus en cours d’exécution, affichez ses journaux à l’aide de la commande suivante.

    kubectl logs neuron-ls

    Un exemple de résultat est présenté ci-dessous.

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