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 i carichi di lavoro che utilizzano GPUs, quando crei cluster con istanze di container che supportano. GPUs Le istanze di container EC2 basate su Amazon GPU che utilizzano i tipi di istanze p2, p3, p5, g3, g4 e g5 forniscono l'accesso a NVIDIA. GPUs Per ulteriori informazioni, consulta Linux Accelerated Computing Instances nella guida Amazon EC2 Instance Types.

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.

Puoi designarne alcune nella definizione dell'attività 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 istanze EC2 basate su Amazon GPU. Per ulteriori informazioni, consulta Istanze Amazon EC2 P2, IstanzeAmazon EC2 P3, Istanze Amazon P4d, Istanze EC2 AmazonP5, Istanze EC2 Amazon G3, Istanze EC2 Amazon G4, Istanze Amazon G5 EC2 , Istanze Amazon G6 e Istanze EC2 Amazon G6e. EC2 EC2

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.x grande 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 96 384
g6,48 x grande 8 192 192 768
g6. metallo 8 192 192 768
gr 6,4 x grande 1 24 16 128
g6e.xlarge 1 48 4 32
g6e.2x grande 1 48 8 64
g6e.4x grande 1 48 16 128
g6e.8x grande 1 48 32 256
g6e16.x grande 1 48 64 512
g6e12.x grande 4 192 48 384
g6e24.x grande 4 192 96 768
g6e48.x grande 8 384 192 1536
gr 6,8 x grande 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. 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.

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.

  • È 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, consulta Configurazioni specializzate con Docker. 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. Non è supportata nel flusso di lavoro Crea cluster nella console Amazon ECS. Per utilizzare questi tipi di istanze, devi utilizzare la EC2 console Amazon o l'API e registrare manualmente le istanze nel tuo 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 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.

  • GPUs non sono supportati nei contenitori Windows.

Condividi GPUs

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.

  2. 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, consulta Esegui comandi all'avvio di un' EC2 istanza con immissione di dati utente nella Amazon EC2 User Guide.

    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', );
  3. Imposta la variabile di NVIDIA_VISIBLE_DEVICES ambiente sul tuo contenitore. Puoi farlo specificando la variabile di ambiente nella definizione dell'attività. Per informazioni sui valori validi, consulta GPU Enumeration nel sito di documentazione di NVIDIA.

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 Esegui comandi all'avvio di un' EC2 istanza con immissione di dati utente 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 EC2 AMI privato 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