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 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 progettati appositamente da. AWS Amazon EKS supporta due meccanismi per la gestione dei dispositivi Neuron nei cluster EKS: il driver Neuron DRA e il plug-in del dispositivo Neuron Kubernetes.
Si consiglia di utilizzare il driver Neuron DRA per nuove implementazioni su cluster EKS che eseguono Kubernetes versione 1.34 o successiva con gruppi di nodi gestiti EKS o gruppi di nodi autogestiti. Il driver Neuron DRA fornisce l'allocazione basata sulla topologia, la pianificazione dei sottoinsiemi di dispositivi connessi, la configurazione logica (LNC) e l'allocazione multinodo senza richiedere estensioni di pianificazione personalizzate. NeuronCore UltraServer
Il driver Neuron DRA non è supportato con Karpenter o EKS Auto Mode. Usa il plug-in del dispositivo Neuron con Karpenter ed EKS Auto Mode. Il plug-in del dispositivo Neuron rimane supportato anche per i gruppi di nodi gestiti da EKS e i nodi autogestiti.
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 |
Gruppi di nodi gestiti, nodi autogestiti |
EKS Auto Mode, Karpenter, gruppi di nodi gestiti, nodi autogestiti |
|
EKS-optimized Supporto AMI |
AL2023 (Neuron), portaborraccia |
AL2023 (Neuron), portaborraccia |
|
Pubblicità sul dispositivo |
Attributi completi tramite |
Numero intero e risorse estese |
|
Sottoinsiemi di dispositivi collegati |
Alloca sottoinsiemi di 1, 4, 8 o 16 dispositivi Neuron collegati utilizzando vincoli di topologia |
Richiede l'estensione dello scheduler Neuron per l'allocazione di dispositivi contigui |
|
Configurazione LNC |
Per-workload NeuronCore Configurazione logica (LNC=1 o LNC=2) tramite parametri |
Richiede la preconfigurazione nei modelli di lancio EC2 |
|
Attribute-based selezione |
Filtra i dispositivi per tipo di istanza, versione del driver e altri attributi utilizzando le espressioni CEL |
Non supportata |
|
Topology-aware Allocazione EFA |
DRA-native conoscenza della topologia |
Riconoscimento automatico della topologia (solo AMI AL2023EKS-optimized ) |
Installa il driver Neuron DRA
Il driver Neuron DRA pubblicizza i dispositivi Neuron come oggetti con lo stesso 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.
Prerequisiti
-
Un cluster Amazon EKS che esegue Kubernetes versione 1.34 o successiva con gruppi di nodi gestiti da EKS o gruppi di nodi autogestiti.
-
Nodi con tipi di istanze AWS Trainium o Inferentia2.
-
Helm è installato nell’ambiente a riga di comando, consulta le istruzioni di configurazione di Helm per ulteriori informazioni.
-
kubectlconfigurati per comunicare con il cluster, vedi Installazione o aggiornamento di kubectl per ulteriori informazioni.
Procedura
Importante
Non installate 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. Vedi upstream KEP-5004
-
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 DaemonSet nel
neuron-dra-drivernamespace con.DeviceClassneuron.aws.com -
Verificare che il driver DRA sia in esecuzione. DaemonSet
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 -
Verificare che sia
DeviceClassstato creato.kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
Verifica che
ResourceSlicegli oggetti siano pubblicizzati per i tuoi nodi.kubectl get resourceslice
Consultate la documentazione di Neuron DRAResourceSlice.
Richiedi dispositivi Neuron in un Pod
Per richiedere dispositivi Neuron utilizzando il driver DRA, creane uno ResourceClaimTemplate che faccia riferimento a neuron.aws.com DeviceClass e fallo riferimento 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
Alloca sottoinsiemi di dispositivi collegati
Il driver Neuron DRA può allocare sottoinsiemi di dispositivi Neuron collegati senza richiedere l'estensione dello scheduler Neuron.matchAttribute vincolo con un ID del gruppo di topologia per assicurarvi che i dispositivi siano collegati.
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, consultate 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 nei modelli di avvio di EC2.
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
Alloca i 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 e come risorse estese. aws.amazon.com/neuron NeuronCores aws.amazon.com/neuroncore Richiedete i dispositivi Neuron nelle richieste e nei limiti delle risorse del contenitore.
Prerequisiti
-
Un cluster Amazon EKS.
-
Nodi con componenti a livello di host installati per istanze AWS Trainium o AWS Inferentia. Queste sono incluse 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. Installazione o aggiornamento di kubectl
Procedura
-
Installa il plug-in del dispositivo Neuron Kubernetes utilizzando Helm.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Verifica che il plug-in del dispositivo Neuron sia in esecuzione. DaemonSet
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 -
Verifica che i tuoi nodi abbiano 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 test Pod
Puoi verificare che i dispositivi Neuron siano accessibili eseguendo lo neuron-ls strumento in un test Pod.
-
Crea un file denominato
neuron-ls.yamlcon i seguenti contenuti. Questo manifest avvia un contenitore Neuron Monitor sucui è installato lo neuron-lsstrumento.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" -
Applicare il file manifesto.
kubectl apply -f neuron-ls.yaml -
Dopo che il Pod ha finito di funzionare, visualizza i suoi registri.
kubectl logs neuron-lsDi 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 del dispositivo Neuron, l'allocazione di dispositivi contigui su istanze con più dispositivi Neuron (ad esempiotrn2.48xlarge) richiede l'estensione di pianificazione Neuron Kubernetes.
Per ulteriori informazioni sull'uso dei dispositivi Neuron con Amazon EKS, consulta la documentazione di Neuron per l'esecuzione su