Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Administración de los dispositivos Neuron en Amazon EKS
AWS Trainium y AWS Inferentia son chips de machine learning especialmente diseñados por AWS. Amazon EKS admite dos mecanismos para administrar los dispositivos Neuron en los clústeres de EKS: el controlador de DRA de Neuron y el complemento para dispositivos de Kubernetes de Neuron.
Se recomienda utilizar el controlador de DRA de Neuron para las nuevas implementaciones en los clústeres de EKS que ejecuten la versión 1.34 o posterior de Kubernetes. El controlador de DRA de Neuron proporciona una asignación compatible con la topología, programación de subconjuntos de dispositivos conectados, configuración lógica de NeuronCore (LNC) y asignación de varios nodos UltraServer sin necesidad de extensiones de programador personalizadas. El complemento para dispositivos Neuron sigue siendo compatible.
El controlador de DRA de Neuron frente al complemento para dispositivos Neuron
| Característica | Controlador de DRA de Neuron | Complemento para dispositivos Neuron |
|---|---|---|
|
Versión mínima de Kubernetes |
1.34 |
Todas las versiones de Kubernetes compatible con EKS |
|
Karpenter y modo automático de EKS |
No admitido |
Compatible |
|
Compatibilidad con AMI optimizadas para EKS |
AL2023 |
AL2023, Bottlerocket |
|
Anuncio de dispositivo |
Atributos enriquecidos a través de objetos |
Recuento de enteros de |
|
Subconjuntos de dispositivos conectados |
Asigne subconjuntos de 1, 4, 8 o 16 dispositivos de Neuron conectados mediante restricciones de topología |
Requiere la extensión del programador Neuron |
|
Configuración de LNC |
Configuración lógica de NeuronCore por carga de trabajo (LNC=1 o LNC=2) mediante parámetros |
Requiere una configuración previa en las plantillas de inicio de EC2 |
|
Selección basada en atributos |
Filtre los dispositivos por tipo de instancia, versión del controlador y otros atributos mediante expresiones CEL |
No admitido |
Instalación del controlador de DRA de Neuron
El controlador de DRA de Neuron anuncia los dispositivos Neuron como objetos ResourceSlice con el nombre de DeviceClass neuron.aws.com. El controlador funciona como un DaemOnset y detecta automáticamente los dispositivos Neuron y sus atributos topológicos.
Encontrará información detallada sobre el controlador de DRA de Neuron en la documentación de DRA de Neuron
Actualmente, no se admite el uso del controlador de DRA de Neuron con Bottlerocket.
Requisitos previos
-
Un clúster de Amazon EKS que ejecuta la versión 1.34 de Kubernetes o una posterior.
-
Nodos con los tipos de instancia AWS Trainium o Inferentia2.
-
Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm para obtener más información.
-
kubectlconfigurado para comunicarse con su clúster. Consulte Instalación o actualización de kubectl para obtener más información.
Procedimiento
importante
No instale el controlador de DRA de Neuron en los nodos en los que se esté ejecutando el complemento para dispositivos Neuron. Los dos mecanismos no pueden coexistir en el mismo nodo. Consulte KEP-5004
-
Instale el controlador de DRA de Neuron mediante 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"El controlador se implementa como un DaemOnset en el espacio de nombres
neuron-dra-driverde forma predeterminada conDeviceClassneuron.aws.com. -
Compruebe que el DaemOnset del controlador de DRA esté funcionando.
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 -
Compruebe que
DeviceClassse haya creado.kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
Compruebe que los objetos
ResourceSliceestén anunciados para sus nodos.kubectl get resourceslice
Consulte la documentación de DRA de NeuronResourceSlice disponibles.
Solicitud de dispositivos Neuron en un pod
Para solicitar dispositivos Neuron mediante el controlador de DRA, cree un ResourceClaimTemplate que haga referencia al neuron.aws.com DeviceClass y haga referencia a él en la especificación del pod.
En el siguiente ejemplo, se solicitan todos los dispositivos Neuron de una instancia 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
Asignación de subconjuntos de dispositivos conectados
El controlador de DRA de Neuron puede asignar subconjuntos de dispositivos Neuron conectados sin necesidad de la extensión del programador de NeuronmatchAttribute con un ID de grupo de topología para asegurarse de que los dispositivos estén conectados.
En el siguiente ejemplo, se solicitan 4 dispositivos Neuron conectados:
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"
Los valores de matchAttribute admitidos para los subconjuntos conectados son resource.aws.com/devicegroup1_id, resource.aws.com/devicegroup4_id, resource.aws.com/devicegroup8_id y resource.aws.com/devicegroup16_id.
Configuración de NeuronCores lógicos (LNC)
El controlador de DRA de Neuron permite configurar el NeuronCore lógico por carga de trabajo mediante parámetros ResourceClaimTemplate. Esto elimina la necesidad de preconfigurar el LNC en las plantillas de lanzamiento de EC2.
El siguiente ejemplo solicita todos los dispositivos Neuron con el LNC establecido en 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
Instalación del complemento para dispositivos de Kubernetes de Neuron
El complemento para dispositivos de Kubernetes de Neuron anuncia los dispositivos Neuron como aws.amazon.com/neuron y los NeuronCores como recursos ampliados de aws.amazon.com/neuroncore. Los dispositivos Neuron se solicitan en límites y solicitudes de recursos de contenedores.
Requisitos previos
-
Un clúster de Amazon EKS.
-
Nodos con componentes a nivel de host instalados para las instancias de AWS Trainium o AWS Inferentia. Se incluyen si se utilizan las AMI aceleradas de EKS AL2023 o las AMI de Bottlerocket de EKS.
-
Si tiene Helm instalado en su entorno de línea de comandos, consulte las instrucciones de configuración de Helm para obtener más información.
-
kubectlconfigurado para comunicarse con su clúster. Consulte Instalación o actualización de kubectl para obtener más información.
Procedimiento
-
Instale el complemento para dispositivos de Kubernetes de Neuron mediante Helm.
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
Compruebe que el DaemonSet del complemento para dispositivos Neuron esté en ejecución.
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 -
Compruebe que los nodos tengan dispositivos Neuron asignables.
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
Comprobación de los dispositivos Neuron con un pod de prueba
Para comprobar que se puede acceder a los dispositivos Neuron, ejecute la herramienta neuron-ls en un pod de prueba.
-
Cree un archivo denominado
neuron-ls.yamlcon el siguiente contenido. Este manifiesto lanza un contenedor de Neuron Monitorque tiene la herramienta neuron-lsinstalada.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 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule" -
Aplique el manifiesto.
kubectl apply -f neuron-ls.yaml -
Una vez que el pod termine de ejecutarse, consulte sus registros.
kubectl logs neuron-lsUn ejemplo de salida sería el siguiente.
instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+
nota
Cuando se utiliza el complemento para dispositivos Neuron, la asignación de dispositivos contiguos en instancias con varios dispositivos Neuron (por ejemplo, trn2.48xlarge) requiere la extensión del programador de Kubernetes de Neuron
Para obtener más información sobre el uso de dispositivos Neuron con Amazon EKS, consulte la documentación de Neuron para ejecuciones en EKS