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 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érer 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 pour gérer les appareils Neuron dans les clusters EKS : le pilote Neuron DRA et le plug-in de périphérique Neuron Kubernetes.
Nous vous recommandons d'utiliser des pilotes DRA pour les nouveaux déploiements avec les versions 1.34 et ultérieures de Kubernetes lorsque vous utilisez le provisionnement de capacité statique
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 |
Karpenter (capacité statique uniquement), 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 Assistance AMI |
AL2023 (Neuron), Bottlerocket |
AL2023 (Neuron), Bottlerocket |
|
Publicité de l'appareil |
Attributs riches via |
Nombre entier de ressources |
|
Sous-ensembles d'appareils connectés |
Allouez des sous-ensembles de 1, 4, 8 ou 16 appareils Neuron connectés en utilisant des contraintes de topologie |
Nécessite l'extension Neuron Scheduler |
|
Configuration LNC |
Per-workload NeuronCore Configuration logique (LNC=1 ou LNC=2) via des paramètres |
Nécessite une préconfiguration dans les modèles de lancement EC2 |
|
Attribute-based sélection |
Filtrez les périphériques par type d'instance, version du pilote et autres attributs à l'aide d'expressions CEL |
Non pris en charge |
|
Topology-aware Allocation EFA |
DRA-native prise en compte de la topologie |
Prise en compte automatique de la topologie (AMI EKS-optimized AL2023 uniquement) |
Installez le pilote Neuron DRA
Le pilote Neuron DRA annonce les périphériques Neuron en tant qu'ResourceSliceobjets portant un 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 de topologie.
Des informations détaillées sur le pilote Neuron DRA sont disponibles dans la documentation Neuron DRA.
Conditions préalables
-
Cluster Amazon EKS exécutant Kubernetes version 1.34 ou ultérieure avec une capacité statique provisionnée par Karpenter, des groupes de nœuds gérés par EKS ou des groupes de nœuds autogérés.
-
Nœuds avec des AWS instances de type 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, consultez 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. Cela peut entraîner un surabonnement silencieux des appareils sous-jacents à plusieurs pods sur le même nœud.
-
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'
neuron-dra-driverespace de noms par défaut avec leDeviceClassneuron.aws.com. -
Vérifiez que le pilote DRA DaemonSet est en cours d'exécution.
kubectl get ds -n neuron-dra-driver neuron-dra-driver-kubelet-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-dra-driver-kubelet-plugin 1 1 1 1 1 <none> 60s -
Vérifiez que le
DeviceClassa été créé.kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
Vérifiez que
ResourceSliceles objets sont annoncés pour vos nœuds.kubectl get resourceslice
Consultez la documentation Neuron DRA ResourceSlice d'objet disponibles.
Demandez des appareils Neuron dans un Pod
Pour demander des périphériques Neuron à l'aide du pilote DRA, créez un ResourceClaimTemplate qui fait référence au neuron.aws.com DeviceClass et référencez-le dans la spécification 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. matchAttribute contrainte avec un ID de groupe de topologie 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 indiqué dans le nom de devicegroup l'attribut correspond au nombre de périphériques Neuron dans le groupe de topologie 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 count à l'appareil de votre demande afin que les appareils alloués appartiennent au même groupe de topologie connecté. Pour plus d'informations sur ces attributs, consultez la documentation du pilote
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 pas 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 réglé 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
Attribuez des appareils Neuron avec des interfaces EFA alignées
Consultez Topology-aware EFA et attribution des GPU/Neuron appareils
Installez le plug-in de périphérique Neuron Kubernetes
Le plug-in Neuron Kubernetes présente les appareils Neuron en tant que ressources étendues. aws.amazon.com/neuron NeuronCores aws.amazon.com/neuroncore Vous demandez des appareils Neuron dans des requêtes et des limites de ressources de conteneur.
Conditions préalables
-
Un cluster Amazon EKS.
-
Nœuds avec des 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, consultez Installer ou mettre à jour kubectl pour plus d'informations.
Procédure
-
Installez le plug-in de périphérique Neuron Kubernetes à l'aide de Helm.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
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-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 60s -
Vérifiez que vos nœuds disposent de périphériques Neuron attribuables.
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 pod de test
Vous pouvez vérifier que les appareils Neuron sont accessibles en exécutant l'neuron-lsoutil dans un module de test.
-
Créez un fichier nommé
neuron-ls.yamlavec les contenus suivants. Ce manifeste lance un conteneurNeuron 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" -
Appliquez le manifeste.
kubectl apply -f neuron-ls.yaml -
Une fois que le Pod a fini de fonctionner, consultez ses journaux.
kubectl logs neuron-lsL'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 Neuron Device, l'allocation d'appareils contigus sur des instances comportant plusieurs appareils Neuron (par exempletrn2.48xlarge) nécessite l'extension de planificateur Neuron Kubernetes.
Pour plus d'informations sur l'utilisation des appareils Neuron avec Amazon EKS, consultez la documentation Neuron relative à l'exécution sur EKS.