View a markdown version of this page

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

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

Les instances Amazon EC2 Trn1 et Trn2 sont alimentées par AWS Trainium chips. 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 Neurone sur une instance Trn1 ou Trn2. Ensuite, vous pouvez 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 du AWS Puces d'inférentialité.

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, des outils d'exécution et de profilage qui optimisent les performances d'apprentissage automatique de AWS puces d'apprentissage automatique. AWS Neuron prend en charge les frameworks d'apprentissage automatique populaires tels que TensorFlow, PyTorchet 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 un mélange 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 prenant en charge AWS Neurone.

    Important

    Les applications qui utilisent d'autres frameworks peuvent ne pas avoir de meilleures 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 d'appareils Neuron gérée — Utilisez le resourceRequirements paramètre avec 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 plus d’informations, consultez Allocation d'appareils Neuron gérée.

    • Spécification manuelle du dispositif 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 plus d’informations, consultez Spécification manuelle du dispositif Neuron.

    Important

    Utilisez systématiquement une seule approche pour éviter les conflits.

Allocation d'appareils Neuron gérée

Avec les instances gérées, vous pouvez utiliser resourceRequirements paramètre dans 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 avec accès à tous les appareils Neuron de l'instance. Comme la tâche nécessite un accès exclusif à tous les appareils, une seule tâche Neuron s'exécute par instance.

Note

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

Sélection d'instances de neurones

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

  • acceleratorManufacturers — Utilisation amazon-web-services pour sélectionner des instances avec AWS accélérateurs (y compris Inferentia et Trainium).

  • acceleratorNames — Utilisation inferentia2, trainium, ou trainium2 pour sélectionner des puces accélératrices spécifiques.

  • allowedInstanceTypes — Utilisation 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 un resourceRequirements entrée avec type NeuronDevice et valeur ALL. 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 spécifier NeuronDevice dans resourceRequirements.

  • Vous ne pouvez pas combiner resourceRequirements avec 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 le DescribeTasks Fonctionnement de l'API. La réponse comprend un neuronDeviceIds champ sur chaque conteneur qui affiche les identifiants des appareils Neuron attribués. Vous pouvez également appeler le DescribeContainerInstances Fonctionnement de l'API à afficher NEURON_DEVICES dans le registeredResources et remainingResources champs pour l'instance de conteneur.

Pour un exemple de définition de tâche, voir Exemples de définitions de tâches neuronales.

Spécification manuelle du dispositif Neuron

Avec cette approche, vous spécifiez manuellement AWS Trainium ou AWS Inferentia place les chemins du périphérique 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 vous assurer que la tâche est lancée sur le type d'instance que vous spécifiez. Pour plus d’informations, consultez 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 AWS Trainium ou AWS Dispositifs d'inférence 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
trn2.48xlarge 192 2048 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 4 16 1 /dev/neuron0
inf2.8xlarge 32 128 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, voir Exemples de définitions de tâches neuronales.

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 AWS Trainium et AWS Charges de travail inférentielles. Il est livré avec AWS Pilotes Neuron et environnement d'exécution 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 Amazon ECS-optimized AMI Amazon Linux 2023 (Neuron) lors du lancement de vos instances Amazon EC2 Trn1, Inf1 et Inf2.

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

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