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à. 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" } ], }, ... }
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", }