我想尝试将推理加速器附加到ECS任务。我创建了以下Cloudformation模板:
{ "Resources": { "Task": { "Type" : "AWS::ECS::TaskDefinition", "Properties" : { "ContainerDefinitions" : [ { "Name": "TestAccelerated", "Image": "xxxxxxxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/myimage", "Essential": true, "ResourceRequirements": [{ "Type": "InferenceAccelerator", "Value": "eia-device-1" }] } ], "Cpu" : "256", "ExecutionRoleArn" : "arn:aws:iam::xxxxxxxxxxxxx:role/ecsTaskExecutionRole", "Family" : "TestService", "InferenceAccelerators" : [ { "DeviceName": "eia-device-1", "DeviceType": "eia1.medium" } ], "Memory" : "512", "NetworkMode" : "awsvpc", "RequiresCompatibilities" : [ "FARGATE" ], "TaskRoleArn" : "arn:aws:iam::xxxxxxxxxxxxx:role/ecsTaskExecutionRole" } } }}
当我尝试创建堆栈时,Cloudformation 出现了以下错误:
Invalid request provided: Create TaskDefinition: Unsupported field 'inferenceAccelerators'
然而,有两件事让我感到奇怪:
- 我使用的字段首字母是大写I,而错误信息中提到的是小写i
- 根据文档,InferenceAccelerators字段应该是被支持的
我做错了什么,这是不是一个bug,或者推理加速器真的不支持在任务定义中使用?
回答:
可能是因为你使用了FARGATE
,而Fargate不支持GPU。但AWS已经将支持纳入了路线图:
你可以尝试重新定义你的任务定义和ECS服务,使用EC2启动类型,而不是Fargate。
更新
Amazon Elastic Inference 仅适用于EC2类型的ECS任务:
此功能在使用Linux容器和使用EC2启动类型的任务时受支持。