Definizioni delle attività di Amazon ECS per i carichi di lavoro di machine learning di AWS Neuron - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Definizioni delle attività di Amazon ECS per i carichi di lavoro di machine learning di AWS Neuron

Puoi registrare le istanze Amazon EC2 Trn1, Amazon EC2 Inf1 e Amazon EC2 Inf2 sui cluster per carichi di lavoro di machine learning.

Le istanze Trn1 di Amazon EC2 si basano su chip AWS Trainium. Queste istanze offrono addestramento ad alte prestazioni e a basso costo per il machine learning nel cloud. Puoi addestrare un modello di inferenza di machine learning utilizzando un framework di machine learning con AWS Neuron su un'istanza Trn1. Quindi, puoi eseguire il modello su un'istanza Inf1 o un'istanza Inf2 per utilizzare l'accelerazione dei chip Inferentia. AWS

Le istanze Inf1 e Inf2 di Amazon EC2 si basano sui chip AWS Inferentia, che offrono prestazioni elevate e inferenze a costi contenuti nel cloud.

I modelli di machine learning vengono implementati in container utilizzando AWS Neuron, ovvero un Software Developer Kit (SDK) specializzato. L'SDK è composto da un compilatore, un runtime e strumenti di profilazione che ottimizzano le prestazioni di apprendimento automatico dei chip di apprendimento automatico. AWS AWS Neuron supporta i più diffusi framework di machine learning come TensorFlow PyTorch, e Apache MXNet.

Considerazioni

Prima di iniziare a implementare Neuron su Amazon ECS, tieni presente quanto segue:

  • I cluster possono contenere una combinazione di istanze Trn1, Inf1, Inf2 e altre.

  • È necessaria un'applicazione Linux in un contenitore che utilizza un framework di apprendimento automatico che supporti Neuron. AWS

    Importante

    Le applicazioni che utilizzano altri framework potrebbero non avere prestazioni migliorate sulle istanze Trn1, Inf1 e Inf2.

  • Puoi eseguire soltanto un'attività di inferenza o di addestramento all'inferenza su ogni chip AWS Trainium o AWS Inferentia. Per Inf1, ogni chip ne ha 4. NeuronCores Per Trn1 e Inf2 ogni chip ne ha 2. NeuronCores Puoi eseguire tante attività quanti sono i chip per ciascuna istanza Trn1, Inf1 e Inf2.

  • Durante l'esecuzione di un servizio o di un'attività autonoma, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento dell'attività. Ciò garantisce che l'attività venga avviata sull'istanza di container specificata. In questo modo puoi ottimizzare l'utilizzo complessivo delle risorse e garantire che le attività per i carichi di lavoro di inferenza si trovino nelle istanze Trn1, Inf1 e Inf2. Per ulteriori informazioni, consulta In che modo Amazon ECS colloca le attività sulle istanze di container.

    Nell'esempio seguente viene eseguita un'attività su una istanza Inf1.xlarge sul cluster default.

    aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  • I requisiti di risorse Neuron non possono essere definiti in una definizione di attività. Invece, configuri un contenitore per utilizzare chip AWS Trainium o AWS Inferentia specifici disponibili sull'istanza del contenitore host. Puoi farlo usando il parametro linuxParameters e specificando i dettagli del dispositivo. Per ulteriori informazioni, consulta Requisiti di definizione di attività.

Usa l'AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS

Amazon ECS fornisce un'AMI ottimizzata per Amazon ECS basata su Amazon Linux 2023 per carichi di lavoro AWS Trainium e AWS Inferentia. Viene fornito con i driver AWS Neuron e il runtime per Docker. Questa AMI semplifica l'esecuzione dei carichi di lavoro di inferenza di machine learning su Amazon ECS.

Ti consigliamo di utilizzare l'AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS all'avvio delle istanze Amazon EC2 Trn1, Inf1 e Inf2.

Puoi recuperare l'attuale AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS AWS CLI utilizzando il comando seguente.

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

L'AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS è supportata nelle seguenti regioni:

  • Stati Uniti orientali (Virginia settentrionale)

  • Stati Uniti orientali (Ohio)

  • Stati Uniti occidentali (California settentrionale)

  • Stati Uniti occidentali (Oregon)

  • Asia Pacifico (Mumbai)

  • Asia Pacific (Osaka)

  • Asia Pacific (Seul)

  • Asia Pacifico (Tokyo)

  • Asia Pacifico (Singapore)

  • Asia Pacifico (Sydney)

  • Canada (Centrale)

  • Europa (Francoforte)

  • Europa (Irlanda)

  • Europe (London)

  • Europe (Paris)

  • Europa (Stoccolma)

  • Sud America (San Paolo)

Usa l'AMI Amazon Linux 2 (Neuron) ottimizzata per Amazon ECS

Amazon ECS fornisce un'AMI ottimizzata per Amazon ECS basata su Amazon Linux 2 per carichi di lavoro AWS Trainium e AWS Inferentia. Viene fornito con i driver AWS Neuron e il runtime per Docker. Questa AMI semplifica l'esecuzione dei carichi di lavoro di inferenza di machine learning su Amazon ECS.

Ti consigliamo di utilizzare l'AMI Amazon Linux 2 (Neuron) ottimizzata per Amazon ECS quando avvii le istanze Trn1, Inf1 e Inf2 di Amazon EC2.

Puoi recuperare l'attuale AMI Amazon Linux 2 (Neuron) ottimizzata per Amazon ECS utilizzando il comando AWS CLI seguente.

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended

L'AMI Amazon Linux 2 (Neuron) ottimizzata per Amazon ECS è supportata nelle seguenti regioni:

  • Stati Uniti orientali (Virginia settentrionale)

  • Stati Uniti orientali (Ohio)

  • Stati Uniti occidentali (California settentrionale)

  • Stati Uniti occidentali (Oregon)

  • Asia Pacifico (Mumbai)

  • Asia Pacific (Osaka)

  • Asia Pacific (Seul)

  • Asia Pacifico (Tokyo)

  • Asia Pacifico (Singapore)

  • Asia Pacifico (Sydney)

  • Canada (Centrale)

  • Europa (Francoforte)

  • Europa (Irlanda)

  • Europe (London)

  • Europe (Paris)

  • Europa (Stoccolma)

  • Sud America (San Paolo)

Requisiti di definizione di attività

Per distribuire Neuron su Amazon ECS, la definizione dell'attività deve contenere la definizione del contenitore per un contenitore predefinito che serve il modello di inferenza per. TensorFlow È fornito da AWS Deep Learning Containers. Questo contenitore contiene il runtime AWS Neuron e l'applicazione TensorFlow Serving. All'avvio, questo contenitore recupera il modello da Amazon S3, avvia TensorFlow Neuron Serving con il modello salvato e attende le richieste di previsione. Nell'esempio seguente, l'immagine del contenitore ha 1.15 e Ubuntu 18.04. TensorFlow È disponibile un elenco completo di Deep Learning Containers predefiniti ottimizzati per Neuron. GitHub Per ulteriori informazioni, consulta Using AWS TensorFlow Neuron Serving.

763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04

In alternativa, puoi creare la tua immagine di container sidecar di Neuron. Per ulteriori informazioni, consulta Tutorial: Neuron TensorFlow Serving nella Guida per gli AWS Deep Learning AMI sviluppatori.

La definizione di attività deve essere specifica per il tipo di istanza. È necessario configurare un contenitore per utilizzare dispositivi AWS Trainium o AWS Inferentia specifici disponibili sull'istanza del contenitore host. Puoi farlo usando il parametro linuxParameters. Nella tabella seguente vengono descritti in dettaglio i chip specifici per ogni tipo di istanza.

Tipo di istanza vCPU RAM (GiB) AWS Chip acceleratori ML Percorsi dispositivi
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