使用aws跑深度学习_RNN示例项目从开发到部署(三):在AWS上部署深度学习模型...
虽然我很喜欢为自己建立数据科学和编程项目,但我同样乐于与世界上的任何人在线分享它。幸好,我们以使用AWS(Amazon Web Services),这样我们可以在几分钟内免费将Python Web应用程序部署给全世界。
在本文中,我们将了解如何在免费的EC2实例上将深度学习Web应用程序部署到AWS。本文将使用在Python中使用在RNN示例项目从开发到部署(一):详解使用RNN撰写专利摘要一文中开发的模型,建立在RNN示例项目从开发到部署(二):将Keras深度学习模型部署为Web应用程序一文中构建的应用程序上。当然你现在可以不用管它们,只要知道我们的应用程序使用RNN生成新的专利摘要。项目的所有代码都可以在文末的GitHub链接上找到。
AWS EC2
AWS是亚马逊云计算产品系列的总称。我们需要使用Amazon Elastic Compute Cloud(EC2),这是一种我们在云中租用虚拟计算机来运行应用程序的服务。AWS EC2有提供免费套餐,因此我们可以在不花费一分钱的情况下进行部署。
首先,请创建一个AWS账户,然后访问https://console.aws.amazon.com/ec2上的EC2控制台。单击Launch Instance按钮,你可以选择Amazon Machine Instance(AMI),“这是包含启动实例所需的软件配置(操作系统)的模板。”你可以使用你熟悉的任何操作系统(尽管一些不符合免费套餐的条件),而我使用的是Ubuntu Server 18.04:
AMI类型(Ubuntu 18.04)
点击Select,然后在下一页上选择符合条件的免费套餐t2.micro实例(实例是我们AMI的硬件)。这只有1个CPU和1 GB的RAM,但足以运行我们预训练的RNN应用程序!如果你希望有更多流量或运行cpu密集型应用程序,你可能需要付钱。
安全组
选择所需的实例类型,然后转到选项卡6。在页面顶部配置安全组。安全组过滤进出我们实例的流量,一般来说,谁可以访问我们的虚拟计算机。
你(并且只有你)需要通过ssh访问实例,因此要为SSH添加Source下的“My IP” 规则。我们希望其他人能够在Web浏览器中访问我们的应用程序,因此添加规则允许所有源的进行HTTP访问。最终的安全配置是:
安全组规则
接下来,点击Review and Launch然后点击Launch。然后会显示密钥对的选项。你需要通过ssh访问服务器,因此请确保创建一个新的密钥对,并将私钥保存在你能记住的地方。如果丢失了,你将无法再次访问你的实例!
最后,点击Launch Instances,Amazon将启动完全属于你自己的虚拟机,它物理上位于……我也不知道在哪儿。等待几分钟使实例启动,然后进入到下一步:连接到你的实例。
通过SSH连接到服务器
实例启动并运行后,在EC2 实例仪表板(Services > EC2 > Running Instances)上选择它,然后单击Connect。这将为我们提供连接到实例的确切命令。
从EC2运行实例仪表板连接对话框。
复制示例代码,并将其粘贴到Bash或使用私钥在文件夹中运行的命令提示符中(在启动实例时生成)。如果一切顺利,你将登录到你的实例并查看熟悉的终端命令提示符。
安装要求
这个AMI预装了Python 3.6,因此我们只需要克隆存储库并安装应用程序依赖项。首先,获取存储库:
git clone https://github.com/WillKoehrsen/recurrent-neural-networks.git
然后安装pip,移动到存储库,并安装需求。
sudo apt-get update
sudo apt-get install python3-pip
cd recurrent-neural-networks
pip3 install --user -r requirements.txt
运行和访问Web应用程序
运行应用程序很简单(对于第二个命令,你可能需要sudo):
cd deployment
python3 run_keras_server.py
你应该在终端中看到以下输出:
这个应用程序实际运行在localhost:80 /,这是在虚拟机上。要让我们可以访问Web应用程序,我们必须使用可在运行的实例仪表板上找到的实例的Public DNS IPv4 。
Public DNS
将地址复制并粘贴到你的浏览器中,你就会看到该应用程序!
Web应用程序的主页。
随意使用RNN应用程序。它正在做的是生成新的专利摘要,其中使用一个用关键词“神经网络”的数千个摘要训练的RNN。你可以输入random生成随机起始序列,或键入你自己的序列。
RNN应用。
现在,世界上任何人都可以通过IPv4访问你的应用程序。如果你想让应用程序在退出实例后仍然运行,请在Screen 会话中运行它。(Screen 是一个方便的程序,它让你可以使用虚拟控制台从单个终端窗口运行终端会话。)
# From within recurrent-neural-networks/deployment
screen -R deploy
python3 run_keras_server.py
我的(如果我没有关闭它或遇到错误)应用程序应该运行在http://54.173.255.177/。因为我使用的是t2.micro实例,所以永久运行这个Web应用程序的成本为零!如果你想要域名,可以从域名注册商(如Hover)中选择一个域名。
下一步
虽然这是快速部署个人项目的一个不错的解决方案,但这不是生产就绪的部署!想要就绪,你需要确保使用适当的安全性(使用HTTPS和认证证书)。您还需要确保应用程序能够处理预期的流量。这用于没有敏感数据的小型项目使用的特定解决方案。
结论
我们真正生活在令人难以置信的时代:使用Flask,我们可以在几分钟内开发一个Python Web应用程序,然后我们可以通过AWS免费部署到全球。我们遵循流程是:开发Web应用程序(最好是Python),从云提供商那里租用商品硬件,并将web应用程序部署到世界各地。
GitHub:https://github.com/WillKoehrsen/recurrent-neural-networks
相关内容:
使用aws跑深度学习_RNN示例项目从开发到部署(三):在AWS上部署深度学习模型...相关推荐
- 如何在虚拟主机上部署java项目_如何在购买的虚拟主机上部署java项目
如何在购买的虚拟主机上部署java项目?要选购的虚拟主机来部署Java新项目,第一步要确保虚拟主机能够支持Java的项目,随后采用ftp客户端软件将Java的项目上传至虚拟主机的主目录下,如此一来就能 ...
- iis服务器发布web项目,webservice创建、发布及在IIS上部署
一.项目创建 1.以vs2010为例,新建"asp.net空web应用程序" 2.在创建好的项目中新建项,创建web服务 3.打卡webservice1.asmx文件,更改name ...
- 如何学习一个新的计算机概念(协议等),如snmp? 上官网学习【官网集合】
snmp学习,不要仅仅只在百度上翻阅.要养成习惯,去snmp的官网,读英文官方文档.这里会有一手的教程.源代码.命令行. Qt官网:https://www.qt.io .https://doc.qt. ...
- 【项目实战开发】第三章——在线生鲜商城系统
系列文章目录 第一章--AI人机对战版五子棋游戏 第二章--在线商城系统 第三章--在线生鲜商城系统 文章目录 系列文章目录 前言 1.系统背景介绍 2. 功能需求分析 3.准备工作 3.1 用到的库 ...
- 在 Heroku 部署 PHP,在Heroku上部署PHP项目
我已经在heroku上成功部署了我的 PHP项目,但问题是每当我输入"Heroku Open"以加载网页URL时,我都会收到以下错误: Forbidden You don't ha ...
- linux部署jar项目报错_如何在Linux服务器上部署jar包
启动程序方法 1.上传jar包到linux服务器下 2.启动jar包 前台模式 java –jar XXXX.jar(注意这个命令启动时,断开服务连接后,服务就关闭了) 后台模式 nohup ja ...
- 公司项目JAVA开发规范总结(三)——异常处理篇
三.异常处理篇 1.自定义业务异常 概述:该类是为了让在业务层,能够返回错误信息,而不涉及控制层的返回封装类,让业务层和控制层能有效隔离开来. BusinessException类 @Data pub ...
- Unity(二)示例项目(1):FPS游戏—认识基本工具
FPS第一人称视角射击游戏 1.许可证过期激活 2.下载并打开Unity示例项目FPS 3.认识基本工具 3.1抓手工具 3.2移动工具 3.3旋转工具 3.4缩放工具 3.5矩形工具 3.6多方向移 ...
- 【Java全栈】Java全栈学习路线及项目全资料总结【JavaSE+Web基础+大前端进阶+SSM+微服务+Linux+JavaEE】
目录 jdk api 1.8中文版 jdk api 1.8_google.CHM 零:Java 全栈知识体系 第一阶段:JavaSE 一,程序应用(★★) 二,面向对象程序设计基础(★★★) 面向对象 ...
最新文章
- [JDK8] Stream
- confluence 卡顿原因总结
- 类似QQ管家页面jquery图片显隐轮换效果
- 操作系统服务:logging日志记录模块
- 面试官系统精讲Java源码及大厂真题 - 35 经验总结:各种锁在工作中使用场景和细节
- 使用layer的弹窗时,出现layer引入成功,触发成功,控制台无报错,但是页面无变化或者仅出现遮罩层的问题的解决思路
- android把2变成02_【Android】学习札记第2章之数组二(Arrays工具类)
- 中国大数据与智能计算产业联盟“开源软件工作委员会”成立会议在京召开
- 计算机管理中没有大容量存储,控制器没有足够的带宽可利用为USB大容量存储设备的解决方法...
- python k线斜率计算_关于数据拟合:找到斜率变化点作为自由参数 – Python
- linux引导文件制作U盘,Linux下制作U盘系统启动盘的方法
- Harbor镜像清理
- 边缘计算用matlab处理数据,边缘计算Edge Computing
- python爬今日头条组图_python 爬虫抓取今日头条街拍图片
- 当页面放大后, 背景会消失
- camera驱动电源配置_[ROS] 安装 USB Camera 驱动并调用
- Latex中的实心原点
- FCKeditor文本编辑器的优势以及用法
- u-boot for tiny210 version2.0(by liukun321咕唧咕唧)
- VS Code:因为在此系统上禁止运行脚本,解决方法
热门文章
- Java基础学习总结(81)——如何尽可能的减少Java代码中bug
- 软件工程学习总结(1)——软件测试工具详解
- android ffmpeg 解码,如何在Android用FFmpeg解码图像
- 第 2 章 MongoDB
- org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed
- Thrift辅助类,用于简化Thrift编程
- ARM汇编EQU伪指令
- js获取当前月的第一天和最后一天
- 应对亚洲劳动力成本不断上升的挑战
- 在VS2005中打造自己的Starter Kits