虽然我很喜欢为自己建立数据科学和编程项目,但我同样乐于与世界上的任何人在线分享它。幸好,我们以使用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上部署深度学习模型...相关推荐

  1. 如何在虚拟主机上部署java项目_如何在购买的虚拟主机上部署java项目

    如何在购买的虚拟主机上部署java项目?要选购的虚拟主机来部署Java新项目,第一步要确保虚拟主机能够支持Java的项目,随后采用ftp客户端软件将Java的项目上传至虚拟主机的主目录下,如此一来就能 ...

  2. iis服务器发布web项目,webservice创建、发布及在IIS上部署

    一.项目创建 1.以vs2010为例,新建"asp.net空web应用程序" 2.在创建好的项目中新建项,创建web服务 3.打卡webservice1.asmx文件,更改name ...

  3. 如何学习一个新的计算机概念(协议等),如snmp? 上官网学习【官网集合】

    snmp学习,不要仅仅只在百度上翻阅.要养成习惯,去snmp的官网,读英文官方文档.这里会有一手的教程.源代码.命令行. Qt官网:https://www.qt.io .https://doc.qt. ...

  4. 【项目实战开发】第三章——在线生鲜商城系统

    系列文章目录 第一章--AI人机对战版五子棋游戏 第二章--在线商城系统 第三章--在线生鲜商城系统 文章目录 系列文章目录 前言 1.系统背景介绍 2. 功能需求分析 3.准备工作 3.1 用到的库 ...

  5. 在 Heroku 部署 PHP,在Heroku上部署PHP项目

    我已经在heroku上成功部署了我的 PHP项目,但问题是每当我输入"Heroku Open"以加载网页URL时,我都会收到以下错误: Forbidden You don't ha ...

  6. linux部署jar项目报错_如何在Linux服务器上部署jar包

    启动程序方法 1.上传jar包到linux服务器下 2.启动jar包 ​前台模式 java –jar XXXX.jar(注意这个命令启动时,断开服务连接后,服务就关闭了) ​后台模式 nohup ja ...

  7. 公司项目JAVA开发规范总结(三)——异常处理篇

    三.异常处理篇 1.自定义业务异常 概述:该类是为了让在业务层,能够返回错误信息,而不涉及控制层的返回封装类,让业务层和控制层能有效隔离开来. BusinessException类 @Data pub ...

  8. Unity(二)示例项目(1):FPS游戏—认识基本工具

    FPS第一人称视角射击游戏 1.许可证过期激活 2.下载并打开Unity示例项目FPS 3.认识基本工具 3.1抓手工具 3.2移动工具 3.3旋转工具 3.4缩放工具 3.5矩形工具 3.6多方向移 ...

  9. 【Java全栈】Java全栈学习路线及项目全资料总结【JavaSE+Web基础+大前端进阶+SSM+微服务+Linux+JavaEE】

    目录 jdk api 1.8中文版 jdk api 1.8_google.CHM 零:Java 全栈知识体系 第一阶段:JavaSE 一,程序应用(★★) 二,面向对象程序设计基础(★★★) 面向对象 ...

最新文章

  1. [JDK8] Stream
  2. confluence 卡顿原因总结
  3. 类似QQ管家页面jquery图片显隐轮换效果
  4. 操作系统服务:logging日志记录模块
  5. 面试官系统精讲Java源码及大厂真题 - 35 经验总结:各种锁在工作中使用场景和细节
  6. 使用layer的弹窗时,出现layer引入成功,触发成功,控制台无报错,但是页面无变化或者仅出现遮罩层的问题的解决思路
  7. android把2变成02_【Android】学习札记第2章之数组二(Arrays工具类)
  8. 中国大数据与智能计算产业联盟“开源软件工作委员会”成立会议在京召开
  9. 计算机管理中没有大容量存储,控制器没有足够的带宽可利用为USB大容量存储设备的解决方法...
  10. python k线斜率计算_关于数据拟合:找到斜率变化点作为自由参数 – Python
  11. linux引导文件制作U盘,Linux下制作U盘系统启动盘的方法
  12. Harbor镜像清理
  13. 边缘计算用matlab处理数据,边缘计算Edge Computing
  14. python爬今日头条组图_python 爬虫抓取今日头条街拍图片
  15. 当页面放大后, 背景会消失
  16. camera驱动电源配置_[ROS] 安装 USB Camera 驱动并调用
  17. Latex中的实心原点
  18. FCKeditor文本编辑器的优势以及用法
  19. u-boot for tiny210 version2.0(by liukun321咕唧咕唧)
  20. VS Code:因为在此系统上禁止运行脚本,解决方法

热门文章

  1. Java基础学习总结(81)——如何尽可能的减少Java代码中bug
  2. 软件工程学习总结(1)——软件测试工具详解
  3. android ffmpeg 解码,如何在Android用FFmpeg解码图像
  4. 第 2 章 MongoDB
  5. org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed
  6. Thrift辅助类,用于简化Thrift编程
  7. ARM汇编EQU伪指令
  8. js获取当前月的第一天和最后一天
  9. 应对亚洲劳动力成本不断上升的挑战
  10. 在VS2005中打造自己的Starter Kits