Definições de tarefa do Amazon ECS para workloads de machine learning do AWS Neuron
É possível registar as instâncias Amazon EC2 Trn1
As instâncias Trn1 do Amazon EC2 são executadas em chips AWS Trainium
As instâncias Inf1 e as instâncias Inf2 do Amazon EC2 são executadas em chips AWS Inferentia
Modelos de machine learning são implantados em contêineres com o uso do AWS Neuron
Considerações
Antes de começar a implantar o Neuron no Amazon ECS, considere o seguinte:
-
Seus clusters podem conter uma combinação de instâncias Trn1, Inf1, Inf2 e outras.
-
Você precisa de uma aplicação do Linux em um contêiner que use um framework de machine learning compatível com o AWS Neuron.
Importante
Aplicações que usem outros frameworks podem não apresentar uma melhoria de performance nas instâncias Trn1, Inf1 e Inf2.
-
Apenas uma tarefa de inferência ou de treinamento de inferência pode ser executada em cada chip AWS Trainium
ou AWS Inferentia . Para a Inf1, cada chip possui 4 NeuronCores. Para a Trn1 e a Inf2, cada chip possui 2 NeuronCores. É possível executar tantas tarefas quantos forem os chips para cada uma de suas instâncias Trn1, Inf1 e Inf2. -
Ao criar um serviço ou executar uma tarefa autônoma, você pode usar atributos de tipo de instância ao configurar as restrições de posicionamento de tarefas. Assim, você se certifica de que a tarefa será iniciada na instância de contêiner que você especificar. Isso pode ajudar você a otimizar o uso dos recursos em geral e garantir que as tarefas para workloads de inferência ocorram nas instâncias Trn, Inf1 e Inf2. Para ter mais informações, consulte Como o Amazon ECS posiciona tarefas em instâncias de contêineres.
No exemplo a seguir, uma tarefa é executada em uma instância
Inf1.xlarge
do clusterdefault
.aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
-
Os requisitos de recursos do Neuron não podem ser definidos em uma definição de tarefa. Em vez disso, você configura um contêiner para usar os chips AWS Trainium ou AWS Inferentia específicos, disponíveis na instância de contêiner host. É possível fazer isso usando o parâmetro
linuxParameters
e especificando os detalhes do dispositivo. Para ter mais informações, consulte Requisitos de definição de tarefa.
Usar a AMI do Amazon Linux 2023 (Neuron) otimizada para o Amazon ECS
O Amazon ECS fornece uma AMI otimizada para o Amazon ECS que se baseia no Amazon Linux 2023 para workloads do AWS Trainium e do AWS Inferentia. Ela vem com drivers do AWS Neuron e runtime para Docker. Essa AMI facilita a execução de workloads de inferência de machine learning no Amazon ECS.
Recomendamos usar a AMI do Amazon Linux 2023 (Neuron) otimizada para o Amazon ECS ao iniciar as instâncias Trn1, Inf1 e Inf2 do Amazon EC2.
É possível recuperar a AMI atual do Amazon Linux 2023 (Neuron) otimizada para o Amazon ECS ao usar a AWS CLI com o comando a seguir.
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended
Há suporte para a AMI do Amazon Linux 2023 (Neuron) otimizada para o Amazon ECS nas seguintes regiões:
-
Leste dos EUA (Norte da Virgínia)
-
Leste dos EUA (Ohio)
-
Oeste dos EUA (Norte da Califórnia)
-
Oeste dos EUA (Oregon)
-
Ásia-Pacífico (Mumbai)
-
Ásia-Pacífico (Osaka)
-
Ásia-Pacífico (Seul)
-
Ásia-Pacífico (Tóquio)
-
Ásia-Pacífico (Singapura)
-
Ásia-Pacífico (Sydney)
-
Canadá (Central)
-
Europa (Frankfurt)
-
Europa (Irlanda)
-
Europa (Londres)
-
Europa (Paris)
-
Europa (Estocolmo)
-
América do Sul (São Paulo)
Usar a AMI do Amazon Linux 2 (Neuron) otimizada para o Amazon ECS
O Amazon ECS oferece uma AMI otimizada para o Amazon ECS que é baseada no Amazon Linux 2 para workloads do AWS Trainium e do AWS Inferentia. Ela vem com drivers do AWS Neuron e runtime para Docker. Essa AMI facilita a execução de workloads de inferência de machine learning no Amazon ECS.
Recomendamos o uso da AMI do Amazon Linux 2 (Neuron) otimizada para o Amazon ECS ao iniciar as instâncias Trn, Inf1 e Inf2 do Amazon EC2.
É possível recuperar a AMI atual do Amazon Linux 2 (Neuron) otimizada para o Amazon ECS usando a AWS CLI com o comando a seguir.
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended
A AMI do Amazon Linux 2 (Neuron) otimizada para o Amazon ECS é compatível com as seguintes regiões:
-
Leste dos EUA (Norte da Virgínia)
-
Leste dos EUA (Ohio)
-
Oeste dos EUA (Norte da Califórnia)
-
Oeste dos EUA (Oregon)
-
Ásia-Pacífico (Mumbai)
-
Ásia-Pacífico (Osaka)
-
Ásia-Pacífico (Seul)
-
Ásia-Pacífico (Tóquio)
-
Ásia-Pacífico (Singapura)
-
Ásia-Pacífico (Sydney)
-
Canadá (Central)
-
Europa (Frankfurt)
-
Europa (Irlanda)
-
Europa (Londres)
-
Europa (Paris)
-
Europa (Estocolmo)
-
América do Sul (São Paulo)
Requisitos de definição de tarefa
Para implantar o Neuron no Amazon ECS, sua definição de tarefa deve conter a definição do contêiner para um contêiner pré-criado servindo o modelo de inferência do TensorFlow. Além disso, é fornecido por contêiners do AWS Deep Learning. O contêiner possui o runtime do AWS Neuron e a aplicação TensorFlow Serving. No startup, esse container busca o modelo no Amazon S3, inicia o serviço do Neuron TensorFlow com o modelo salvo e aguarda as solicitações de previsão. No exemplo a seguir, a imagem de contêiner tem o TensorFlow 1.15 e o Ubuntu 18.04. Uma lista completa de Deep Learning Containers pré-criados otimizados para Neuron é mantida no GitHub. Para obter mais informações, consulte Uso do AWS Neuron TensorFlow Serving.
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
Como alternativa, é possível criar sua própria imagem de contêiner de arquivo associado do Neuron. Para obter mais informações, consulte Tutorial: Neuron TensorFlow Serving
A definição de tarefa deve ser específica de um único tipo de instância. É necessário configurar um contêiner para usar os dispositivos AWS Trainium ou AWS Inferentia específicos, disponíveis na instância de contêiner host. Para isso, use o parâmetro linuxParameters
. A tabela a seguir detalha os chips específicos de cada tipo de instância.
Tipo de instância | vCPUs | RAM (GiB) | Chips aceleradores de ML AWS | Caminhos de dispositivos |
---|---|---|---|---|
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
|
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 |