本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 GPUs 上使用 Amazon ECS
Amazon ECS 支持GPUs通过使用使您能够使用启用 GPU 的容器实例创建集群来利用 的工作负载。 Amazon EC2使用 p2、p3、g3 和 g4 实例类型的基于 GPU 的容器实例提供对 NVIDIA 的访问GPUs。 有关更多信息,请参阅 中的 Linux 加速计算实例Amazon EC2 用户指南(适用于 Linux 实例)。
Amazon ECS 提供了经过 GPU 优化的 AMI,后者附带了预配置的 NVIDIA 内核驱动程序和 Docker GPU 运行时。有关更多信息,请参阅Amazon ECS-optimized AMIs.
您可以在任务定义GPUs中指定 以在容器级别考虑任务放置。 Amazon ECS 计划可用的启用 GPU 的容器实例,并固定物理GPUs容器到适当的容器以实现最佳性能。
支持以下基于 GPU 的 Amazon EC2 实例类型。有关更多信息,请参阅 Amazon EC2 P2 实例
20190913
版本和更高版本的Amazon ECS 经 GPU 优化的 AMI. 支持 g4 实例类型系列。有关更多信息,请参阅经 Amazon ECS优化AMI的 Linux 版本. 它当前在 Amazon ECS 控制台中的“创建集群”工作流中不受支持。要使用这些实例类型,您必须使用 Amazon EC2 控制台、AWS CLI 或 API
并手动将实例注册到您的集群。
实例类型 |
GPUs |
GPU 内存 (GiB) |
vCPUs |
内存 (GiB) |
---|---|---|---|---|
p2.xlarge |
1 |
12 |
4 |
61 |
p2.8xlarge |
8 |
96 |
32 |
488 |
p2.16xlarge |
16 |
192 |
64 |
732 |
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 |
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 |
Considerations
在 GPUs 上开始使用 之前Amazon ECS,请注意以下事项:
-
您的集群可以包含 GPU 和非 GPU 容器实例的组合。
-
在运行任务或创建服务时,您可以在配置任务放置约束时使用实例类型属性,以确保在适当的容器实例上启动任务。通过这样做,您可以更有效地使用您的资源。有关更多信息,请参阅Amazon ECS 任务放置.
以下示例在您的默认集群中的
p2.xlarge
容器实例上启动一个任务。aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == p2.xlarge" --region us-east-2
-
对于在容器定义中指定了 GPU 资源要求的每个容器,Amazon ECS 将容器运行时设置为 NVIDIA 容器运行时。
-
NVIDIA 容器运行时需要在容器中设置一些环境变量才能工作。有关这些环境变量的列表,请参阅 nvidia-container-runtime
。 将Amazon ECS环境变量值 NVIDIA_VISIBLE_DEVICES
设置为 IDs Amazon ECS 分配给容器的 GPU 设备的列表。对于其他必需的环境变量, Amazon ECS 不会设置这些变量,因此您应该确保容器映像设置这些变量,或者应在容器定义中设置这些变量。 -
20190913
版本和更高版本的Amazon ECS 经 GPU 优化的 AMI. 支持 g4 实例类型系列。有关更多信息,请参阅经 Amazon ECS优化AMI的 Linux 版本. 它当前在 Amazon ECS 控制台中的“创建集群”工作流中不受支持。要使用这些实例类型,您必须使用 Amazon EC2 控制台、AWS CLI 或 API 并手动将实例注册到您的集群。 -
p4d.24xlarge 实例类型仅适用于 CUDA 11 或更高版本。
在任务定义GPUs中指定
要在容器实例和 Docker GPU 运行时GPUs上利用 ,请确保您在任务定义中指定GPUs了容器所需的数量。在放置启用 GPU 的容器时, Amazon ECS 容器代理GPUs会将所需数量的物理容器固定到适当的容器。为任务中的所有容器GPUs预留的数量不应超过启动任务的容器实例GPUs上的可用数量。有关更多信息,请参阅创建任务定义.
如果您的 GPU 要求未在任务定义中指定,则任务将使用默认 Docker 运行时。
下面显示了任务定义中的 GPU 要求的 JSON 格式:
{ "containerDefinitions": [ { ... "resourceRequirements" : [ { "type" : "GPU", "value" : "
2
" } ], }, ... }
以下示例演示了指定 GPU 要求的 Docker 容器的语法。此容器使用 2 个 GPUs,运行 nvidia-smi
实用程序,然后退出。
{ "containerDefinitions": [ { "memory": 80, "essential": true, "name": "gpu", "image": "nvidia/cuda:11.0-base", "resourceRequirements": [ { "type":"GPU", "value": "2" } ], "command": [ "sh", "-c", "nvidia-smi" ], "cpu": 100 } ], "family": "example-ecs-gpu" }