

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.

# Exécuter des tâches GPU
<a name="gpu-jobs"></a>

Les tâches GPU vous aident à exécuter des tâches qui utilisent celles d'une instance GPUs.

Les types d'instances GPU Amazon EC2 suivants sont pris en charge. [https://aws.amazon.com/ec2/instance-types/trn2/](https://aws.amazon.com/ec2/instance-types/trn2/) [ 2 instances Dl1 et instances](https://aws.amazon.com/ec2/instance-types/dl1/) [Amazon EC2 Dl2.](https://aws.amazon.com/ec2/instance-types/dl2q/)


|  Type d’instance  |  GPUs  |  Mémoire GPU  |  v CPUs  |  Mémoire  |  Bande passante du réseau  | 
| --- | --- | --- | --- | --- | --- | 
|  g3s.xlarge  |  1  |  8 GiO  |  4  |  30,5 GiB  |  10 Gbit/s  | 
|  g3.4xlarge  |  1  |  8 GiO  |  16  |  122 GiB  |  Jusqu'à 10 Gbit/s  | 
|  g3.8xlarge  |  2  |  16 GiO  |  32  |  244 GiB  |  10 Gbit/s  | 
|  g3.16xlarge  |  4  |  32 GiO  |  64  |  488 GiB  |  25 Gb/s  | 
|  g4dn.xlarge  |  1  |  16 GiO  |  4  |  16 GiO  |  Jusqu'à 25 Gbit/s  | 
|  g4dn.2xlarge  |  1  |  16 GiO  |  8  |  32 GiO  |  Jusqu'à 25 Gbit/s  | 
|  g4dn.4xlarge  |  1  |  16 GiO  |  16  |  64 Go  |  Jusqu'à 25 Gbit/s  | 
|  g4dn.8xlarge  |  1  |  16 GiO  |  32  |  128 Gio  |  50 Gb/s  | 
|  g4dn.12xlarge  |  4  |  64 Go  |  48  |  192 Go  |  50 Gb/s  | 
|  g4dn.16xlarge  |  1  |  16 GiO  |  64  |  256 Gio  |  50 Gb/s  | 
|  g5.xlarge  |  1  |  24 GiO  |  4  |  16 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g5.2xlarge  |  1  |  24 GiO  |  8  |  32 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g5.4xlarge  |  1  |  24 GiO  |  16  |  64 Go  |  Jusqu'à 25 Gbit/s  | 
|  g5.8xlarge  |  1  |  24 GiO  |  32  |  128 Gio  |  25 Gb/s  | 
|  g5.16xlarge  |  1  |  24 GiO  |  64  |  256 Gio  |  25 Gb/s  | 
|  g5.12xlarge  |  4  |  96 GiB  |  48  |  192 Go  |  40 Gbit/s  | 
|  g5.24xlarge  |  4  |  96 GiB  |  96  |  384 Go  |  50 Gb/s  | 
|  g5.48xlarge  |  8  |  192 Go  |  192  |  768 Gio  |  100 Gbit/s  | 
|  g5g.xlarge  |  1  |  16 GiO  |  4  |  8 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g5g.2xlarge  |  1  |  16 GiO  |  8  |  16 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g5g.4xlarge  |  1  |  16 GiO  |  16  |  32 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g5g.8xlarge  |  1  |  16 GiO  |  32  |  64 Go  |  12 Gb/s  | 
|  g5g.16xlarge  |  2  |  32 GiO  |  64  |  128 Gio  |  25 Gb/s  | 
|  g5g.metal  |  2  |  32 GiO  |  64  |  128 Gio  |  25 Gb/s  | 
|  g6.xlarge  |  1  |  24 GiO  |  4  |  16 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g6.2xlarge  |  1  |  24 GiO  |  8  |  32 GiO  |  Jusqu'à 10 Gbit/s  | 
|  g6.4xlarge  |  1  |  24 GiO  |  16  |  64 Go  |  Jusqu'à 25 Gbit/s  | 
|  g6.8xlarge  |  1  |  24 GiO  |  32  |  128 Gio  |  25 Gb/s  | 
|  g6.16xlarge  |  1  |  24 GiO  |  64  |  256 Gio  |  25 Gb/s  | 
|  g6.12xlarge  |  4  |  96 GiB  |  48  |  192 Go  |  40 Gbit/s  | 
|  g6.24xlarge  |  4  |  96 GiB  |  96  |  384 Go  |  50 Gb/s  | 
|  g6.48xlarge  |  8  |  192 Go  |  192  |  768 Gio  |  100 Gbit/s  | 
|  g6e.xlarge  |  1  |  48 GiO  |  4  |  32 GiO  |  Jusqu'à 20 Gbit/s  | 
|  g6e.2xlarge  |  1  |  48 GiO  |  8  |  64 Go  |  Jusqu'à 20 Gbit/s  | 
|  g6e.4xlarge  |  1  |  48 GiO  |  16  |  128 Gio  |  20 Gbit/s  | 
|  g6e.8xlarge  |  1  |  48 GiO  |  32  |  256 Gio  |  25 Gb/s  | 
|  g6e.16xlarge  |  1  |  48 GiO  |  64  |  512 Gio  |  35 Gbit/s  | 
|  g6e.12xlarge  |  4  |  192 Go  |  48  |  384 Go  |  100 Gbit/s  | 
|  g6e.24xlarge  |  4  |  192 Go  |  96  |  768 Gio  |  200 Gb/s  | 
|  g6e.48xlarge  |  8  |  384 Go  |  192  |  1536 GiB  |  400 Gb/s  | 
|  gr6.4xlarge  |  1  |  24 GiO  |  16  |  128 Gio  |  Jusqu'à 25 Gbit/s  | 
|  gr6.8xlarge  |  1  |  24 GiO  |  32  |  256 Gio  |  25 Gb/s  | 
|  p2.xlarge  |  1  |  12 GiO  |  4  |  61 GiB  |  Élevée  | 
|  p2.8xlarge  |  8  |  96 GiB  |  32  |  488 GiB  |  10 Gbit/s  | 
|  p2.16xlarge  |  16  |  192 Go  |  64  |  732 GiB  |  20 Gbit/s  | 
|  p3.2xlarge  |  1  |  16 GiO  |  8  |  61 GiB  |  Jusqu'à 10 Gbit/s  | 
|  p3.8xlarge  |  4  |  64 Go  |  32  |  244 GiB  |  10 Gbit/s  | 
|  p3.16xlarge  |  8  |  128 Gio  |  64  |  488 GiB  |  25 Gb/s  | 
|  p3dn.24xlarge  |  8  |  256 Gio  |  96  |  768 Gio  |  100 Gbit/s  | 
|  p4d.24xlarge  |  8  |  320 GiB  |  96  |  1152 GiB  |  400 Gb/s  | 
|  p4de.24xlarge  |  8  |  640 GiB  |  96  |  1152 GiB  |  400 Gb/s  | 
|  p5.48xlarge  |  8  |  640 GiB  |  192  |  2 Tio  |  3200 Gbit/s  | 
|  p5e.48xlarge  |  8  |  1128 GiB  |  192  |  2 Tio  |  3200 Gbit/s  | 
|  p5en.48xlarge  |  8  |  1128 GiB  |  192  |  2 Tio  |  3200 Gbit/s  | 
|  p6-b200.48xlarge  |  8  |  1440 GiB  |  192  |  2 Tio  |  100 Gbit/s  | 
|  trn1.2xlarge  |  1  |  32 GiO  |  8  |  32 GiO  |  Jusqu'à 12,5 Gbps  | 
|  trn1.32xlarge  |  16  |  512 Gio  |  128  |  512 Gio  |  800 Gb/s  | 
|  trn1n.32xlarge  |  16   |  512 Gio  |  128  |  512 Gio  |  1600 Gbit/s  | 
|  trn2.48xlarge  |  16  |  1,5 Tio  |  192  |  2 Tio  |  3,2 Tbit/s  | 
|  inf1.xlarge  |  1  |  8 GiO  |  4  |  8 GiO  |  Jusqu'à 25 Gbit/s  | 
|  inf1.2xlarge  |  1  |  8 GiO  |  8  |  16 GiO  |  Jusqu'à 25 Gbit/s  | 
|  inf1.6xlarge  |  4  |  32 GiO  |  24  |  48 GiO  |  25 Gb/s  | 
|  inf1.24xlarge  |  16  |  128 Gio  |  96  |  192 Go  |  100 Gbit/s  | 
|  inf2.xlarge  |  1  |  32 GiO  |  4  |  16 GiO  |  Jusqu'à 15 Gbit/s  | 
|  inf2.8xlarge  |  1  |  32 GiO  |  32  |  128 Gio  |  Jusqu'à 25 Gbit/s  | 
|  inf2.24xlarge  |  6  |  192 Go  |  96  |  384 Go  |  50 Gb/s  | 
|  inf2.48xlarge  |  12  |  384 Go  |  192  |  768 Gio  |  100 Gbit/s  | 
|  dl1.24xlarge  |  8  |  256 Gio  |  96  |  768 Gio  |  400 Gb/s  | 
|  dl2q.24xlarge  |  8  |  128 Gio  |  96  |  768 Gio  |  100 Gbit/s  | 

**Note**  
Pour les tâches GPU, AWS Batch seuls les types d'instance dotés de NVIDIA sont pris en charge GPUs. Par exemple, la [https://aws.amazon.com/ec2/instance-types/g4/#Amazon_EC2_G4ad_instances](https://aws.amazon.com/ec2/instance-types/g4/#Amazon_EC2_G4ad_instances)famille n'est pas prise en charge pour la planification du GPU. Vous pouvez toujours utiliser cette option [https://aws.amazon.com/ec2/instance-types/g4/#Amazon_EC2_G4ad_instances](https://aws.amazon.com/ec2/instance-types/g4/#Amazon_EC2_G4ad_instances) AWS Batch en définissant uniquement les exigences en termes de processeur virtuel et de mémoire dans la définition de la tâche, puis en accédant directement aux GPU hôtes en personnalisant les données [utilisateur d'un modèle de lancement Amazon EC2](launch-templates.md#lt-user-data.title) avec une AMI optimisée pour le calcul Amazon ECS ou Amazon EKS, ou une AMI personnalisée pour l'utilisation d'AMD. GPUs  
Les types d'instances qui utilisent une ARM64 architecture sont pris en charge pour les tâches GPU sur mesure AMIs fournies AWS Batch ou pour les données utilisateur Amazon EC2 permettant d'y accéder GPUs par un code et des configurations personnalisés. Par exemple, la famille d'[https://aws.amazon.com/ec2/instance-types/g5g/](https://aws.amazon.com/ec2/instance-types/g5g/)instances.

Le paramètre [ResourceRequirements](job_definition_parameters.md#ContainerProperties-resourceRequirements) pour la définition de tâche indique le nombre de GPUs à épingler au conteneur. Ce nombre de GPUs n'est disponible pour aucune autre tâche exécutée sur cette instance pendant la durée de cette tâche. Dans un environnement informatique, tous les types d'instances qui exécutent des tâches GPU doivent appartenir aux familles d'`g6`instances `p3` `p4` `p5` `p6` `g3``g3s`,`g4`,`g5`,,, ou. Si cela n'est pas fait, une tâche du GPU risque de rester bloquée dans l'`RUNNABLE`état.

Les tâches qui n'utilisent pas le GPUs peuvent être exécutées sur des instances de GPU. Cependant, leur exécution sur les instances GPU peut être plus coûteuse que sur des instances similaires non GPU. En fonction du vCPU, de la mémoire et du temps nécessaires, ces tâches non liées au GPU peuvent bloquer l'exécution des tâches GPU.

**Topics**
+ [

# Création d'un Kubernetes cluster basé sur un GPU sur Amazon EKS
](create-gpu-cluster-eks.md)
+ [

# Création d'une définition de tâche GPU Amazon EKS
](create-eks-gpu-job-definition.md)
+ [

# Exécuter une tâche GPU dans votre cluster Amazon EKS
](run-gpu-job-eks-cluster.md)

# Création d'un Kubernetes cluster basé sur un GPU sur Amazon EKS
<a name="create-gpu-cluster-eks"></a>

Avant de créer un Kubernetes cluster basé sur un GPU sur Amazon EKS, vous devez avoir effectué les étapes décrites dans. [Commencer à utiliser AWS Batch sur Amazon EKS](getting-started-eks.md) En outre, tenez également compte des points suivants :
+ AWS Batch prend en charge les types d'instances avec NVIDIA GPUs.
+ Par défaut, AWS Batch sélectionne l'AMI accélérée Amazon EKS avec la Kubernetes version qui correspond à la version de votre plan de contrôle du cluster Amazon EKS.

```
$ cat <<EOF > ./batch-eks-gpu-ce.json
{
  "computeEnvironmentName": "My-Eks-GPU-CE1",
  "type": "MANAGED",
  "state": "ENABLED",
  "eksConfiguration": {
    "eksClusterArn": "arn:aws:eks:<region>:<account>:cluster/<cluster-name>",
    "kubernetesNamespace": "my-aws-batch-namespace"
  },
  "computeResources": {
    "type": "EC2",
    "allocationStrategy": "BEST_FIT_PROGRESSIVE",
    "minvCpus": 0,
    "maxvCpus": 1024,
    "instanceTypes": [
      "p3dn.24xlarge",
      "p4d.24xlarge"
    ],
    "subnets": [
        "<eks-cluster-subnets-with-access-to-internet-for-image-pull>"
    ],
    "securityGroupIds": [
        "<eks-cluster-sg>"
    ],
    "instanceRole": "<eks-instance-profile>"
  }
}
EOF

$ aws batch create-compute-environment --cli-input-json file://./batch-eks-gpu-ce.json
```

AWS Batch ne gère pas le plug-in du périphérique NVIDIA GPU à votre place. Vous devez installer ce plug-in dans votre cluster Amazon EKS et l'autoriser à cibler les AWS Batch nœuds. Pour plus d'informations, consultez la section [Activation du support GPU in Kubernetes](https://github.com/NVIDIA/k8s-device-plugin#enabling-gpu-support-in-kubernetes) on GitHub.

Pour configurer le plug-in de NVIDIA périphérique (`DaemonSet`) afin de cibler les AWS Batch nœuds, exécutez les commandes suivantes.

```
# pull nvidia daemonset spec
$ curl -O https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.12.2/nvidia-device-plugin.yml
# using your favorite editor, add Batch node toleration
# this will allow the DaemonSet to run on Batch nodes
- key: "batch.amazonaws.com/batch-node"
  operator: "Exists"

$ kubectl apply -f nvidia-device-plugin.yml
```

Nous vous déconseillons de mélanger des charges de travail basées sur le calcul (processeur et mémoire) avec des charges de travail basées sur le GPU dans les mêmes associations d'environnement informatique et de file d'attente de tâches. Cela est dû au fait que les tâches de calcul peuvent utiliser la capacité du GPU.

Pour attacher des files d'attente de tâches, exécutez les commandes suivantes.

```
$ cat <<EOF > ./batch-eks-gpu-jq.json
 {
    "jobQueueName": "My-Eks-GPU-JQ1",
    "priority": 10,
    "computeEnvironmentOrder": [
      {
        "order": 1,
        "computeEnvironment": "My-Eks-GPU-CE1"
      }
    ]
  }
EOF

$ aws batch create-job-queue --cli-input-json file://./batch-eks-gpu-jq.json
```

# Création d'une définition de tâche GPU Amazon EKS
<a name="create-eks-gpu-job-definition"></a>

Seule `nvidia.com/gpu` est prise en charge pour le moment et la valeur de ressource que vous définissez doit être un nombre entier. Vous ne pouvez pas utiliser de fractions de GPU. Pour plus d'informations, consultez la section [Planification GPUs](https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/) dans la *Kubernetesdocumentation*.

Pour enregistrer une définition de tâche GPU pour Amazon EKS, exécutez les commandes suivantes.

```
$ cat <<EOF > ./batch-eks-gpu-jd.json
{
    "jobDefinitionName": "MyGPUJobOnEks_Smi",
    "type": "container",
    "eksProperties": {
        "podProperties": {
            "hostNetwork": true,
            "containers": [
                {
                    "image": "nvcr.io/nvidia/cuda:10.2-runtime-centos7",
                    "command": ["nvidia-smi"],
                    "resources": {
                        "limits": {
                            "cpu": "1",
                            "memory": "1024Mi",
                            "nvidia.com/gpu": "1"
                        }
                    }
                }
            ]
        }
    }
}
EOF

$ aws batch register-job-definition --cli-input-json file://./batch-eks-gpu-jd.json
```

# Exécuter une tâche GPU dans votre cluster Amazon EKS
<a name="run-gpu-job-eks-cluster"></a>

La ressource GPU n'est pas compressible. AWS Batch crée une spécification de module pour les tâches GPU où la valeur de la **requête** est égale à la valeur des **limites**. Il s'agit d'une Kubernetes exigence.

Pour soumettre une tâche GPU, exécutez les commandes suivantes.

```
$ aws batch submit-job --job-queue My-Eks-GPU-JQ1 --job-definition MyGPUJobOnEks_Smi --job-name My-Eks-GPU-Job

# locate information that can help debug or find logs (if using Amazon CloudWatch Logs with Fluent Bit)
$ aws batch describe-jobs --job <job-id> | jq '.jobs[].eksProperties.podProperties | {podName, nodeName}'
{
  "podName": "aws-batch.f3d697c4-3bb5-3955-aa6c-977fcf1cb0ca",
  "nodeName": "ip-192-168-59-101.ec2.internal"
}
```