写点什么

AWS Deep Learning Containers

  • 2019-10-05
  • 本文字数:1874 字

    阅读完需:约 6 分钟

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 容器代理已激活:



然后我在一个文本文件 (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):



然后,我使用该任务定义和修订版次创建了一个服务:



我通过控制台导航至该任务:



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



然后我运行了三个推理(此特定模型使用如下函数进行训练: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/


2019-10-05 22:12783
用户头像

发布了 1936 篇内容, 共 161.6 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

架构1期模块五作业

五只羊

架构实战营

三分钟快速了解 Cglib 动态代理

4ye

Java 后端 cglib 代理模式 8月日更

JavaScript单元测试的“抹茶”组合:Mocha和Chai

devpoint

JavaScript 单元测试 8月日更

敏捷开发

LeifChen

Scrum 敏捷开发 迭代 8月日更

蔚来事故背后,“致命弯道”在辅助驾驶和自动驾驶之间

脑极体

前端之算法(七)动态规划

Augus

算法 8月日更

老用户运营从哪里切入?

boshi

运营 私域运营

云原生时代到来了么?

escray

学习 极客时间 如何落地业务建模 8月日更

在线文字图标logo文章封面图生成工具

入门小站

工具

【设计模式】状态模式

Andy阿辉

C# 编程 后端 设计模式 8月日更

iOS开发:Xcode自带的模拟器常用快捷键的使用

三掌柜

8月日更 8月

分片上传Minio存储服务的问题集锦[推荐收藏]

liuzhen007

8月日更

Go- 常量

HelloBug

常量 const Go 语言

Magician has released a new version

Magician网络编程包

Java Web 网络编程 io nio

Flink 和流式应用运维(十-上)

Databri_AI

flink API REST API

如何实现分布式锁,聊聊你的想法?

卢卡多多

redis 分布式锁 8月日更

网络攻防学习笔记 Day108

穿过生命散发芬芳

网络安全 8月日更

还在死磕 Ajax?那可就 out 了!

编程三昧

JavaScript 大前端 8月日更 Fetch

高可用架构(下)

编号94530

数据库 架构设计 异地多活容灾 高可用架构

敏捷实践 | 分不清Kanban和看板的只剩你了……

LigaAI

Scrum Kanban 敏捷开发 看板

Go- 变量

HelloBug

变量 Go 语言

Obsidian一个不错的软件

IT蜗壳-Tango

8月日更

模块五作业

老实人Honey

架构训练营

聊一聊这些年看过的动漫

箭上有毒

8月日更

基于AOP和HashMap原理学习,开发Mysql分库分表路由组件!

小傅哥

小傅哥 hashmap 分库分表 aop 数据散列

简简单单实现 Python Web 的登录注册页面,还包含一半逻辑。

梦想橡皮擦

8月日更

破解AI开课难题!2021 全国人工智能师资培训落地厦门大学

百度大脑

人工智能

耗时24小时整理了网络安全学习路线,非常详细!

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

【架构设计模块五】:设计微博系统中”微博评论“的高性能高可用计算架构

Ryoma

Linux之ab命令

入门小站

Linux

Ansible 管理 Windows 机器配置过程。

耳东@Erdong

windows ansible 8月日更

AWS Deep Learning Containers_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章