Gérez les appareils GPU NVIDIA sur Amazon EKS - 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.

Gérez les appareils GPU NVIDIA sur Amazon EKS

GPUs Les cartes NVIDIA sont largement utilisées pour la formation au machine learning, l'inférence et les charges de travail informatiques hautes performances. Amazon EKS prend en charge deux mécanismes pour gérer les périphériques GPU NVIDIA dans vos clusters EKS : le pilote NVIDIA DRA pour GPUs et le plug-in de périphérique NVIDIA Kubernetes.

Il est recommandé d'utiliser le pilote NVIDIA DRA pour les nouveaux déploiements sur des clusters exécutant Kubernetes version 1.34 ou ultérieure. Le pilote NVIDIA DRA permet une allocation et un partage de GPU flexibles entre les conteneurs. Le plug-in pour appareil NVIDIA reste compatible.

Pilote NVIDIA DRA et plug-in de périphérique NVIDIA

Capacité pilote NVIDIA DRA Plug-in pour appareil NVIDIA

Version minimale de Kubernetes

1,34

Toutes les versions de Kubernetes prises en charge par EKS

Mode automatique Karpenter et EKS

Non pris en charge

Pris en charge

Optimisé pour EKS AMIs

AL2023

AL2023, Flacon Rocket

Publicité sur les appareils

Des attributs riches via ResourceSlice des objets tels que le modèle de GPU, la mémoire, la version du pilote et la topologie

Nombre entier de ressources nvidia.com/gpu étendues

Partage GPU

Plusieurs conteneurs dans le même Pod peuvent partager un GPU via des ResourceClaim références partagées

Non pris en charge. Chaque GPU est exclusivement alloué à un conteneur.

ComputeDomains

Gère plusieurs nœuds NVLink (MNNVL) via des ComputeDomain ressources pour une communication GPU sécurisée entre plusieurs nœuds

Non pris en charge

Sélection basée sur les attributs

Filtrer GPUs par modèle, mémoire ou autres attributs à l'aide d'expressions CEL

Non pris en charge

Installez le pilote NVIDIA DRA

Le pilote NVIDIA DRA pour GPUs gérer deux types de ressources : GPUs et ComputeDomains. Il exécute deux plugins DRA kubelet : gpu-kubelet-plugin et. compute-domain-kubelet-plugin Chacune peut être activée ou désactivée séparément lors de l'installation. Ce guide se concentre sur l'allocation du GPU. Pour l'utilisation ComputeDomains, voirUtiliser P6e- GB200 UltraServers avec Amazon EKS.

L'utilisation du pilote NVIDIA DRA avec Bottlerocket n'est actuellement pas prise en charge.

Conditions préalables

  • Un cluster Amazon EKS exécutant Kubernetes version 1.34 ou ultérieure.

  • Nœuds dotés de types d'instances GPU NVIDIA (tels que G des instances P ou).

  • Nœuds dotés de composants au niveau de l'hôte installés pour NVIDIA. GPUs Lorsque vous utilisez le NVIDIA optimisé pour EKS AL2023 ou Bottlerocket, le pilote NVIDIA de niveau hôte AMIs, le pilote du mode utilisateur CUDA et le kit d'outils de conteneur sont préinstallés.

  • Helm installé dans votre environnement de ligne de commande, consultez les instructions de configuration de Helm pour plus d’informations.Déployez des applications avec Helm sur Amazon EKS

  • kubectlconfiguré pour communiquer avec votre cluster, voir Installer ou mettre à jour kubectl pour plus d'informations.

Procédure

Important

Lorsque vous utilisez le pilote NVIDIA DRA pour la gestion des périphériques GPU, il ne peut pas être déployé avec le plug-in de périphérique NVIDIA sur le même nœud. Consultez Kubernetes KEP-5004 en amont pour les mises à jour.

  1. Ajoutez le référentiel graphique Helm du pilote NVIDIA DRA.

    helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
  2. Mettez à jour votre dépôt Helm local.

    helm repo update
  3. Procurez-vous la dernière version du pilote NVIDIA DRA.

    helm search repo nvidia/nvidia-dra
  4. Installez le pilote NVIDIA DRA.

    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'

    Pour les options de configuration avancées, consultez le tableau Helm du pilote NVIDIA DRA.

  5. Vérifiez que les modules de pilotes DRA sont en cours d'exécution.

    kubectl get pods -n nvidia-dra-driver-gpu
  6. Vérifiez que les DeviceClass objets ont été créés.

    kubectl get deviceclass
    NAME AGE gpu.nvidia.com 60s
  7. Vérifiez que ResourceSlice les objets sont publiés pour vos nœuds GPU.

    kubectl get resourceslice

Demandez NVIDIA GPUs in a Pod

Pour demander à NVIDIA GPUs d'utiliser le pilote DRA, créez un pilote ResourceClaimTemplate qui le référence gpu.nvidia.com DeviceClass et le référencez dans les spécifications de votre Pod.

L'exemple suivant demande un seul GPU :

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"

Installez le plugin pour appareil NVIDIA Kubernetes

Le plugin pour appareil NVIDIA Kubernetes présente NVIDIA GPUs en tant que ressources étendues. nvidia.com/gpu Vous demandez GPUs dans le conteneur des demandes et des limites de ressources.

Conditions préalables

  • Un cluster Amazon EKS.

  • Nœuds dotés de types d'instances de GPU NVIDIA utilisant l' AL2023 AMI NVIDIA optimisée pour EKS. Le Bottlerocket optimisé pour EKS AMIs inclut le plug-in pour appareil NVIDIA et aucune installation séparée n'est requise.

  • Helm installé dans votre environnement de ligne de commande, consultez les instructions de configuration de Helm pour plus d’informations.Déployez des applications avec Helm sur Amazon EKS

  • kubectlconfiguré pour communiquer avec votre cluster, voir Installer ou mettre à jour kubectl pour plus d'informations.

Procédure

  1. Ajoutez le référentiel de diagrammes Helm du plugin pour appareils NVIDIA.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
  2. Mettez à jour votre dépôt Helm local.

    helm repo update
  3. Installez le plug-in pour appareil NVIDIA Kubernetes.

    helm install nvdp nvdp/nvidia-device-plugin \ --namespace nvidia \ --create-namespace \ --set gfd.enabled=true
    Note

    Vous pouvez également installer et gérer le plug-in pour appareil NVIDIA Kubernetes à l'aide de l'opérateur GPU NVIDIA, qui automatise la gestion de tous les composants logiciels NVIDIA nécessaires au provisionnement. GPUs

  4. Vérifiez que le plug-in de l'appareil NVIDIA DaemonSet est en cours d'exécution.

    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. Vérifiez que vos nœuds sont allouables GPUs.

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

    L'exemple qui suit illustre un résultat.

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

Demandez NVIDIA GPUs in a Pod

Pour demander à NVIDIA GPUs d'utiliser le plug-in de l'appareil, spécifiez la nvidia.com/gpu ressource dans les limites de ressources de votre conteneur.

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"

Pour exécuter ce test, appliquez le manifeste et consultez les journaux :

kubectl apply -f nvidia-smi.yaml 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 | +-----------------------------------------------------------------------------------------+