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
Les instances Amazon EC2 Trn1 et Trn2 sont alimentées par AWS Trainium
Les instances Inf1 et Inf2 d'Amazon EC2 sont alimentées par des puces AWS Inferentia
Les modèles de machine learning sont déployés sur des conteneurs à l'aide d'AWS Neuron
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
resourceRequirementsparamètre avec typeNeuronDevicedans 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.devicesparamè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— Utilisationamazon-web-servicespour sélectionner des instances avec AWS accélérateurs (y compris Inferentia et Trainium). -
acceleratorNames— Utilisationinferentia2,trainium, outrainium2pour sélectionner des puces accélératrices spécifiques. -
allowedInstanceTypes— Utilisationinf*ettrn*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
NeuronDevicedansresourceRequirements. -
Vous ne pouvez pas combiner
resourceRequirementsavec typeNeuronDeviceetlinuxParameters.devicespour 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
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