View a markdown version of this page

Définitions de tâches Amazon ECS pour AWS Charges de travail liées à l'apprentissage automatique des neurones - 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 AWS Charges de travail liées à l'apprentissage automatique des neurones

Vous pouvez utiliser les instances Amazon EC2 Trn1, Amazon EC2 Trn2, Amazon EC2Inf1 (Inf1 n'est pris en charge que sur le type de lancement EC2) et les instances Amazon EC2 Inf2 avec vos clusters pour les charges de travail d'apprentissage automatique.

Les instances Amazon EC2 Trn1 et Trn2 sont alimentées par des puces Trainium.AWS Ces instances fournissent une formation performante et peu coûteuse pour machine learning dans le cloud. Vous pouvez entraîner un modèle d'inférence d'apprentissage automatique à l'aide d'un framework d'apprentissage automatique avec AWS Neuron sur une instance Trn1 ou Trn2. Vous pouvez ensuite exécuter le modèle sur une instance Inf1 (Inf1 n'est pris en charge que sur le type de lancement EC2) ou sur une instance Inf2 pour utiliser l'accélération des puces Inferentia. AWS

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 :

  • Selon le type de lancement, vos clusters peuvent contenir une combinaison de Trn1, Trn2, 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 frameworks peuvent ne pas avoir amélioré les performances sur les instances Trn1, Trn2, Inf1 et Inf2.

  • Amazon ECS prend en charge deux approches pour configurer l'accès aux appareils Neuron :

    • Allocation de périphériques Neuron gérés : utilisez le resourceRequirements paramètre avec le type NeuronDevice dans la définition de votre conteneur. Amazon ECS découvre et attribue automatiquement les appareils Neuron à vos conteneurs. Disponible uniquement sur les instances gérées. Pour de plus amples informations, veuillez consulter Allocation d'appareils Neuron gérés.

    • Spécification manuelle des appareils Neuron : utilisez le linuxParameters.devices paramètre pour spécifier explicitement les chemins des périphériques Neuron. Disponible à la fois sur le type de lancement EC2 et sur les instances gérées. Pour de plus amples informations, veuillez consulter Spécification manuelle du dispositif Neuron.

    Important

    N'utilisez qu'une seule approche de manière cohérente pour éviter les conflits.

Allocation d'appareils Neuron gérés

Avec Managed Instances, vous pouvez utiliser le resourceRequirements paramètre de votre définition de conteneur pour demander des appareils Neuron. Amazon ECS découvre automatiquement les appareils Neuron sur l'instance, les affecte à votre tâche et configure le conteneur de manière à ce qu'il donne accès à tous les appareils Neuron de l'instance. La tâche nécessitant un accès exclusif à tous les appareils, une seule tâche Neuron est exécutée par instance.

Note

Inf1les instances ne sont prises en charge que sur le type de lancement EC2. Pour utiliser des instances Inf1, consultezSpécification manuelle du dispositif Neuron.

Sélection d'instances de neurones

Pour sélectionner des types d' Neuron-enabled instances pour les charges de travail de vos instances gérées, utilisez l'instanceRequirementsobjet dans le modèle de lancement du fournisseur de capacité. Vous pouvez utiliser les attributs suivants pour sélectionner Neuron-enabled des instances :

  • acceleratorManufacturersamazon-web-services À utiliser pour sélectionner des instances dotées d' AWS accélérateurs (y compris Inferentia et Trainium).

  • acceleratorNames— Utilisez inferentia2 ou trainium2 pour sélectionner des puces d'accélérateur spécifiques. trainium

  • allowedInstanceTypes— Utilisez inf* et trn* pour sélectionner les types d'instances Neuron par leur nom.

L'exemple suivant utilise allowedInstanceTypes :

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

Définition de tâche

Pour demander des appareils Neuron dans votre définition de tâche, ajoutez une resourceRequirements entrée avec le type NeuronDevice et la valeurALL. Cela donne au conteneur un accès exclusif à tous les appareils Neuron de l'instance.

Les contraintes suivantes s’appliquent :

  • Au plus une définition de conteneur peut être spécifiée NeuronDevice dansresourceRequirements.

  • Vous ne pouvez pas combiner resourceRequirements avec le type NeuronDevice et linuxParameters.devices pour les appareils Neuron dans la même définition de tâche.

Une fois votre tâche lancée, vous pouvez vérifier l'attribution de l'appareil Neuron en appelant l'opération DescribeTasks API. La réponse inclut un neuronDeviceIds champ sur chaque conteneur qui indique les identifiants des appareils Neuron assignés. Vous pouvez également appeler l'opération DescribeContainerInstances API pour afficher NEURON_DEVICES les remainingResources champs registeredResources et de l'instance de conteneur.

Pour un exemple de définition de tâche, voirExemples de définitions de tâches Neuron.

Spécification manuelle du dispositif Neuron

Avec cette approche, vous spécifiez manuellement les chemins des appareils AWS Trainium ou AWS Inferentia dans votre définition de tâche à l'aide du linuxParameters.devices paramètre. Cette approche fonctionne à la fois sur le type de lancement EC2 et sur les instances gérées.

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. Vous pouvez exécuter autant de tâches qu'il y a de puces sur l'instance en affectant différents appareils à chaque tâche.

Pour le type de lancement EC2, vous pouvez utiliser les attributs du type d'instance lorsque vous configurez les contraintes de placement des tâches afin de garantir que la tâche est lancée sur le type d'instance que vous spécifiez. Pour de plus amples informations, veuillez consulter Comment Amazon ECS place les tâches sur des instances de conteneur.

Exigences relatives à la définition de tâche

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 vCPUs 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
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

Pour un exemple de définition de tâche, voirExemples de définitions de tâches Neuron.

Instances gérées

Les instances gérées utilisent automatiquement une AMI qui inclut le pilote Neuron. Aucune configuration d'AMI supplémentaire n'est requise.

Type de lancement EC2

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 ECS-optimized Amazon Amazon Linux 2023 (Neuron) lors du lancement de vos instances Amazon EC2 Trn1, Inf1 et Inf2.

Vous pouvez récupérer l'AMI Amazon ECS-optimized Amazon Linux 2023 (Neuron) actuelle à l' AWS CLI aide de la commande suivante.

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