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à.
Specificare le GPU in una definizione attività Amazon ECS
Per utilizzare le GPU su un'istanza di container e il runtime della GPU del Docker, assicurati di indicare il numero di GPU richiesti dal container nella definizione di attività. Puoi specificare un valore intero, un valore decimale per le GPU frazionarie o. ALL Quando si specificaALL, tutte le GPU sull'istanza del contenitore vengono allocate al contenitore. Quando si specifica un valore decimale, ad esempio0.25, Amazon ECS colloca l'operazione su un'istanza GPU frazionaria che fornisce la capacità GPU richiesta. Non appena i container che supportano le GPU vengono posizionati, l'agente del container di Amazon ECS vincola il numero desiderato di GPU fisiche al container appropriato. Il numero di GPU riservate per tutti i container in un'attività non deve superare il numero di GPU disponibili nell'istanza di container in cui viene avviata l'attività. Per ulteriori informazioni, consulta Creazione di una definizione di attività di Amazon ECS attraverso la nuova console.
Importante
Se i requisiti della GPU non sono specificati nella definizione di attività, il processo utilizzerà il runtime del Docker di default.
Di seguito viene visualizzato il formato JSON per i requisiti GPU in una definizione di attività:
{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "2" } ], }, ... }
Puoi anche specificare ALL come valore anziché un numero per allocare tutte le GPU sull'istanza del contenitore al contenitore.
L'esempio seguente mostra la sintassi per un container Docker che specifica un requisito GPU. Questo container utilizza 2 GPU, esegue l'utility nvidia-smi e quindi viene terminato.
{ "containerDefinitions": [ { "memory": 80, "essential": true, "name": "gpu", "image": "nvidia/cuda:11.0.3-base", "resourceRequirements": [ { "type":"GPU", "value": "2" } ], "command": [ "sh", "-c", "nvidia-smi" ], "cpu": 100 } ], "family": "example-ecs-gpu" }
La seguente definizione di attività di esempio mostra un container TensorFlow che stampa il numero di GPU disponibili. L'attività viene eseguita su Istanze gestite da Amazon ECS, richiede una GPU e utilizza un'istanza g4dn.xlarge.
{ "family": "tensorflow-gpu", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "tensorflow", "image": "tensorflow/tensorflow:latest-gpu", "essential": true, "command": [ "python", "-c", "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))" ], "resourceRequirements": [ { "type": "GPU", "value": "1" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/tensorflow-gpu", "awslogs-region": "region", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "MANAGED_INSTANCES" ], "cpu": "4096", "memory": "8192", }
Specificare le GPU frazionarie
Amazon ECS supporta la pianificazione frazionaria delle GPU con istanze Amazon EC2 G6f. Le istanze G6f forniscono frazioni di una GPU partizionate dall'hardware, in cui ogni istanza espone una slice di GPU fissa (,, o) con memoria e calcolo NVIDIA L4 GPU dedicati. 1/8 1/4 1/2 Per utilizzare una GPU frazionaria, specifica un valore decimale nelle definizioni del contenitore: resourceRequirements
"resourceRequirements": [ { "type": "GPU", "value": "0.25" } ]
I valori frazionari supportati e i corrispondenti tipi di istanza G6f sono:
| Valore GPU | Frazione GPU | Memoria GPU | Tipi di istanza |
|---|---|---|---|
0.125 |
1/8 GPU | 3 GB | g6f.large, g6f.xlarge |
0.25 |
1/4 GPU | 6 GB | g6f.2xlarge |
0.5 |
1/2 GPU | 12 GB | g6f.4xlarge, gr6f.4xlarge |
La seguente definizione di attività di esempio esegue un contenitore di inferenza leggero su una GPU frazionaria con una GPU (6 GB di memoria GPU): 1/4 NVIDIA L4
{ "family": "fractional-gpu-inference", "networkMode": "awsvpc", "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "inference", "image": "nvidia/cuda:12.0.0-base-ubuntu22.04", "essential": true, "command": ["nvidia-smi"], "resourceRequirements": [ { "type": "GPU", "value": "0.25" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fractional-gpu-inference", "awslogs-region": "region", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "MANAGED_INSTANCES" ], "cpu": "2048", "memory": "4096" }
Considerazioni sulla GPU frazionaria
-
Solo un contenitore per attività può richiedere un valore GPU frazionario. Se un contenitore specifica una GPU frazionaria, nessun altro contenitore in quella definizione di attività può avere un requisito di risorse GPU.
-
I valori interi (
1,2, ecc.) vengono trattati come richieste GPU complete e vengono inseriti solo nelle istanze con capacità GPU completa. I valori decimali (0.125,0.25,0.5) vengono trattati come richieste GPU frazionarie e inseriti nelle istanze con la corrispondente partizione GPU frazionaria. -
È possibile includere sia istanze GPU frazionarie (G6f) che istanze GPU complete (come g5 o g6) nello stesso fornitore di capacità. Amazon ECS indirizza le attività al tipo di istanza corretto in base al valore GPU dichiarato. Non sono necessari fornitori di capacità separati per famiglia di GPU.
-
Puoi utilizzare la pianificazione frazionaria delle GPU con Amazon ECS Managed Instances e Amazon ECS su Amazon EC2. Fargate e Amazon ECS Anywhere non supportano la pianificazione frazionaria delle GPU.
-
Per carichi di lavoro GPU completi, continua a utilizzare valori interi come prima:.
"value": "1"