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 du GPU
Amazon ECS prend en charge les charges de travail qui utilisent GPUs, lorsque vous créez des clusters, avec des instances de conteneur compatibles GPUs. Les instances de conteneur EC2 basées sur le GPU Amazon qui utilisent les types d'instances p2, p3, p5, g3, g4 et g5 donnent accès à NVIDIA. GPUs Pour plus d'informations, consultez la section Instances de calcul accéléré Linux dans le guide Amazon EC2 Instance Types.
Amazon ECS fournit une AMI optimisée pour le GPU qui est fournie avec des pilotes de noyau NVIDIA préconfigurés et une exécution du GPU du Docker. Pour de plus amples informations, veuillez consulter Linux optimisé pour Amazon ECS AMIs.
Vous pouvez en désigner un certain nombre GPUs dans votre définition de tâche pour prendre en compte le placement des tâches au niveau du conteneur. Amazon ECS planifie les instances de conteneur disponibles qui prennent en charge GPUs et épinglent GPUs les conteneurs physiques aux conteneurs appropriés pour des performances optimales.
Les types d'instances EC2 basés sur le GPU Amazon suivants sont pris en charge. Pour plus d'informations, consultez les instances Amazon EC2 P2, les instances
Type d’instance | GPUs | Mémoire GPU (Gio) | v CPUs | 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 |
g 6,2 x large | 1 | 24 | 8 | 32 |
g 6,4 x large | 1 | 24 | 16 | 64 |
g 6,8 x large | 1 | 24 | 32 | 128 |
g6.16.x large | 1 | 24 | 64 | 256 |
g 6,12 x large | 4 | 96 | 48 | 192 |
g 6,24 x large | 4 | 96 | 96 | 384 |
g 6,48 x large | 8 | 192 | 192 | 768 |
g6.metal | 8 | 192 | 192 | 768 |
gr6,4 x large | 1 | 24 | 16 | 128 |
g6e.xlarge | 1 | 48 | 4 | 32 |
g6e.2xlarge | 1 | 48 | 8 | 64 |
g6e.4xlarge | 1 | 48 | 16 | 128 |
6 x 8 x large | 1 | 48 | 32 | 256 |
g6e16.x large | 1 | 48 | 64 | 512 |
g6e12.x large | 4 | 192 | 48 | 384 |
g6e24.x large | 4 | 192 | 96 | 768 |
g6e48.x large | 8 | 384 | 192 | 1536 |
gr6,8 x large | 1 | 24 | 32 | 256 |
Vous pouvez récupérer l'identifiant Amazon Machine Image (AMI) pour Amazon ECS-Optimized AMIs en interrogeant l'API AWS Systems Manager Parameter Store. Avec ce paramètre, vous n'avez pas besoin de rechercher manuellement l'AMI optimisée pour Amazon ECS. IDs Pour plus d'informations sur l'API Systems Manager Parameter Store, consultez GetParameter. L'utilisateur que vous utilisez doit disposer de l'autorisation IAM ssm:GetParameter
pour récupérer les métadonnées de l'AMI optimisée pour Amazon ECS.
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region
us-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 à la version 20230912
des AMI optimisées pour le GPU Amazon ECS. Si vous devez continuer à utiliser des instances p2, veuillez consulter Que faire si vous avez besoin d'une instance P2.
Les mises à jour sur place des pilotes NVIDIA/CUDA 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 les points suivants avant de commencer à travailler avec GPUs 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-gpu
est 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_SUPPORT
surtrue
dans 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 les instances de conteneur.
L'exemple suivant lance une tâche sur une instance de conteneur
g4dn.xlarge
dans 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 Configurations spécialisées avec Docker
. Amazon ECS définit la valeur de la variable d' NVIDIA_VISIBLE_DEVICES
environnement comme une liste des périphériques GPU IDs qu'Amazon ECS attribue au conteneur. 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 sur la version
20230929
et les versions ultérieures des AMI optimisées pour le GPU Amazon ECS. -
La famille de types d'instance g4 est prise en charge sur la version
20230913
et les versions ultérieures des AMI optimisées pour le GPU Amazon ECS. Pour de plus amples informations, veuillez consulter Linux optimisé pour Amazon ECS AMIs. 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 utiliser la EC2 console Amazon ou l'API et enregistrer manuellement les instances dans votre cluster. AWS CLI -
Le type d'instance p4d.24xlarge ne fonctionne qu'avec CUDA 11 ou version ultérieure.
-
L'AMI optimisée pour le GPU Amazon ECS IPv6 est activée, ce qui pose des problèmes lors de son utilisation.
yum
Ce problème peut être résolu en configurantyum
pour l'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 base NVIDIA/CUDA, vous devez définir la variable d'exécution de conteneur
NVIDIA_DRIVER_CAPABILITIES
sur l'une des valeurs suivantes :-
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. -
-
GPUs ne sont pas pris en charge sur les conteneurs Windows.
Partagez GPUs
Lorsque vous souhaitez partager GPUs, 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 aucune GPUs ressource devant être partagée.
Ajoutez les données utilisateur suivantes à vos instances lorsque vous souhaitez les partager GPUs. NVIDIA deviendra ainsi le moteur d'exécution du conteneur Docker par défaut sur l'instance de conteneur afin que tous les conteneurs Amazon ECS puissent utiliser le GPUs. Pour plus d'informations, consultez la section Exécuter des commandes lorsque vous lancez une EC2 instance avec saisie de données utilisateur dans le guide de EC2 l'utilisateur Amazon.
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'
NVIDIA_VISIBLE_DEVICES
environnement sur votre conteneur. Vous pouvez le faire en spécifiant la variable d'environnement dans votre définition de tâche. Pour plus d'informations sur les valeurs valides, consultez l'é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écuter des commandes lorsque vous lancez une EC2 instance avec saisie de données utilisateur dans le guide de EC2 l'utilisateur Amazon.
Utiliser la dernière AMI optimisée pour le GPU prise en charge
Vous pouvez utiliser la version 20230906
de l'AMI optimisée pour le GPU 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 la dernière AMI optimisée pour le GPU 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, puis installe les pilotes Nvidia 470/Cuda11.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éer votre propre AMI optimisée pour le GPU compatible avec P2
Vous pouvez créer votre propre AMI Amazon ECS personnalisée optimisée pour le GPU et 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.hcl
ouoverrides.auto.pkrvars.hcl
. -
Exécutez la commande suivante pour créer une EC2 AMI privée compatible P2.
Remplacez la région par la région de l'instance.
REGION=
region
make 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