

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Definizioni di attività Amazon ECS per carichi di lavoro GPU
<a name="ecs-gpu"></a>

Amazon ECS supporta carichi di lavoro che utilizzano le GPU, quando crei cluster con istanze di container che supportano le GPU. Le istanze di container basate su GPU di Amazon EC2 che utilizzano i tipi di istanze p2, p3, p5, g3, g4 e g5 forniscono l'accesso a NVIDIA. GPUs Per maggiori informazioni, consultare [Linux Accelerated Computing Instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html) nella *Guida ai tipi di istanze Amazon EC2*.

Amazon ECS fornisce un'AMI ottimizzata per GPU che dispone di driver del kernel NVIDIA pre-configurati e un runtime del GPU Docker. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).

Nella definizione delle attività è possibile designarne alcune da prendere GPUs in considerazione a livello di contenitore. Amazon ECS pianifica le istanze di container disponibili che supportano GPUs e collegano contenitori fisici GPUs a contenitori appropriati per prestazioni ottimali. 

Sono supportati i seguenti tipi di istanza Amazon EC2 basati su GPU. Per ulteriori informazioni, consultare [Istanze Amazon EC2 P2](https://aws.amazon.com/ec2/instance-types/p2/), [Istanze Amazon EC2 P3](https://aws.amazon.com/ec2/instance-types/p3/), [Istanze Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/), [Istanze Amazon EC2 P5](https://aws.amazon.com/ec2/instance-types/p5/), [Istanze Amazon EC2 G3](https://aws.amazon.com/ec2/instance-types/g3/), [Amazon EC2 G4 Instances](https://aws.amazon.com/ec2/instance-types/g4/), [Istanze Amazon EC2 G5](https://aws.amazon.com/ec2/instance-types/g5/), [Amazon EC2 G6 Instances](https://aws.amazon.com/ec2/instance-types/g6/) e [Amazon EC2 G6e Instances](https://aws.amazon.com/ec2/instance-types/g6e/).


|  Tipo di istanza  |  GPUs  |  Memoria GPU (GiB)  |  v CPUs  |  Memoria (GiB)  | 
| --- | --- | --- | --- | --- | 
|  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 | 1152 | 
| 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.x grande | 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 | 

Puoi recuperare l'ID Amazon Machine Image (AMI) per Amazon ECS ottimizzato per Amazon ECS AMIs interrogando l' AWS Systems Manager API Parameter Store. Utilizzando questo parametro, non è necessario cercare manualmente le AMI ottimizzate per Amazon ECS. IDs Per ulteriori informazioni sull'API Systems Manager Parameter Store, vedere [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Il principale IAM che utilizzi deve disporre dell'autorizzazione IAM `ssm:GetParameter` per recuperare i metadati dell'AMI ottimizzata per Amazon ECS.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
```

## Considerazioni
<a name="gpu-considerations"></a>

**Nota**  
Il supporto per il tipo di famiglia di istanze g2 è obsoleto.  
La famiglia di istanze p2 è supportata solo nelle versioni precedenti a `20230912` dell'AMI Amazon ECS ottimizzata per GPU. Per continuare a utilizzare le istanze p2, consulta [Operazioni da eseguire per utilizzare un'istanza P2](#p2-instance).  
Gli aggiornamenti immediati dei NVIDIA/CUDA driver su entrambi questi tipi di famiglie di istanze causeranno potenziali guasti del carico di lavoro della GPU.

Ti consigliamo di considerare quanto segue prima di iniziare a lavorare GPUs su Amazon ECS.
+ I cluster possono contenere una combinazione di istanze di container GPU e non GPU.
+ Puoi eseguire carichi di lavoro GPU su istanze esterne. Durante la registrazione di un'istanza esterna nel tuo cluster, assicurati che il flag `--enable-gpu` sia incluso nello script di installazione. Per ulteriori informazioni, consulta [Registrazione di un'istanza esterna in un cluster Amazon ECS](ecs-anywhere-registration.md).
+ È necessario impostare `ECS_ENABLE_GPU_SUPPORT` su `true` nel file di configurazione dell'agente. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).
+ Durante l'esecuzione di un'attività o la creazione di un servizio, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento delle attività per garantire su quali istanze di container verrà avviata l'attività. In questo modo, puoi utilizzare in modo più efficiente le risorse. Per ulteriori informazioni, consulta [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

  L'esempio seguente avvia un'attività su un'istanza di container `g4dn.xlarge` nel cluster predefinito.

  ```
  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
  ```
+ Per ogni container che ha un requisito di risorsa GPU specificato nella definizione di container, Amazon ECS imposta il runtime del container in modo che sia il runtime del container NVIDIA.
+ Il runtime del container NVIDIA richiede per poter funzionare l'impostazione di alcune variabili di ambiente nel container. Per un elenco di queste variabili di ambiente, consultare [Specialized Configurations with Docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html?highlight=environment%20variable). Amazon ECS imposta il valore della variabile di `NVIDIA_VISIBLE_DEVICES` ambiente in modo che sia un elenco dei dispositivi GPU che IDs Amazon ECS assegna al contenitore. Le altre variabili di ambiente richieste non vengono impostate da, Amazon ECS. Quindi, assicurati che siano impostate dall'immagine del container o nella definizione di quest'ultimo.
+ La famiglia del tipo di istanza p5 è supportata nella versione `20230929` e successive dell'AMI Amazon ECS ottimizzata per GPU. 
+ La famiglia del tipo di istanza g4 è supportata nella versione `20230913` e successive dell'AMI Amazon ECS ottimizzata per GPU. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md). Non è supportata nel flusso di lavoro Crea cluster nella console Amazon ECS. Per utilizzare questi tipi di istanze, devi utilizzare la console o l'API di Amazon EC2 e registrare manualmente le istanze nel cluster. AWS CLI
+ Il tipo di istanza p4d.24xlarge funziona solo con CUDA 11 o versioni successive.
+ L'AMI Amazon ECS ottimizzata per GPU IPv6 è abilitata, il che causa problemi durante l'utilizzo. `yum` Questo problema può essere risolto configurandolo per l'uso IPv4 con `yum` il seguente comando.

  ```
  echo "ip_resolve=4" >> /etc/yum.conf
  ```
+  Quando create un'immagine del contenitore che non utilizza le immagini di NVIDIA/CUDA base, dovete impostare la variabile di runtime del `NVIDIA_DRIVER_CAPABILITIES` contenitore su uno dei seguenti valori:
  + `utility,compute`
  + `all`

  Per informazioni su come impostare la variabile, consulta [Controllo del runtime del container NVIDIA](https://sarus.readthedocs.io/en/stable/user/custom-cuda-images.html#controlling-the-nvidia-container-runtime) sul sito Web di NVIDIA.
+ GPUs non sono supportati nei contenitori Windows.

## Condividi GPUs
<a name="share-gpu"></a>

Quando vuoi condividere GPUs, devi configurare quanto segue.

1. Rimuovi i requisiti di risorse GPU dalle definizioni delle tue attività in modo che Amazon ECS non riservi quelle GPUs che devono essere condivise.

1. Aggiungi i seguenti dati utente alle tue istanze quando desideri condividerli. GPUs Ciò renderà nvidia il runtime del contenitore Docker predefinito sull'istanza del contenitore in modo che tutti i contenitori Amazon ECS possano utilizzare il. GPUs Per ulteriori informazioni, consultare [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) nella *Guida per l'utente di 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',
   );
   ```

1. Impostare la variabile di ambiente `NVIDIA_VISIBLE_DEVICES` sul container. È possibile eseguire questa operazione specificando la variabile di ambiente nella definizione dell'attività. Per informazioni sui valori validi, consultare [GPU Enumeration](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) sul sito di documentazione di NVIDIA.

## Operazioni da eseguire per utilizzare un'istanza P2
<a name="p2-instance"></a>

Per continuare a lavorare con le istanze P2, puoi utilizzare una delle seguenti opzioni.

È necessario modificare i dati utente dell'istanza per entrambe le opzioni. Per ulteriori informazioni, consultare [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) nella *Guida per l'utente di Amazon EC2*.

**Usa l'ultima AMI ottimizzata per GPU supportata**

Puoi utilizzare la versione `20230906` dell'AMI ottimizzata per GPU e aggiungere quanto segue ai dati utente dell'istanza.

Sostituire cluster-name con il nome del cluster.

```
#!/bin/bash
echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
```

**Usa l'AMI ottimizzata per GPU più recente e aggiorna i dati utente**

Puoi aggiungere i comandi seguenti ai dati utente dell'istanza. Questa operazione consente di disinstallare i driver Nvidia 535/Cuda12.2 e installare i driver Nvidia 470/Cuda11.4, correggendo la versione.

```
#!/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
```

**Crea la tua AMI ottimizzata per GPU compatibile con P2**

Puoi creare un'AMI Amazon ECS ottimizzata per GPU personalizzata e compatibile con le istanze P2, quindi avviare le istanze P2 utilizzando l'AMI.

1. Esegui il comando seguente per clonare `amazon-ecs-ami repo`.

   ```
   git clone https://github.com/aws/amazon-ecs-ami
   ```

1. Imposta l'agente Amazon ECS richiesto e le versioni dell'AMI Amazon Linux di origine in `release.auto.pkrvars.hcl` o `overrides.auto.pkrvars.hcl`.

1. Esegui il comando seguente per creare un'AMI EC2 privata compatibile con P2.

   Sostituisci la regione con la regione dell'istanza.

   ```
   REGION=region make al2keplergpu
   ```

1. Utilizza l'AMI con i seguenti dati utente dell'istanza per connetterti al cluster Amazon ECS.

   Sostituire cluster-name con il nome del cluster.

   ```
   #!/bin/bash
   echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
   ```