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.
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 |
Numero intero e risorse estese |
|
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 |
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.
-
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-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
Consulta la documentazione di Neuron DRA ResourceSlice.
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.htmlmatchAttribute 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
-
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" -
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 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.
-
Crea un file denominato
neuron-ls.yamlcon i seguenti contenuti. Questo manifest avvia un contenitoreNeuron Monitor in cui è 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 -
Al termine dell'esecuzione del Pod, 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 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
Per ulteriori informazioni sull'utilizzo dei dispositivi Neuron con Amazon EKS, consulta la documentazione di Neuron per l'esecuzione su EKS.