处理 Amazon ECS - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

处理 Amazon ECS

Amazon ECS 通过使您能够注册 Amazon EC2 输注1 实例 群集。 Amazon EC2Inf1实例由 AWS 推断 定制芯片 构建者 AWS 在云中提供高性能和最低成本推断。使用将机器学习模型部署至容器 AWS 神经,专用软件 开发工具包(SDK)包括编译器、运行时间和分析工具, 优化Inferentia芯片的在线学习推断性能。 AWS神经 支持TensorFlow、PyTorch和 墨西哥网

Considerations

开始与Inferentia合作之前, Amazon ECS,请注意以下事项 注意事项:

  • 您的群集可包含混合的Inf1和非Inf1容器 实例。

  • 在运行任务或创建服务时,您可以使用实例类型 属性,以确保 您的容器实例,任务在上启动。这使您能够 有效利用资源,同时确保进行任务推断 工作量将落在Inf1实例上。更多信息,请参阅 Amazon ECS 任务放置.

    以下示例在 Inf1.xlarge 容器实例 default 群集。

    aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge" \ --region us-west-2
  • 目前,您无法在任务中定义“推断”资源要求 定义。但是,您可以将容器设置为使用特定的 通过使用 AWS_NEURON_VISIBLE_DEVICES 环境变量。

  • 建议您仅使用一个包含Inferentia资源的任务 根据Inf1实例的要求。

使用 Amazon ECS-optimized Amazon Linux 2 (Inferentia) AMI

Amazon ECS 提供 Amazon ECS-优化 AMI 基于 Amazon Linux 2 适用于Inferentia工作量 预配置了ASHInferentia驱动程序和AWNeuron 的运行时间。这 AMI 使运行机器学习推断工作负荷 更容易 Amazon ECS.

的 Amazon ECS-optimized Amazon Linux 2 (Inferentia) AMI 建议在启动 Amazon EC2 Inf1实例。您 可以检索当前 Amazon ECS-optimized Amazon Linux 2 (Inferentia) AMI 使用 AWS CLI 使用下列命令:

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

下表提供了一个按区域检索当前 Amazon ECS-optimized Amazon Linux 2 (Inferentia) AMI ID 的链接。

任务定义要求

以下是创建任务定义的要求 推断 Amazon ECS.

  • 任务定义必须包含以下容器 定义:

    • A neuron-rtd 边车容器。您可以使用 公共 neuron-rtd 通过指定 neuron-rtd:latest 或特定 neuron-rtd 版本,例如 neuron-rtd:1.0.8444.0。完整图片名称 包括存储库URI 790709498068.dkr.ecr.us-west-2.amazonaws.com/neuron-rtd:latest.

      或者,您可以自行构建Neron边车容器 图片。更多信息,请参阅 aws-neuron-sdk GitHub上。

    • 为推断模型服务的容器。有关示例,请参阅 aws-neuron-sdk GitHub上。

  • neuron-rtd fidecar容器必须首先启动。这样可以 使用容器依赖参数定义。

  • neuron-rtd 边车容器必须升高 通过添加 SYS_ADMINIPC_LOCK 内核能力。这通过使用 linuxParameters 容器定义参数。这些能力将在 初始化。

  • 两个容器必须共用一个体积。

  • 目前,您无法在任务中定义“推断”资源要求 定义。但是,您可以将容器设置为使用特定的 通过 AWS_NEURON_VISIBLE_DEVICES 环境变量。《国际水事管理》 Neuron运行时期望 AWS_NEURON_VISIBLE_DEVICES 环境变量,以便在容器中设置,以便其工作。我们 建议使用所有可用的Inferentia设备,具体说明 AWS_NEURON_VISIBLE_DEVICES="ALL"。或者,使用 您要指定的前两个推断设备 AWS_NEURON_VISIBLE_DEVICES="0,1"。指定设备 必须始终为连续。

以下是任务定义的示例,显示了要使用的语法。

{ "family": "ecs-neuron", "executionRoleArn": "${YOUR_EXECUTION_ROLE}", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 8500, "protocol": "tcp", "containerPort": 8500 }, { "hostPort": 8501, "protocol": "tcp", "containerPort": 8501 }, { "hostPort": 0, "protocol": "tcp", "containerPort": 80 } ], "command": [ "tensorflow_model_server_neuron --port=8500 --rest_api_port=8501 --model_name=bert --model_base_path=/bert" ], "cpu": 0, "dependsOn": [ { "containerName": "neuron-rtd", "condition": "START" } ], "environment": [ { "name": "NEURON_RTD_ADDRESS", "value": "unix:/sock/neuron-rtd.sock" } ], "mountPoints": [ { "containerPath": "/sock", "sourceVolume": "sock" } ], "memoryReservation": 1000, "image": "${YOUR_IMAGE}", "essential": true, "name": "bert" }, { "entryPoint": [ "sh", "-c" ], "portMappings": [], "command": [ "neuron-rtd -g unix:/sock/neuron-rtd.sock" ], "cpu": 0, "environment": [ { "name": "AWS_NEURON_VISIBLE_DEVICES", "value": "ALL" } ], "mountPoints": [ { "containerPath": "/sock", "sourceVolume": "sock" } ], "memoryReservation": 1000, "image": "790709498068.dkr.ecr.us-east-1.amazonaws.com/neuron-rtd:latest", "essential": true, "linuxParameters": { "capabilities": { "add": [ "SYS_ADMIN", "IPC_LOCK" ] } }, "name": "neuron-rtd" } ], "volumes": [ { "name": "sock", "host": { "sourcePath": "/tmp/sock" } } ] }