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 GPU
Amazon ECS supporte les charges de travail utilisant des GPU lorsque vous créez des clusters avec des instances de conteneurs prenant en charge les GPU. Les instances de GPU-based conteneur Amazon EC2 qui utilisent les types d'instances p2, p3, p5, g3, g4 et g5 donnent accès aux GPU NVIDIA. Pour plus d’informations, consultez la section Instances de calcul accélérées Linux du Guide des types d’instance Amazon EC2.
Amazon ECS fournit une GPU-optimized AMI fournie avec des pilotes de noyau NVIDIA préconfigurés et un environnement d'exécution du processeur graphique Docker. Pour de plus amples informations, veuillez consulter AMI Amazon ECS-optimized Linux.
Vous pouvez désigner plusieurs GPU dans votre définition de tâche pour le placement des tâches au niveau d'un conteneur. Amazon ECS planifie les instances de conteneurs disponibles qui prennent en charge les GPU et associe les GPU physiques aux conteneurs appropriés pour des performances optimales.
Les types d' GPU-based instances Amazon EC2 suivants sont pris en charge. Pour plus d’informations, consultez les sections Instances Amazon EC2 P2
| Type d’instance | GPU | Mémoire GPU (Gio) | vCPUs | Mémoire (Gio) |
|---|---|---|---|---|
|
p3.2xlarge |
1 |
16 |
8 |
61 |
|
p3.8xlarge |
4 |
64 |
32 |
244 |
|
p3.16xlarge |
8 |
128 |
64 |
488 |
|
p3dn.24xlarge |
8 |
256 |
96 |
768 |
|
p4d.24xlarge |
8 | 320 | 96 | 1 152 |
| p5.48xlarge | 8 | 640 | 192 | 2048 |
|
g3s.xlarge |
1 |
8 |
4 |
30,5 |
|
g3.4xlarge |
1 |
8 |
16 |
122 |
|
g3.8xlarge |
2 |
16 |
32 |
244 |
|
g3.16xlarge |
4 |
32 |
64 |
488 |
|
g4dn.xlarge |
1 |
16 |
4 |
16 |
|
g4dn.2xlarge |
1 |
16 |
8 |
32 |
|
g4dn.4xlarge |
1 |
16 |
16 |
64 |
|
g4dn.8xlarge |
1 |
16 |
32 |
128 |
|
g4dn.12xlarge |
4 |
64 |
48 |
192 |
|
g4dn.16xlarge |
1 |
16 |
64 |
256 |
|
g5.xlarge |
1 |
24 |
4 |
16 |
|
g5.2xlarge |
1 |
24 |
8 |
32 |
|
g5.4xlarge |
1 |
24 |
16 |
64 |
|
g5.8xlarge |
1 |
24 |
32 |
128 |
|
g5.16xlarge |
1 |
24 |
64 |
256 |
|
g5.12xlarge |
4 |
96 |
48 |
192 |
|
g5.24xlarge |
4 |
96 |
96 |
384 |
|
g5.48xlarge |
8 |
192 |
192 |
768 |
| g6.xlarge | 1 | 24 | 4 | 16 |
| g6.2xlarge | 1 | 24 | 8 | 32 |
| g6.4xlarge | 1 | 24 | 16 | 64 |
| g6.8xlarge | 1 | 24 | 32 | 128 |
| g6.16.xlarge | 1 | 24 | 64 | 256 |
| g6.12xlarge | 4 | 96 | 48 | 192 |
| g6.24xlarge | 4 | 96 | 96 | 384 |
| g6.48xlarge | 8 | 192 | 192 | 768 |
| g6.metal | 8 | 192 | 192 | 768 |
| gr6.4xlarge | 1 | 24 | 16 | 128 |
| g6e.xlarge | 1 | 48 | 4 | 32 |
| g6e.2xlarge | 1 | 48 | 8 | 64 |
| g6e.4xlarge | 1 | 48 | 16 | 128 |
| g6e.8xlarge | 1 | 48 | 32 | 256 |
| g6e16.xlarge | 1 | 48 | 64 | 512 |
| g6e12.xlarge | 4 | 192 | 48 | 384 |
| g6e24.xlarge | 4 | 192 | 96 | 768 |
| g6e48.xlarge | 8 | 384 | 192 | 1536 |
| gr6.8xlarge | 1 | 24 | 32 | 256 |
Vous pouvez récupérer l'identifiant Amazon Machine Image (AMI) des ECS-optimized AMI Amazon en interrogeant l'API AWS Systems Manager Parameter Store. Avec ce paramètre, vous n'avez pas besoin de rechercher manuellement les identifiants Amazon ECS-optimized AMI. Pour plus d'informations sur l'API du magasin de paramètres de Systems Manager, consultez GetParameter. L'utilisateur que vous utilisez doit disposer de l'autorisation ssm:GetParameter IAM pour récupérer les métadonnées Amazon ECS-optimized AMI.
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --regionus-east-1
Considérations
Note
La prise en charge du type de famille d'instances g2 est obsolète.
Le type de famille d'instances p2 n'est pris en charge que sur les versions antérieures à celles 20230912 de l' GPU-optimized AMI Amazon ECS. Si vous devez continuer à utiliser des instances p2, veuillez consulter Que faire si vous avez besoin d'une instance P2.
In-place les mises à jour des NVIDIA/CUDA pilotes sur ces deux types de familles d'instances peuvent entraîner des défaillances de la charge de travail du GPU.
Nous vous recommandons de prendre en compte ce qui suit avant de commencer à utiliser des GPU sur Amazon ECS.
-
Vos clusters peuvent contenir une combinaison d'instances de conteneur GPU et non GPU.
-
Vous pouvez exécuter des charges de travail GPU sur des instances externes. Lorsque vous enregistrez une instance externe auprès de votre cluster, assurez-vous que l'indicateur
--enable-gpuest inclus dans le script d'installation. Pour de plus amples informations, veuillez consulter Enregistrement d’une instance externe dans un cluster Amazon ECS. -
Vous devez définir
ECS_ENABLE_GPU_SUPPORTsurtruedans votre fichier de configuration d'agent. Pour de plus amples informations, veuillez consulter Configuration de l'agent de conteneur Amazon ECS. -
Lorsque vous exécutez une tâche 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 afin de déterminer sur quelles instances de conteneur la tâche est lancée. Ainsi, vous pouvez utiliser plus efficacement vos ressources. Pour de plus amples informations, veuillez consulter Comment Amazon ECS place les tâches sur des instances de conteneur.
L'exemple suivant lance une tâche sur une instance de conteneur
g4dn.xlargedans votre cluster par défaut.aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == g4dn.xlarge" --region us-east-2 -
Pour chaque conteneur dont les besoins en ressources GPU sont spécifiés dans la définition du conteneur, Amazon ECS définit l'exécution du conteneur comme étant celle du conteneur NVIDIA.
-
L'exécution du conteneur NVIDIA nécessite que certaines variables d'environnement soient définies dans le conteneur pour fonctionner correctement. Pour obtenir la liste de ces variables d’environnement, consultez la section Configurations spécialisées avec Docker
. Amazon ECS définit la valeur de variable d'environnement NVIDIA_VISIBLE_DEVICESen tant que liste des ID de périphérique GPU assignés au conteneur par Amazon ECS. Pour les autres variables d'environnement requises, Amazon ECS ne les définit pas. Assurez-vous que votre image de conteneur les définit ou qu'elles sont définies dans la définition du conteneur. -
La famille de types d'instances p5 est prise en charge dans
20230929les versions et ultérieures de l' GPU-optimized AMI Amazon ECS. -
La famille de types d'instances g4 est prise en charge dans
20230913les versions et ultérieures de l' GPU-optimized AMI Amazon ECS. Pour de plus amples informations, veuillez consulter AMI Amazon ECS-optimized Linux. Elle n'est pas prise en charge dans le flux de travail Create Cluster (Créer un cluster) dans la console Amazon ECS. Pour utiliser ces types d'instances, vous devez soit utiliser la console Amazon EC2 AWS CLI, soit l'API et enregistrer manuellement les instances dans votre cluster. -
Le type d'instance p4d.24xlarge ne fonctionne qu'avec CUDA 11 ou version ultérieure.
-
IPv6 est activé sur l' GPU-optimized AMI Amazon ECS, ce qui pose des problèmes lors de son utilisation
yum. Cela peut être résolu en configurantyumpour utiliser IPv4 avec la commande suivante :echo "ip_resolve=4" >> /etc/yum.conf -
Lorsque vous créez une image de conteneur qui n'utilise pas les images de NVIDIA/CUDA base, vous devez définir l'une des valeurs suivantes pour la variable d'exécution du
NVIDIA_DRIVER_CAPABILITIESconteneur :-
utility,compute -
all
Pour savoir comment définir la variable, veuillez consulter Contrôle de l'exécution du conteneur NVIDIA
sur le site Web de NVIDIA. -
-
Les GPU ne sont pas pris en charge sur les conteneurs Windows.
Partage de GPU
Lorsque vous souhaitez partager des GPU, vous devez configurer les éléments suivants.
-
Supprimez les exigences en matière de ressources GPU de vos définitions de tâches afin qu’Amazon ECS ne réserve aucun GPU à partager.
-
Ajoutez les données utilisateur suivantes à vos instances lorsque vous souhaitez partager des GPU. NVIDIA deviendra ainsi le moteur d’exécution par défaut du conteneur Docker sur l’instance de conteneur afin que tous les conteneurs Amazon ECS puissent utiliser les GPU. Pour plus d’informations, consultez la section Exécution de commandes lors du lancement d’une instance EC2 avec des données utilisateur dans le Guide de l’utilisateur Amazon EC2.
const userData = ec2.UserData.forLinux(); userData.addCommands( 'sudo rm /etc/sysconfig/docker', 'echo DAEMON_MAXFILES=1048576 | sudo tee -a /etc/sysconfig/docker', 'echo OPTIONS="--default-ulimit nofile=32768:65536 --default-runtime nvidia" | sudo tee -a /etc/sysconfig/docker', 'echo DAEMON_PIDFILE_TIMEOUT=10 | sudo tee -a /etc/sysconfig/docker', 'sudo systemctl restart docker', ); -
Définissez la variable d’environnement
NVIDIA_VISIBLE_DEVICESsur votre conteneur. Pour ce faire, vous pouvez spécifier la variable d’environnement dans votre définition de tâche. Pour plus d’informations sur les valeurs valides, consultez la sectionÉnumération des GPUsur le site de documentation de NVIDIA.
Que faire si vous avez besoin d'une instance P2
Si vous avez besoin d'utiliser une instance P2, vous pouvez utiliser l'une des options suivantes pour continuer à utiliser ces instances.
Vous devez modifier les données utilisateur de l'instance pour les deux options. Pour plus d’informations, consultez la section Exécution de commandes lors du lancement d’une instance EC2 avec des données utilisateur dans le Guide de l’utilisateur Amazon EC2.
Utiliser la dernière GPU-optimized AMI prise en charge
Vous pouvez utiliser la 20230906 version de l' GPU-optimized AMI et ajouter les éléments suivants aux données utilisateur de l'instance.
Remplacez cluster-name par le nom de votre cluster.
#!/bin/bash echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
Utiliser l' GPU-optimized AMI la plus récente et mettre à jour les données utilisateur
Vous pouvez ajouter ce qui suit aux données utilisateur de l'instance. Cela désinstalle les pilotes Nvidia 535/Cuda12 2.2, puis installe les pilotes Nvidia 470/Cuda11 2.4 et corrige la version.
#!/bin/bash yum remove -y cuda-toolkit* nvidia-driver-latest-dkms* tmpfile=$(mktemp) cat >$tmpfile <<EOF [amzn2-nvidia] name=Amazon Linux 2 Nvidia repository mirrorlist=\$awsproto://\$amazonlinux.\$awsregion.\$awsdomain/\$releasever/amzn2-nvidia/latest/\$basearch/mirror.list priority=20 gpgcheck=1 gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub enabled=1 exclude=libglvnd-* EOF mv $tmpfile /etc/yum.repos.d/amzn2-nvidia-tmp.repo yum install -y system-release-nvidia cuda-toolkit-11-4 nvidia-driver-latest-dkms-470.182.03 yum install -y libnvidia-container-1.4.0 libnvidia-container-tools-1.4.0 nvidia-container-runtime-hook-1.4.0 docker-runtime-nvidia-1 echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf nvidia-smi
Créez votre propre AMI compatible GPU-optimized P2
Vous pouvez créer votre propre GPU-optimized AMI Amazon ECS personnalisée compatible avec les instances P2, puis lancer des instances P2 à l'aide de l'AMI.
-
Exécutez la commande suivante pour cloner le
amazon-ecs-ami repo.git clone https://github.com/aws/amazon-ecs-ami -
Définissez l'agent Amazon ECS requis et les versions de l'AMI Amazon Linux source dans
release.auto.pkrvars.hclouoverrides.auto.pkrvars.hcl. -
Exécutez la commande suivante pour créer une AMI EC2 privée compatible avec P2.
Remplacez la région par la région de l'instance.
REGION=regionmake al2keplergpu -
Utilisez l'AMI avec les données utilisateur de l'instance suivantes pour vous connecter au cluster Amazon ECS.
Remplacez cluster-name par le nom de votre cluster.
#!/bin/bash echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config