View a markdown version of this page

Definições de tarefa do Amazon ECS para workloads de machine learning do AWS Neuron - Amazon Elastic Container Service

Definições de tarefa do Amazon ECS para workloads de machine learning do AWS Neuron

É possível usar instâncias Amazon EC2 Trn1, Amazon EC2 Trn2, Amazon EC2 Inf1 (Inf1 só é compatível com o tipo de inicialização do EC2) e Amazon EC2 Inf2 em seus clusters para workloads de machine learning.

As instâncias Trn1 e Trn2 do Amazon EC2 são executadas em chips AWS Trainium. Essas instâncias oferecem treinamento de alta performance e baixo custo para machine learning na nuvem. É possível treinar um modelo de inferência de machine learning usando um framework de machine learning com o AWS Neuron em uma instância Trn1 ou Trn2. Em seguida, é possível executar o modelo em uma instância Inf1 (Inf1 só é compatível com o tipo de inicialização do EC2) ou uma instância Inf2 para usar a aceleração dos chips AWS Inferentia.

As instâncias Inf1 e as instâncias Inf2 do Amazon EC2 são executadas em chips AWS Inferentia. Eles fornecem alta performance e inferência de menor custo na nuvem.

Modelos de machine learning são implantados em contêineres com o uso do AWS Neuron, um kit de desenvolvimento de software (SDK)especializado. O SDK consiste em um compilador, runtime e ferramentas de criação de perfil que otimizam a performance de machine learning dos chips de machine learning da AWS. AWS O Neuron é compatível com frameworks de machine learning conhecidos, como TensorFlow, PyTorch e Apache MXNet.

Considerações

Antes de começar a implantar o Neuron no Amazon ECS, considere o seguinte:

  • Dependendo do tipo de inicialização, seus clusters podem conter uma combinação de instâncias Trn1, Trn2, Inf1, Inf2 e outras instâncias.

  • 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, Trn2, Inf1 e Inf2.

  • O Amazon ECS oferece duas abordagens para configurar o acesso a dispositivos Neuron:

    • Alocação gerenciada de dispositivos Neuron: use o parâmetro resourceRequirements com o tipo NeuronDevice na definição do seu contêiner. O Amazon ECS descobre e atribui automaticamente dispositivos Neuron aos seus contêineres. Disponível somente em instâncias gerenciadas. Para obter mais informações, consulte Alocação gerenciada de dispositivos Neuron.

    • Especificação manual de dispositivos Neuron: use o parâmetro linuxParameters.devices para especificar explicitamente os caminhos do dispositivo Neuron. Disponível tanto no tipo de inicialização do EC2 como para instâncias gerenciadas. Para obter mais informações, consulte Especificação manual de dispositivo Neuron.

    Importante

    Use uma só abordagem de maneira consistente para evitar conflitos.

Alocação gerenciada de dispositivos Neuron

Com as instâncias gerenciadas, você pode usar o parâmetro resourceRequirements na definição do contêiner para solicitar dispositivos Neuron. O Amazon ECS descobre automaticamente os dispositivos Neuron na instância, os atribui à sua tarefa e configura o contêiner com acesso a todos os dispositivos Neuron na instância. Como a tarefa requer acesso exclusivo a todos os dispositivos, apenas uma tarefa do Neuron é executada por instância.

nota

As instâncias Inf1 são compatíveis somente com o tipo de inicialização do EC2. Para usar instâncias Inf1, consulte Especificação manual de dispositivo Neuron.

Seleção de instâncias Neuron

Para selecionar tipos de instância habilitados para Neuron para suas workloads de instâncias gerenciadas, use o objeto instanceRequirements no modelo de inicialização do provedor de capacidade. É possível usar os seguintes atributos para selecionar instâncias habilitadas para Neuron:

  • acceleratorManufacturers: use amazon-web-services para selecionar instâncias com aceleradores AWS (inclui Inferentia e Trainium).

  • acceleratorNames: use inferentia2, trainium ou trainium2 para selecionar chips aceleradores específicos.

  • allowedInstanceTypes: use inf* e trn* para selecionar os tipos de instância Neuron por nome.

O exemplo a seguir usa allowedInstanceTypes:

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

definição da tarefa

Para solicitar dispositivos Neuron na definição da sua tarefa, adicione uma entrada resourceRequirements com o tipo NeuronDevice e o valor ALL. Isso permite que o contêiner tenha acesso exclusivo a todos os dispositivos Neuron na instância.

As limitações a seguir aplicam-se:

  • É possível ter no máximo uma definição de contêiner especificando NeuronDevice em resourceRequirements.

  • Você não pode combinar resourceRequirements com os tipos NeuronDevice e linuxParameters.devices para dispositivos Neuron na mesma definição de tarefa.

Após sua tarefa começar, você poderá verificar a atribuição do dispositivo Neuron chamando a operação DescribeTasks da API. A resposta inclui um campo neuronDeviceIds em cada contêiner mostrando os IDs dos dispositivos Neuron atribuídos. Você também pode chamar a operação DescribeContainerInstances da API para visualizar NEURON_DEVICES nos campos registeredResources e remainingResources da instância de contêiner.

Para um exemplo de definição de tarefa, consulte Exemplo de definições de tarefas do Neuron.

Especificação manual de dispositivo Neuron

Com essa abordagem, você especifica manualmente os caminhos dos dispositivos AWS Trainium ou AWS Inferentia na definição da tarefa usando o parâmetro linuxParameters.devices. Essa abordagem funciona tanto no tipo de inicialização do EC2 como em instâncias gerenciadas.

Apenas uma tarefa de inferência ou de treinamento de inferência pode ser executada em cada chip AWSTrainium ou AWSInferentia. É possível executar quantas tarefas for possível com os chips disponíveis na instância ao atribuir diferentes dispositivos a cada tarefa.

Para o tipo de inicialização do EC2, você pode usar atributos de tipo de instância ao configurar restrições de posicionamento de tarefas para garantir que a tarefa seja iniciada no tipo de instância que você especificar. Para obter mais informações, consulte Como o Amazon ECS posiciona tarefas em instâncias de contêineres.

Requisitos de definição de tarefa

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
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 um exemplo de definição de tarefa, consulte Exemplo de definições de tarefas do Neuron.

Instâncias gerenciadas

As instâncias gerenciadas usam automaticamente uma AMI que inclui o driver Neuron. Não é necessário nenhuma configuração adicional de AMI.

Tipo de inicialização do EC2

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