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
Les instances Amazon EC2 Trn1 et Trn2 sont alimentées par des puces Trainium.AWS
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 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
resourceRequirementsparamètre avec le 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 de plus amples informations, veuillez consulter Allocation d'appareils Neuron gérés. -
Spécification manuelle des appareils 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 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 :
-
acceleratorManufacturers—amazon-web-servicesÀ utiliser pour sélectionner des instances dotées d' AWS accélérateurs (y compris Inferentia et Trainium). -
acceleratorNames— Utilisezinferentia2outrainium2pour sélectionner des puces d'accélérateur spécifiques.trainium -
allowedInstanceTypes— Utilisezinf*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 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
NeuronDevicedansresourceRequirements. -
Vous ne pouvez pas combiner
resourceRequirementsavec le 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 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
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