AWS Deep Learning Containers

阅读数:84 2019 年 10 月 5 日 22:12

AWS Deep Learning Containers

我们希望能让您尽可能方便地了解深度学习并运用到您的应用程序中。如果您知道如何提取大型数据集、训练现有的模型、构建新模型以及执行推理,说明您已经为未来做好了准备!

新推出 Deep Learning Containers

今天我将向大家介绍新推出的 AWS Deep Learning Containers。这些 Docker 映像可以随时与 TensorFlow 或 Apache MXNet 配合使用以进行深度学习训练或推理,对其他框架的支持也将很快推出。客户告诉我们,他们正在使用 Amazon EKS 和 ECS 将 TensorFlow 工作负载部署到云中,并要求我们让这一任务变得尽可能简单直接,为此我们构建了这些容器。虽然我们已经做到了客户的要求,但仍对这些映像进行优化以在便于在 AWS 上使用,希望能够减少训练时间,提高推理性能。

这些映像已经过预先配置和验证,让您可以在几分钟内完成 Amazon ECS、Amazon Elastic Container Service for Kubernetes 和 Amazon Elastic Compute Cloud (EC2) 上的自定义环境和工作流程设置,从而专注于深度学习! 您可以在 AWS Marketplace 和 Elastic Container Registry 找到它们并免费使用。这些映像可以照原样使用,也可以通过添加额外的库或文件包进行自定义。

现提供多种 Deep Learning Containers,具体名称取决于下列因素(并非所有组合都可使用):

  • 框架 – TensorFlow 或 MXNet。
  • 模式 – 训练或推理。您可以在单个节点上或多节点集群上进行训练。
  • 环境 – CPU 或 GPU。
  • Python 版本 – 2.7 或 3.6。
  • 分布式训练 – Horovod 框架的可用性。
  • 操作系统 – Ubuntu 16.04。

Deep Learning Containers 的使用

为了使用 AWS Deep Learning Container,我使用一个 p2.8xlarge 实例创建了一个 Amazon ECS 集群:

复制代码
$ aws ec2 run-instances --image-id ami-0ebf2c738e66321e6 \
--count 1 --instance-type p2.8xlarge \
--key-name keys-jbarr-us-east ...

我验证了该集群正在运行,并确认 ECS 容器代理已激活:

AWS Deep Learning Containers

然后我在一个文本文件 (gpu_task_def.txt) 中创建了一条任务定义:

复制代码
{
"requiresCompatibilities": [
"EC2"
],
"containerDefinitions": [
{
"command": [
"tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=saved_model_half_plus_two_gpu --model_base_path=/models/saved_model_half_plus_two_gpu"
],
"entryPoint": [
"sh",
"-c"
],
"name": "EC2TFInference",
"image": "841569659894.dkr.ecr.us-east-1.amazonaws.com/sample_tf_inference_images:gpu_with_half_plus_two_model",
"memory": 8111,
"cpu": 256,
"resourceRequirements": [
{
"type": "GPU",
"value": "1"
}
],
"essential": true,
"portMappings": [
{
"hostPort": 8500,
"protocol": "tcp",
"containerPort": 8500
},
{
"hostPort": 8501,
"protocol": "tcp",
"containerPort": 8501
},
{
"containerPort": 80,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/TFInference",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
}
}
],
"volumes": [],
"networkMode": "bridge",
"placementConstraints": [],
"family": "Ec2TFInference"
}

我注册了该任务定义,然后记住了修订版次 (3):
AWS Deep Learning Containers
然后,我使用该任务定义和修订版次创建了一个服务:
AWS Deep Learning Containers

我通过控制台导航至该任务:
AWS Deep Learning Containers

然后我找到了端口 8501 的外部链接:

AWS Deep Learning Containers

然后我运行了三个推理(此特定模型使用如下函数进行训练:y = ax + b,其中 a = 0.5,b = 2):

复制代码
$ curl -d '{"instances": [1.0, 2.0, 5.0]}' \
-X POST http://xx.xxx.xx.xx:8501/v1/models/saved_model_half_plus_two_gpu:predict
{
"predictions": [2.5, 3.0, 4.5
]
}

正如您可以看出,推理预测输入值为 1.0、2.0 和 5.0 时,值将为 2.5、3.0 和 4.5。这是一个非常非常简单的示例,但也很好地说明了通过 Deep Learning Containers,在 ECS 中使用预先训练的模型来执行推理的方法。您还可以启动用于训练用途的模型,执行训练,然后运行一些推理。

作者介绍:
Jeff Barr
AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/new-aws-deep-learning-containers/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布