Uso de GPU en Amazon ECS - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de GPU en Amazon ECS

Amazon ECS es compatible con cargas de trabajo que aprovechan las GPU al permitirle crear clústeres con instancias de contenedor habilitadas para GPU. Amazon EC2 Las instancias de contenedor basadas en GPU que utilizan los tipos de instancia p2, p3, g3 y g4 proporcionan acceso a las GPU NVIDIA. Para obtener más información, consulte Instancias de computación acelerada de Linux en la Guía del usuario de Amazon EC2 para instancias de Linux.

Amazon ECS proporciona una AMI optimizada para GPU que ya está preconfigurada con controladores de kernel NVIDIA y un runtime de GPU de Docker. Para obtener más información, consulte Amazon ECS-optimized AMIs.

Puede designar una serie de GPU en su definición de tarea para la colocación de tareas en el nivel de contenedor. Amazon ECS programa las instancias de contenedor habilitadas para GPU disponibles y asigna las GPU físicas a contenedores adecuados para obtener un rendimiento óptimo.

Se admiten los siguientes tipos de instancias basadas en GPU de Amazon EC2 Para obtener más información, consulte Instancias P2 de Amazon EC2, Instancias P3 de Amazon EC2, Instancias G3 de Amazon EC2 e Instancias G4 de Amazon EC2.

importante

La familia de tipos de instancia g4 es compatible con la versión 20190913 y versiones posteriores de la Amazon ECS optimizada para GPU de AMI. Para obtener más información, consulte Amazon ECS AMIVersiones de las optimizadas para de Linux. En este momento no se admite el flujo de trabajo Create Cluster (Crear clúster) en la consola de Amazon ECS Para utilizar estos tipos de instancia, debe utilizar la consola de Amazon EC2, la AWS CLI o la API y registrar manualmente las instancias en el clúster.

Tipo de instancia

GPU

Memoria de GPU (GiB)

vCPU

Memoria (GiB)

p2.xlarge

1

12

4

61

p2.8xlarge

8

96

32

488

p2.16xlarge

16

192

64

732

p3.2xlarge

1

16

8

61

p3.8xlarge

4

64

32

244

p3.16xlarge

8

128

64

488

p3dn.24xlarge

8

256

96

768

: p4d.24xlarge

8 320 96 1152

g3s.xlarge

1

8

4

30,5

g3.4xlarge

1

8

16

122

g3.8xlarge

2

16

32

244

g3.16xlarge

4

32

64

488

g4dn.xlarge

1

16

4

16

g4dn.2xlarge

1

16

8

32

g4dn.4xlarge

1

16

16

64

g4dn.8xlarge

1

16

32

128

g4dn.12xlarge

4

64

48

192

g4dn.16xlarge

1

16

64

256

Considerations

Antes de empezar a trabajar con GPU en Amazon ECS, tenga en cuenta las siguientes consideraciones:

  • Sus clústeres pueden contener una combinación de instancias de contenedor habilitadas para GPU y no habilitadas para GPU.

  • Cuando ejecute una tarea o cree un servicio, puede utilizar los atributos de tipo de instancia al configurar las restricciones de colocación de tareas para asegurarse de qué instancias de contenedor se lanzan en la tarea. Al hacerlo, puede utilizar sus recursos de forma más eficaz. Para obtener más información, consulte ubicación de tareas deAmazon ECS.

    El siguiente ejemplo lanza una tarea en una instancia de contenedor p2.xlarge en el clúster predeterminado.

    aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == p2.xlarge" --region us-east-2
  • Para cada contenedor que tiene un requisito de recursos de GPU especificado en la definición del contenedor, Amazon ECS establece el tiempo de ejecución del contenedor en el tiempo de ejecución del contenedor NVIDIA.

  • Para que tiempo de ejecución del contenedor NVIDIA funcione, es preciso establecer algunas variables de entorno en el contenedor. Para obtener una lista de estas variables de entorno, consulte nvidia-container-runtime. Amazon ECS establece el valor de la variable de entorno NVIDIA_VISIBLE_DEVICES como una lista de los ID de dispositivo de GPU que Amazon ECS asigna al contenedor. Con las demás variables de entorno requeridas, Amazon ECS no las establece, por lo que debe asegurarse de que la imagen del contenedor las establece o deben establecerse en la definición del contenedor.

  • La familia de tipos de instancia g4 es compatible con la versión 20190913 y versiones posteriores de la Amazon ECS optimizada para GPU de AMI. Para obtener más información, consulte Amazon ECS AMIVersiones de las optimizadas para de Linux. En este momento no se admite el flujo de trabajo Create Cluster (Crear clúster) en la consola de Amazon ECS Para utilizar estos tipos de instancia, debe utilizar la consola de Amazon EC2, la AWS CLI o la API y registrar manualmente las instancias en el clúster.

  • El tipo de instancia p4d.24xlarge solo funciona con CUDA 11 o una versión posterior.

Especificación de GPU en la definición de tarea

Para utilizar las GPU en una instancia de contenedor y el runtime de GPU de Docker, asegúrese de designar el número de GPU que requiere el contenedor en la definición de tarea. Cuando se colocan contenedores habilitados para GPU, el agente de contenedor de Amazon ECS asigna el número deseado de GPU físicas al contenedor adecuado. El número de unidades GPU reservadas para todos los contenedores de una tarea no debe superar el número de GPU disponibles en la instancia de contenedor en la que se lanza la tarea. Para obtener más información, consulte Creación de una definición de tarea.

importante

Si no se especifican sus requisitos de GPU en la definición de tarea, la tarea utiliza el tiempo de ejecución predeterminado de Docker.

A continuación, se muestra el formato JSON de los requisitos de GPU en una definición de tarea:

{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "2" } ], }, ... }

El ejemplo siguiente muestra la sintaxis de un contenedor Docker que especifica un requisito de GPU. Este contenedor utiliza 2 GPU, ejecuta la utilidad nvidia-smi y, a continuación, se cierra.

{ "containerDefinitions": [ { "memory": 80, "essential": true, "name": "gpu", "image": "nvidia/cuda:11.0-base", "resourceRequirements": [ { "type":"GPU", "value": "2" } ], "command": [ "sh", "-c", "nvidia-smi" ], "cpu": 100 } ], "family": "example-ecs-gpu" }