使用 Amazon ECS 上的 inference 工作负载 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon ECS 上的 inference 工作负载

Amazon ECS 支持机器学习 inference 工作负载,使您能够注册 Amazon EC2 Inf1 实例添加到您的集群。Amazon EC2 Inf1 实例由 Amazon Inferentia 芯片提供支持,这些芯片由 Amazon 定制构建,可在云中提供高性能和最低成本的推理。机器学习模型通过 Amazon Neuron 部署到容器,这是一个专用的软件开发工具包 (SDK),由编译器、运行时和分析工具组成,可用于优化 Inferentia 芯片的机器学习推理性能。AmazonNeuron 支持常用的机器学习框架,例如 TensorFlow、PyTorch 和 Apache MXNet (孵化)。

注意事项

在 Amazon ECS 上部署 Neuron 之前,请注意以下事项:

  • 您的集群可以包含 Inf1 和非 Inf1 实例的组合。

  • 我们建议您在每个 Inf1 实例中仅放置一个具有推理资源需求的任务。

  • 在创建服务或运行独立任务时,您可以在配置任务放置约束时使用实例类型属性,以确保在适当的容器实例上启动任务。通过这样做,您可以更有效地使用资源,同时确保 inference 工作负载的任务落在 Inf1 实例上。有关更多信息,请参阅 Amazon ECS 任务放置

    以下示例运行 default 集群上的 Inf1.xlarge 实例任务。

    aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  • 无法在任务定义中定义 Inferentia 资源需求。但是,您可以将容器配置为使用主机容器实例上可用的特定推理,方法是使用 linuxParameters 参数并指定设备详细信息。有关更多信息,请参阅任务定义要求

使用经 Amazon ECS 优化的 Amazon Linux 2(Inferentia)AMI

Amazon ECS 为 Inferentia 工作负载提供了一个基于 Amazon Linux 2 的经 Amazon ECS 优化的 AMI,其预先配置了 Amazon Inferentia 驱动程序和 Docker 的 Amazon Neuron 运行时。此 AMI 使得在 Amazon ECS 上运行机器学习 inference 工作负载变得更加轻松。

我们建议您在启动 Amazon EC2 Inf1 实例时使用经 Amazon ECS 优化的 Amazon Linux 2(Inferentia)AMI。您可以使用 Amazon CLI 和以下命令检索当前经 Amazon ECS 优化的 Amazon Linux 2(Inferentia)AMI:

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended

下表提供了按地区检索当前经 Amazon ECS 优化的 Amazon Linux 2(推理)AMI ID 的链接。

任务定义要求

要在 Amazon ECS 上部署 Neuron,您的任务定义必须包含预构建容器的容器定义,该容器服务于 Amazon Deep Learning Containers 提供的 TensorFlow 推理模型。此容器包含 Amazon Neuron 运行时和 TensorFlow 服务应用程序。在启动时,这个容器将从 Amazon S3 获取您的模型,用保存的模型启动 Neuron TensorFlow 服务,并等待预测请求。以下容器映像具有 TensorFlow 1.15 和 Ubuntu 18.04。GitHub 上维护了针对 Neuron 优化的预构建 Deep Learning Containers 的完整列表。有关更多信息,请参阅 Neuron Inference Containers

763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04

或者,您也可以构建自己的 Neuron 边车容器映像。有关更多信息,请参阅 GitHub 上的教程:Neuron TensorFlow 服务

以下是 Fargate 上的 Linux 容器的示例任务定义,显示要使用的语法。

{ "family": "example", "executionRoleArn": "${YOUR_EXECUTION_ROLE}", "inferenceAccelerators": [{ "deviceName": "device1", "deviceType": "eia1.medium" }], "containerDefinitions": [{ "resourceRequirements": [{ "type": "InferenceAccelerator", "value": "device1" }], "memory": 3072, "image": "763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-eia:1.14.0-cpu-py27-ubuntu16.04", "essential": true, "name": "example" }] }