本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon ECS 任務定義中指定 GPU
若要使用容器執行個體的 GPU 和 Docker GPU 執行時間,確保您在任務定義中指定容器所需的 GPU 數量。您可以指定數值或 ALL。當您指定 時ALL,容器執行個體上的所有 GPUs 都會配置給容器。放置支援 GPU 的容器後,Amazon ECS 容器代理程式會將所需數量的實體 GPU 固定至適當的容器。為任務中所有容器保留的 GPU 數量不可超過任務啟動所在之容器執行個體上可用的 GPU 數量。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義。
重要
如果未在任務定義中指定 GPU 要求,該任務會使用預設 Docker 執行時間。
下列顯示任務定義中 GPU 要求的 JSON 格式:
{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "2" } ], }, ... }
您也可以將 指定ALL為值,而不是數字,以將容器執行個體上的所有 GPUs 配置給容器。
以下範例會示範指定 GPU 要求的 Docker 容器語法。此容器會使用 2 個 GPU,執行 nvidia-smi 公用程式,然後結束。
{ "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" }
下列任務定義範例展示了可列印可用 GPU 數量的 TensorFlow 容器。在 Amazon ECS 受管執行個體上執行的任務,需要一個 GPU,並使用 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", }