View a markdown version of this page

Gestisci i dispositivi Neuron su Amazon EKS - 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 su che si trova 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à.

Gestisci i dispositivi Neuron su Amazon EKS

AWS Trainium e AWS Inferentia sono chip di apprendimento automatico appositamente progettati da. AWS Amazon EKS supporta due meccanismi per la gestione dei dispositivi Neuron nei cluster EKS: il driver Neuron DRA e il plug-in per dispositivi Neuron Kubernetes.

Consigliamo di utilizzare i driver DRA per le nuove implementazioni con Kubernetes versioni 1.34 e successive quando si utilizza il provisioning della capacità statica in Karpenter, gruppi di nodi gestiti da EKS o nodi autogestiti. DRA non è attualmente supportato con EKS Auto Mode. Il driver Neuron DRA fornisce l'allocazione basata sulla topologia, la pianificazione dei sottoinsiemi di dispositivi connessi, la configurazione logica NeuronCore (LNC) e l'allocazione multinodo senza richiedere estensioni di pianificazione personalizzate. UltraServer

Driver Neuron DRA e plug-in per dispositivi Neuron

Funzionalità Driver Neuron DRA Plugin per dispositivi Neuron

Versione minima di Kubernetes

1.34

Tutte le versioni di EKS-supported Kubernetes

EKS Compute

Karpenter (solo capacità statica), gruppi di nodi gestiti, nodi autogestiti

EKS Auto Mode, Karpenter, gruppi di nodi gestiti, nodi autogestiti

EKS-optimized Supporto AMI

AL 2023 (Neuron), Bottlerocket

AL 2023 (Neuron), Bottlerocket

Pubblicità del dispositivo

Attributi avanzati tramite ResourceSlice oggetti tra cui ID del dispositivo, tipo di istanza, topologia, versione del driver e località EFA

Numero intero e risorse estese aws.amazon.com/neuron aws.amazon.com/neuroncore

Sottoinsiemi di dispositivi connessi

Assegna sottoinsiemi di 1, 4, 8 o 16 dispositivi Neuron connessi utilizzando vincoli topologici

Richiede l'estensione dello scheduler Neuron per l'allocazione contigua dei dispositivi

Configurazione LNC

Per-workload NeuronCore Configurazione logica (LNC=1 o LNC=2) tramite parametri ResourceClaimTemplate

Richiede la preconfigurazione nei modelli di avvio EC2

Attribute-based selezione

Filtrare i dispositivi per tipo di istanza, versione del driver e altri attributi utilizzando le espressioni CEL

Non supportata

Topology-aware Allocazione EFA

DRA-native consapevolezza della topologia

Riconoscimento automatico della topologia (solo AMI AL2023) EKS-optimized

Installa il driver Neuron DRA

Il driver Neuron DRA pubblicizza i dispositivi Neuron come oggetti con il nome. ResourceSlice DeviceClass neuron.aws.com Il driver funziona come un DaemonSet e rileva automaticamente i dispositivi Neuron e i relativi attributi di topologia.

Informazioni dettagliate sul driver Neuron DRA sono disponibili nella documentazione Neuron DRA. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/neuron-dra.html#neuron-dra-driver-attributes-reference

Prerequisiti

  • Un cluster Amazon EKS che esegue Kubernetes versione 1.34 o successiva con capacità statica fornita da Karpenter, gruppi di nodi gestiti da EKS o gruppi di nodi autogestiti.

  • Nodi con tipi di istanza Trainium o Inferentia2. AWS

  • Helm è installato nell’ambiente a riga di comando, consulta le istruzioni di configurazione di Helm per ulteriori informazioni.

  • kubectlconfigurati per comunicare con il tuo cluster, vedi Installa o aggiorna kubectl per maggiori informazioni.

Procedura

Importante

Non installare il driver Neuron DRA sui nodi in cui è in esecuzione il plug-in del dispositivo Neuron. I due meccanismi non possono coesistere sullo stesso nodo. Ciò può causare una sottoscrizione eccessiva silenziosa dei dispositivi sottostanti a più pod sullo stesso nodo.

  1. Installa il driver Neuron DRA usando 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"

    Per impostazione predefinita, il driver viene distribuito come file DaemonSet nel neuron-dra-driver namespace con. DeviceClass neuron.aws.com

  2. Verificare che il driver DRA sia in esecuzione. DaemonSet

    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. Verificare che sia DeviceClass stato creato.

    kubectl get deviceclass neuron.aws.com
    NAME AGE neuron.aws.com 60s
  4. Verifica che ResourceSlice gli oggetti siano pubblicizzati per i tuoi nodi.

    kubectl get resourceslice

Consulta la documentazione di Neuron DRA per informazioni sugli attributi degli oggetti disponibiliResourceSlice.

Richiedi i dispositivi Neuron in un Pod

Per richiedere dispositivi Neuron utilizzando il driver DRA, creane uno ResourceClaimTemplate che faccia riferimento al neuron.aws.com DeviceClass e inseriscilo nelle specifiche del tuo Pod.

L'esempio seguente richiede tutti i dispositivi Neuron su un'istanza: trn2.48xlarge

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

Assegna sottoinsiemi di dispositivi connessi

Il driver Neuron DRA può allocare sottoinsiemi di dispositivi Neuron connessi senza richiedere l'estensione dello scheduler Neuron. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html Le dimensioni dei sottoinsiemi supportate sono 1, 4, 8 o 16 dispositivi. Utilizzate il matchAttribute vincolo con un ID di gruppo di topologia per assicurarvi che i dispositivi siano connessi.

L'esempio seguente richiede 4 dispositivi Neuron connessi:

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"

I matchAttribute valori supportati per i sottoinsiemi connessi sonoresource.aws.com/devicegroup1_id, resource.aws.com/devicegroup4_idresource.aws.com/devicegroup8_id, e. resource.aws.com/devicegroup16_id Il numero nel nome dell'devicegroupattributo corrisponde al numero di dispositivi Neuron nel gruppo di topologia connessa. Ad esempio, resource.aws.com/devicegroup1_id identifica un singolo dispositivo Neuron, resource.aws.com/devicegroup4_id identifica un gruppo di 4 dispositivi connessi e resource.aws.com/devicegroup16_id identifica rispettivamente gruppi di 8 resource.aws.com/devicegroup8_id e 16 dispositivi connessi. Scegli matchAttribute quello che corrisponde al dispositivo nella tua richiesta count in modo che i dispositivi allocati appartengano allo stesso gruppo di topologia connessa. Per ulteriori informazioni su questi attributi, consulta la documentazione del driver Neuron DRA.

Configura Logical NeuronCores (LNC)

Il driver Neuron DRA consente la configurazione logica per carico di lavoro tramite parametri. NeuronCore ResourceClaimTemplate Ciò elimina la necessità di preconfigurare LNC in EC2 Launch Templates.

L'esempio seguente richiede tutti i dispositivi Neuron con LNC impostato su 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

Assegna dispositivi Neuron con interfacce EFA allineate

Per informazioni, consultare Topology-aware EFA e GPU/Neuron allocazione dei dispositivi.

Installa il plug-in del dispositivo Neuron Kubernetes

Il plug-in per dispositivi Neuron Kubernetes pubblicizza i dispositivi Neuron come risorse estese. aws.amazon.com/neuron NeuronCores aws.amazon.com/neuroncore Richiedete i dispositivi Neuron in container, richieste e limiti di risorse.

Prerequisiti

  • Un cluster Amazon EKS.

  • Nodi con componenti a livello di host installati per istanze AWS Trainium o AWS Inferentia. Questi sono inclusi se si utilizzano le AMI accelerate EKS AL2023 o le AMI EKS Bottlerocket.

  • Helm è installato nell’ambiente a riga di comando, consulta le istruzioni di configurazione di Helm per ulteriori informazioni.

  • kubectlconfigurato per comunicare con il cluster, vedi per ulteriori informazioni. Installa o aggiorna kubectl

Procedura

  1. Installa il plug-in del dispositivo Neuron Kubernetes usando Helm.

    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 sia in esecuzione. DaemonSet

    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. Verifica che i tuoi nodi dispongano di dispositivi Neuron allocabili.

    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

Verifica i dispositivi Neuron con un pod di prova

Puoi verificare che i dispositivi Neuron siano accessibili eseguendo lo neuron-ls strumento in un test Pod.

  1. Crea un file denominato neuron-ls.yaml con i seguenti contenuti. Questo manifest avvia un contenitore Neuron Monitor in cui è installato lo neuron-ls strumento.

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

    kubectl apply -f neuron-ls.yaml
  3. Al termine dell'esecuzione del Pod, visualizza i suoi registri.

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

Quando si utilizza il plug-in per dispositivi Neuron, l'allocazione contigua dei dispositivi su istanze con più dispositivi Neuron (ad esempiotrn2.48xlarge) richiede l'estensione dello scheduler Neuron Kubernetes. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html Il driver Neuron DRA lo gestisce automaticamente tramite vincoli topologici.

Per ulteriori informazioni sull'utilizzo dei dispositivi Neuron con Amazon EKS, consulta la documentazione di Neuron per l'esecuzione su EKS.