Définitions de tâches Amazon ECS pour les charges de travail d'apprentissage automatique AWS Neuron - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définitions de tâches Amazon ECS pour les charges de travail d'apprentissage automatique AWS Neuron

Vous pouvez enregistrer les instances Amazon EC2 Trn1, Amazon EC2 Inf1 et Amazon EC2 Inf2 dans vos clusters pour les charges de travail de machine learning.

Les instances Amazon EC2 Trn1 sont alimentées par des puces AWS Trainium. Ces instances fournissent une formation performante et peu coûteuse pour machine learning dans le cloud. Vous pouvez former un modèle d'inférence basé sur machine learning à l'aide d'un cadre de machine learning avec AWS Neuron sur une instance Trn1. Vous pouvez ensuite exécuter le modèle sur une instance Inf1 ou sur une instance Inf2 pour utiliser l'accélération des puces AWS Inferentia.

Les instances Inf1 et Inf2 d'Amazon EC2 sont alimentées par des puces AWS Inferentia. Elles fournissent des performances élevées et les inférences de coûts les plus bas dans le cloud.

Les modèles de machine learning sont déployés sur des conteneurs à l'aide d'AWS Neuron, qui est un kit de développement logiciel (SDK) spécialisé. Le SDK comprend un compilateur, un environnement d'exécution et des outils de profilage qui optimisent les performances d'apprentissage automatique des puces d'apprentissage AWS automatique. AWS Neuron prend en charge les frameworks d'apprentissage automatique populaires tels que TensorFlow, PyTorch, et Apache MXNet.

Considérations

Avant de commencer à déployer Neuron sur Amazon ECS, prenez en compte ce qui suit :

  • Vos clusters peuvent contenir une combinaison d'instances Trn1, Inf1, Inf2 et d'autres instances.

  • Vous avez besoin d'une application Linux dans un conteneur qui utilise un framework d'apprentissage automatique compatible avec AWS Neuron.

    Important

    Les applications qui utilisent d'autres cadres peuvent ne pas avoir de performances améliorées sur les instances Trn1, Inf1 et Inf2.

  • Une seule tâche d'inférence ou d'entraînement d'inférence peut être exécutée sur chaque puce AWS Trainium ou AWS Inferentia. Pour Inf1, chaque puce en possède 4 NeuronCores. Pour Trn1 et Inf2, chaque puce en possède 2. NeuronCores Vous pouvez exécuter autant de tâches qu'il y a de puces pour chacune de vos instances Trn1, Inf1 et Inf2.

  • Lorsque vous exécutez une tâche autonome ou créez un service, vous pouvez utiliser des attributs de type d'instance lors de la configuration des contraintes de placement des tâches. Cela garantit que la tâche est lancée sur l'instance de conteneur que vous spécifiez. Cela vous aide à optimiser l'utilisation globale des ressources et garantit que les tâches des charges de travail d'inférence sont sur vos instances Trn1, Inf1 et Inf2. Pour plus d’informations, consultez Comment Amazon ECS place les tâches sur les instances de conteneur.

    Dans l'exemple suivant, une tâche est exécutée sur une instance Inf1.xlarge de votre 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"
  • Les besoins en ressources Neuron ne peuvent pas être définis dans une définition de tâche. Au lieu de cela, vous configurez un conteneur pour utiliser des puces AWS Trainium ou AWS Inferentia spécifiques disponibles sur l'instance de conteneur hôte. Pour ce faire, utilisez le paramètre linuxParameters et en spécifiant les détails du dispositif. Pour plus d’informations, consultez Exigences relatives à la définition de tâche.

Utiliser l'AMI Amazon Linux 2023 (Neuron) optimisée pour Amazon ECS

Amazon ECS fournit une AMI optimisée pour Amazon ECS basée sur Amazon Linux 2023 pour les charges de travail AWS Trainium et AWS Inferentia. Il est livré avec les pilotes AWS Neuron et le runtime pour Docker. Cette AMI facilite l'exécution de charges de travail d'inférence de machine learning sur Amazon ECS.

Nous vous recommandons d'utiliser l'AMI Amazon Linux 2023 (Neuron) optimisée pour Amazon ECS lors du lancement de vos instances Amazon EC2 Trn1, Inf1 et Inf2.

Vous pouvez récupérer l'AMI Amazon Linux 2023 (Neuron) actuellement optimisée pour Amazon ECS à l'aide de la commande AWS CLI suivante.

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

L'AMI Amazon Linux 2023 (Neuron) optimisée pour Amazon ECS est prise en charge dans les régions suivantes :

  • USA Est (Virginie du Nord)

  • USA Est (Ohio)

  • USA Ouest (Californie du Nord)

  • USA Ouest (Oregon)

  • Asie-Pacifique (Mumbai)

  • Asie-Pacifique (Osaka)

  • Asie-Pacifique (Séoul)

  • Asie-Pacifique (Tokyo)

  • Asie-Pacifique (Singapour)

  • Asie-Pacifique (Sydney)

  • Canada (Centre)

  • Europe (Francfort)

  • Europe (Irlande)

  • Europe (Londres)

  • Europe (Paris)

  • Europe (Stockholm)

  • Amérique du Sud (São Paulo)

Utiliser l'AMI Amazon Linux 2 (Neuron) optimisée pour Amazon ECS

Amazon ECS fournit une AMI optimisée pour Amazon ECS basée sur Amazon Linux 2 pour les charges de travail AWS Trainium et AWS Inferentia. Il est livré avec les pilotes AWS Neuron et le runtime pour Docker. Cette AMI facilite l'exécution de charges de travail d'inférence de machine learning sur Amazon ECS.

Nous vous recommandons d'utiliser l'AMI Amazon Linux 2 (Neuron) optimisée pour Amazon ECS lors du lancement de vos instances Trn1, Inf1 et Inf2 Amazon EC2.

Vous pouvez récupérer l'AMI Amazon Linux 2 (Neuron) actuellement optimisée pour Amazon ECS à l' AWS CLI aide de la commande suivante.

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

L'AMI Amazon Linux 2 (Neuron) optimisée pour Amazon ECS est prise en charge dans les régions suivantes :

  • USA Est (Virginie du Nord)

  • USA Est (Ohio)

  • USA Ouest (Californie du Nord)

  • USA Ouest (Oregon)

  • Asie-Pacifique (Mumbai)

  • Asie-Pacifique (Osaka)

  • Asie-Pacifique (Séoul)

  • Asie-Pacifique (Tokyo)

  • Asie-Pacifique (Singapour)

  • Asie-Pacifique (Sydney)

  • Canada (Centre)

  • Europe (Francfort)

  • Europe (Irlande)

  • Europe (Londres)

  • Europe (Paris)

  • Europe (Stockholm)

  • Amérique du Sud (São Paulo)

Exigences relatives à la définition de tâche

Pour déployer Neuron sur Amazon ECS, votre définition de tâche doit contenir la définition du conteneur d'un conteneur prédéfini servant le modèle d'inférence pour. TensorFlow Il est fourni par AWS Deep Learning Containers. Ce conteneur contient le runtime AWS Neuron et l'application TensorFlow Serving. Au démarrage, ce conteneur récupère votre modèle depuis Amazon S3, lance Neuron TensorFlow Serving avec le modèle enregistré et attend les demandes de prédiction. Dans l'exemple suivant, l'image du conteneur est TensorFlow 1.15 et Ubuntu 18.04. Une liste complète des Deep Learning Containers prédéfinis optimisés pour Neuron est disponible sur. GitHub Pour plus d'informations, consultez la section Utilisation de AWS Neuron TensorFlow Serving.

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

Alternativement, vous pouvez également créer votre propre image de conteneur sidecar Neuron. Pour plus d'informations, consultez Tutoriel : Neuron TensorFlow Serving dans le guide du AWS Deep Learning AMI développeur.

La définition de tâche doit être spécifique au type d'instance unique. Vous devez configurer un conteneur pour utiliser des appareils AWS Trainium ou AWS Inferentia spécifiques disponibles sur l'instance de conteneur hôte. Vous pouvez effectuer cette opération à l'aide du paramètre linuxParameters. Le tableau suivant détaille les cartes et les puces qui sont spécifiques à chaque type d'instance.

Type d'instance vCPU RAM (Gio) AWS puces accélératrices ML Chemins de l'appareil
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