Definizioni di attività Amazon ECS per carichi di lavoro GPU - Amazon Elastic Container Service

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

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 istanza p2, p3, p5, g3, g4 e g5 forniscono accesso alle GPU NVIDIA. Per ulteriori informazioni, consulta Linux Accelerated Computing Instances nella Amazon EC2 User Guide.

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 AMI Linux ottimizzate per Amazon ECS.

Puoi designare un certo numero di GPU nella definizione di attività per considerazioni di posizionamento del processo a livello di container. Amazon ECS esegue la programmazione verso le istanze di container disponibili che supportano le GPU e vincolano le GPU fisiche ai container corretti per garantire prestazioni ottimali.

Sono supportati i seguenti tipi di istanza Amazon EC2 basati su GPU. Per ulteriori informazioni, consulta Istanze Amazon EC2 P2, Istanze Amazon EC2 P3, Istanze Amazon EC2 P4d, IstanzeAmazon EC2 P5, Istanze Amazon EC2 G3, Istanze Amazon EC2 G4, Istanze Amazon EC2 G5e Istanze Amazon EC2 G6.

Tipo di istanza

GPU

Memoria GPU (GiB)

vCPU

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,2 x grande 1 24 8 32
g 6,4 x grande 1 24 16 64
g 6,8 x grande 1 24 32 128
g6,16.x grande 1 24 64 256
g6.12 x grande 4 96 48 192
g6,24 x grande 4 96 48 192
g6,48 x grande 8 192 192 768
g6. metallo 8 192 192 768
gr 6,4 x grande 1 24 16 128
gr 6,8 x grande 1 24 32 256

Puoi recuperare l'ID Amazon Machine Image (AMI) per le AMI ottimizzate per Amazon ECS interrogando l'API Parameter Store. AWS Systems Manager Con questo parametro, non è necessario eseguire una ricerca manuale degli ID dell'AMI ottimizzata per Amazon ECS. Per ulteriori informazioni sull'API Systems Manager Parameter Store, vedere GetParameter. 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

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.

Gli aggiornamenti locali dei driver NVIDIA/CUDA su entrambi i tipi di famiglie di istanze causano potenziali errori nel carico di lavoro della GPU.

È consigliabile considerare le informazioni seguenti prima di iniziare a utilizzare le GPU 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.

  • È 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.

  • 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 di container.

    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, vedere Configurazioni specializzate con Docker. Amazon ECS imposta il valore della variabile di ambiente NVIDIA_VISIBLE_DEVICES come un elenco di ID dispositivo GPU che Amazon ECS assegna al container. 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 AMI Linux ottimizzate per Amazon ECS. 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 ottimizzata per le GPU di Amazon ECS ha abilitato IPv6, che causa problemi quando si utilizza yum. Questo può essere risolto configurando yum in modo da utilizzare IPv4 con il seguente comando.

    echo "ip_resolve=4" >> /etc/yum.conf
  • Quando si crea un'immagine di container che non utilizza le immagini di base NVIDIA/CUDA, è necessario impostare la variabile di runtime del container NVIDIA_DRIVER_CAPABILITIES su uno dei seguenti valori:

    • utility,compute

    • all

    Per informazioni su come impostare la variabile, consulta Controllo del runtime del container NVIDIA sul sito Web di NVIDIA.

  • Le GPU non sono supportate nei container Windows.

Operazioni da eseguire per utilizzare un'istanza P2

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, consulta Lavora con i dati utente delle istanze nella Amazon EC2 User Guide.

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
  2. 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.

  3. 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
  4. 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