View a markdown version of this page

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

AWS Trainium et AWS Inferentia sont des puces d'apprentissage automatique spécialement conçues par. AWS Amazon EKS prend en charge deux mécanismes de gestion des appareils Neuron dans les clusters EKS : le pilote Neuron DRA et le plug-in d'appareil Neuron Kubernetes.

Il est recommandé d'utiliser le pilote Neuron DRA pour les nouveaux déploiements sur des clusters EKS exécutant Kubernetes version 1.34 ou ultérieure avec des groupes de nœuds gérés par EKS ou des groupes de nœuds autogérés. Le pilote Neuron DRA fournit une allocation tenant compte de la topologie, une planification des sous-ensembles de périphériques connectés, une configuration logique NeuronCore (LNC) et une allocation UltraServer multi-nœuds sans nécessiter d'extensions de planificateur personnalisées.

Le pilote Neuron DRA n'est pas compatible avec le mode automatique Karpenter ou EKS. Utilisez le plug-in de l'appareil Neuron avec Karpenter et le mode automatique EKS. Le plug-in de périphérique Neuron reste également pris en charge pour les groupes de nœuds gérés par EKS et les nœuds autogérés.

Pilote Neuron DRA ou plug-in de périphérique Neuron

Fonctionnalité pilote Neuron DRA Plug-in pour appareil Neuron

Version minimale de Kubernetes

1,34

Toutes les versions de EKS-supported Kubernetes

Calcul EKS

Groupes de nœuds gérés, nœuds autogérés

Mode automatique EKS, Karpenter, groupes de nœuds gérés, nœuds autogérés

EKS-optimized Support de l'AMI

AL2023 (Neuron), Bottlerocket

AL2023 (Neuron), Bottlerocket

Publicité sur les appareils

Attributs riches via ResourceSlice des objets, notamment l'ID du périphérique, le type d'instance, la topologie, la version du pilote et la localité EFA

Nombre entier de ressources aws.amazon.com/neuron et ressources aws.amazon.com/neuroncore étendues

Sous-ensembles d'appareils connectés

Allouez des sous-ensembles de 1, 4, 8 ou 16 dispositifs Neuron connectés à l'aide de contraintes topologiques

Nécessite l'extension Neuron Scheduler pour l'allocation d'appareils contigus

Configuration du LNC

Per-workload NeuronCore Configuration logique (LNC=1 ou LNC=2) via des paramètres ResourceClaimTemplate

Nécessite une préconfiguration dans les modèles de lancement EC2

Attribute-based sélection

Filtrez les appareils par type d'instance, version de pilote et autres attributs à l'aide d'expressions CEL

Non pris en charge

Topology-aware Allocation EFA

DRA-native connaissance de la topologie

Prise en compte automatique de la topologie (AMI AL2023 uniquementEKS-optimized )

Installez le pilote Neuron DRA

Le pilote Neuron DRA présente les appareils Neuron sous la forme d'ResourceSliceobjets portant ce nom. DeviceClass neuron.aws.com Le pilote s'exécute en tant que DaemonSet et découvre automatiquement les périphériques Neuron et leurs attributs topologiques.

Des informations détaillées sur le pilote Neuron DRA sont disponibles dans la documentation Neuron DRA.

Conditions préalables

  • Un cluster Amazon EKS exécutant Kubernetes version 1.34 ou ultérieure avec des groupes de nœuds gérés par EKS ou des groupes de nœuds autogérés.

  • Nœuds dotés de AWS types d'instance Trainium ou Inferentia2.

  • 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

N'installez pas le pilote Neuron DRA sur les nœuds sur lesquels le plug-in du périphérique Neuron est en cours d'exécution. Les deux mécanismes ne peuvent pas coexister sur le même nœud. Consultez Kubernetes KEP-5004en amont pour les mises à jour.

  1. Installez le pilote Neuron DRA à l'aide de Helm.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --namespace neuron-dra-driver \ --create-namespace \ --set "devicePlugin.enabled=false" \ --set "npd.enabled=false" \ --set "draDriver.enabled=true"

    Le pilote est déployé DaemonSet en tant que dans l'espace de neuron-dra-driver noms par défaut avec le DeviceClassneuron.aws.com.

  2. Vérifiez que le pilote DRA DaemonSet est en cours d'exécution.

    kubectl get ds -n neuron-dra-driver neuron-dra-driver-kubelet-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-dra-driver-kubelet-plugin 1 1 1 1 1 <none> 60s
  3. Vérifiez que le DeviceClass a été créé.

    kubectl get deviceclass neuron.aws.com
    NAME AGE neuron.aws.com 60s
  4. Vérifiez que ResourceSlice les objets sont annoncés pour vos nœuds.

    kubectl get resourceslice

Consultez la documentation Neuron DRA pour plus d'informations sur les attributs ResourceSlice d'objet disponibles.

Demandez des appareils Neuron dans un Pod

Pour demander des appareils Neuron à l'aide du pilote DRA, créez-en un ResourceClaimTemplate qui y fait référence neuron.aws.com DeviceClass et le référencez dans les spécifications de votre Pod.

L'exemple suivant demande tous les appareils Neuron d'une trn2.48xlarge instance :

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All --- apiVersion: v1 kind: Pod metadata: name: neuron-workload spec: containers: - name: app ... resources: claims: - name: neurons resourceClaims: - name: neurons resourceClaimTemplateName: all-neurons

Allouer des sous-ensembles d'appareils connectés

Le pilote Neuron DRA peut allouer des sous-ensembles de périphériques Neuron connectés sans avoir besoin de l'extension Neuron Scheduler. Les tailles de sous-ensembles prises en charge sont 1, 4, 8 ou 16 appareils. Utilisez la matchAttribute contrainte avec un ID de groupe topologique pour vous assurer que les appareils sont connectés.

L'exemple suivant demande 4 appareils Neuron connectés :

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: 1x4-connected-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com allocationMode: ExactCount count: 4 selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" constraints: - requests: ["neurons"] matchAttribute: "resource.aws.com/devicegroup4_id"

Les matchAttribute valeurs prises en charge pour les sous-ensembles connectés sont resource.aws.com/devicegroup1_idresource.aws.com/devicegroup4_id,resource.aws.com/devicegroup8_id, etresource.aws.com/devicegroup16_id. Le numéro figurant dans le nom de devicegroup l'attribut correspond au nombre de dispositifs Neuron dans le groupe topologique connecté. Par exemple, resource.aws.com/devicegroup1_id identifie un seul appareil Neuron, resource.aws.com/devicegroup4_id identifie un groupe de 4 appareils connectés resource.aws.com/devicegroup8_id et resource.aws.com/devicegroup16_id identifie des groupes de 8 et 16 appareils connectés respectivement. Choisissez celui matchAttribute qui correspond à l'appareil count indiqué dans votre demande afin que les appareils alloués appartiennent au même groupe topologique connecté. Pour plus d'informations sur ces attributs, consultez la documentation du pilote Neuron DRA.

Configuration logique NeuronCores (LNC)

Le pilote Neuron DRA permet une NeuronCore configuration logique par charge de travail via ResourceClaimTemplate des paramètres. Il n'est donc plus nécessaire de préconfigurer LNC dans les modèles de lancement EC2.

L'exemple suivant demande tous les appareils Neuron dont le LNC est défini sur 1 :

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons-lnc-1 spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All config: - requests: ["neurons"] opaque: driver: neuron.aws.com parameters: apiVersion: neuron.aws.com/v1 kind: NeuronConfig logicalNeuronCore: 1

Allouez des appareils Neuron avec des interfaces EFA alignées

Consultez Topology-aware EFA et allocation GPU/Neuron d'appareils

Installez le plug-in pour appareil Neuron Kubernetes

Le plug-in pour appareils Neuron Kubernetes annonce les appareils Neuron au fur et à mesure des ressources étendues. aws.amazon.com/neuron NeuronCores aws.amazon.com/neuroncore Vous demandez des appareils Neuron dans les demandes de ressources et les limites des conteneurs.

Conditions préalables

  • Un cluster Amazon EKS.

  • Nœuds dotés de composants au niveau de l'hôte installés pour les instances AWS Trainium ou Inferentia AWS . Elles sont incluses si vous utilisez les AMI accélérées EKS AL2023 ou les AMI EKS Bottlerocket.

  • 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. Installez le plug-in de l'appareil Neuron Kubernetes à l'aide de Helm.

    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 DaemonSet est en cours d'exécution.

    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> 60s
  3. Vérifiez que vos nœuds disposent de dispositifs Neuron allouables.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"
    NAME NeuronDevice NeuronCore ip-192-168-47-173.us-west-2.compute.internal 1 2

Vérifiez les appareils Neuron à l'aide d'un module de test

Vous pouvez vérifier que les appareils Neuron sont accessibles en exécutant l'neuron-lsoutil dans un module de test.

  1. 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 requests: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule"
  2. Appliquez le manifeste.

    kubectl apply -f neuron-ls.yaml
  3. Une fois que le Pod a fini de fonctionner, consultez ses journaux.

    kubectl logs neuron-ls

    L'exemple qui suit illustre un résultat.

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

Lorsque vous utilisez le plug-in d'appareil Neuron, l'allocation d'appareils contigus sur des instances comportant plusieurs appareils Neuron (par exempletrn2.48xlarge) nécessite l'extension de planificateur Neuron Kubernetes. Le pilote Neuron DRA gère cela automatiquement par le biais de contraintes topologiques.

Pour plus d'informations sur l'utilisation des appareils Neuron avec Amazon EKS, consultez la documentation Neuron relative à l'exécution sur EKS.