View a markdown version of this page

Definiciones de tareas de Amazon ECS para cargas de trabajo de machine learning de AWS Neuron - Amazon Elastic Container Service

Definiciones de tareas de Amazon ECS para cargas de trabajo de machine learning de AWS Neuron

Puede usar instancias Amazon EC2 Trn1, Amazon EC2 Trn2, Amazon EC2 Inf1 (Inf1 solo se admite en el tipo de lanzamiento EC2) y Amazon EC2 Inf2 con los clústeres para cargas de trabajo de machine learning.

Las instancias Trn1 y Trn2 de Amazon EC2 funcionan con chips de AWS Trainium. Estas instancias proporcionan capacitación de alto rendimiento y bajo costo para el machine learning en la nube. Puede entrenar un modelo de inferencia de machine learning mediante un marco de machine learning con AWS Neuron en una instancia de Trn1 y Trn2. Luego, puede ejecutar el modelo en una instancia Inf1 (Inf1 solo se admite en el tipo de lanzamiento EC2) o en una instancia Inf2 para usar la aceleración de los chips de AWS Inferentia.

Las instancias Inf1 e Inf2 de Amazon EC2 funcionan con chips de AWS Inferentia, que proporcionan un alto rendimiento y una inferencia de menor costo en la nube.

Los modelos de machine learning se implementan en contenedores mediante AWS Neuron, que es un kit de desarrollo de software (SDK) especializado. SDK consiste en un compilador, tiempo de ejecución y herramientas de perfilado que optimizan el rendimiento de machine learning de los chips de AWS. AWS Neuron admite marcos de machine learning populares como TensorFlow, PyTorch y Apache MXNet.

Consideraciones

Antes de comenzar a implementar Neuron en Amazon ECS, tenga en cuenta lo siguiente:

  • Según el tipo de lanzamiento, los clústeres pueden contener una combinación de instancias Trn1, Trn2, Inf1, Inf2 y otras instancias.

  • Necesita una aplicación de Linux en un contenedor que use un marco de machine learning compatible con AWS Neuron.

    importante

    Es posible que las aplicaciones que utilizan otros marcos no tengan un rendimiento mejorado en las instancias Trn1, Trn2, Inf1 e Inf2.

  • Amazon ECS admite dos enfoques para configurar el acceso a dispositivos Neuron:

    • Asignación administrada de dispositivos Neuron: utilice el parámetro resourceRequirements con el tipo NeuronDevice en la definición del contenedor. Amazon ECS detecta y asigna automáticamente dispositivos Neuron a los contenedores. Disponible solo en Managed Instances. Para obtener más información, consulte Asignación administrada de dispositivos Neuron.

    • Especificación manual de dispositivos Neuron: utilice el parámetro linuxParameters.devices para especificar explícitamente las rutas de dispositivos Neuron. Disponible tanto en el tipo de lanzamiento EC2 como en Managed Instances. Para obtener más información, consulte Especificación manual de dispositivos Neuron.

    importante

    Utilice solo un enfoque de forma coherente para evitar conflictos.

Asignación administrada de dispositivos Neuron

Con Managed Instances, puede usar el parámetro resourceRequirements en la definición del contenedor para solicitar dispositivos Neuron. Amazon ECS detecta automáticamente los dispositivos Neuron en la instancia, los asigna a la tarea y configura el contenedor con acceso a todos los dispositivos Neuron de la instancia. Debido a que la tarea requiere acceso exclusivo a todos los dispositivos, solo se ejecuta una tarea de Neuron por instancia.

nota

Las instancias Inf1 solo se admiten en el tipo de lanzamiento EC2. Para usar instancias Inf1, consulte Especificación manual de dispositivos Neuron.

Selección de instancias Neuron

Para seleccionar tipos de instancia habilitadas para Neuron para las cargas de trabajo de Managed Instances, utilice el objeto instanceRequirements en la plantilla de lanzamiento del proveedor de capacidad. Puede usar los siguientes atributos para seleccionar instancias habilitadas para Neuron:

  • acceleratorManufacturers: utilice AWS para seleccionar instancias con aceleradores de amazon-web-services (incluidos Inferentia y Trainium).

  • acceleratorNames: utilice trainium2, inferentia2 o trainium para seleccionar chips aceleradores específicos.

  • allowedInstanceTypes: utilice trn* y inf* para seleccionar tipos de instancia de Neuron por nombre.

El siguiente ejemplo utiliza allowedInstanceTypes:

{ "instanceRequirements": { "allowedInstanceTypes": ["inf*", "trn*"] } }

Definición de tarea

Para solicitar dispositivos Neuron en la definición de la tarea, agregue una entrada resourceRequirements con el tipo NeuronDevice y el valor ALL. Esto otorga al contenedor acceso exclusivo a todos los dispositivos Neuron de la instancia.

Existen las siguientes limitaciones:

  • Como máximo, una definición de contenedor puede especificar NeuronDevice en resourceRequirements.

  • No puede combinar resourceRequirements con el tipo NeuronDevice y linuxParameters.devices para dispositivos Neuron en la misma definición de la tarea.

Una vez que se inicie la tarea, puede comprobar la asignación de dispositivos Neuron mediante una llamada a la operación de la API DescribeTasks. La respuesta incluye un campo neuronDeviceIds en cada contenedor que muestra los ID de los dispositivos Neuron asignados. También puede llamar a la operación de la API DescribeContainerInstances para ver NEURON_DEVICES en los campos registeredResources yremainingResources de la instancia de contenedor.

Para ver un ejemplo de definición de la tarea, consulte Ejemplos de definiciones de tarea de Neuron.

Especificación manual de dispositivos Neuron

Con este enfoque, especifica manualmente las rutas de los dispositivos AWS Trainium o AWS Inferentia en la definición de la tarea mediante el parámetro linuxParameters.devices. Este enfoque funciona tanto con el tipo de lanzamiento de EC2 como con Managed Instances.

Solo se puede ejecutar una tarea de inferencia o entrenamiento de inferencias en cada chip AWS Trainium o AWS Inferentia. Puede ejecutar tantas tareas como chips haya en la instancia si asigna diferentes dispositivos a cada tarea.

Para el tipo de lanzamiento de EC2, puede usar atributos de tipo de instancia al configurar las restricciones de ubicación de tareas para asegurarse de que la tarea se lance en el tipo de instancia que especifique. Para obtener más información, consulte Cómo coloca Amazon ECS las tareas en las instancias de contenedor.

Requisitos de definición de tareas

La definición de la tarea debe ser específica para un único tipo de instancia. Debe configurar un contenedor para que use los dispositivos AWS Trainium o AWS Inferentia específicos disponibles en la instancia de contenedor del host. Para ello, utilice el parámetro linuxParameters. En la tabla que se muestra a continuación se detallan los chips específicos de cada tipo de instancia.

Tipo de instancia vCPU RAM (GiB) Chips de aceleradores AWS ML Rutas del dispositivo
trn1.2xlarge 8 32 1 /dev/neuron0
trn1.32xlarge 128 512 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
trn2.48xlarge 192 1536 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
inf1.xlarge 4 8 1 /dev/neuron0
inf1.2xlarge 8 16 1 /dev/neuron0
inf1.6xlarge 24 48 4 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3
inf1.24xlarge 96 192 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
inf2.xlarge 8 16 1 /dev/neuron0
inf2.8xlarge 32 64 1 /dev/neuron0
inf2.24xlarge 96 384 6 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5
inf2.48xlarge 192 768 12 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11

Para ver un ejemplo de definición de la tarea, consulte Ejemplos de definiciones de tarea de Neuron.

Instancias administradas

Managed Instances usa automáticamente una AMI que incluye el controlador de Neuron. No se requiere ninguna configuración adicional de AMI.

Tipo de lanzamiento de EC2

Amazon ECS proporciona una AMI optimizada para Amazon ECS que se basa en Amazon Linux 2023 para cargas de trabajo de AWS Trainium y AWS Inferentia. Viene con los controladores AWS Neuron y el tiempo de ejecución para Docker. Esta AMI facilita la ejecución de cargas de trabajo de inferencia de machine learning en Amazon ECS.

Recomendamos utilizar la AMI de Amazon Linux 2023 (Neuron) optimizada para Amazon ECS cuando se lanzan las instancias Trn1, Inf1 e Inf2 de Amazon EC2.

Puede recuperar la AMI actual de Amazon Linux 2023 (Neuron) optimizada para Amazon ECS a través de la AWS CLI con el siguiente comando.

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended