RNN示例项目从开发到部署(三):在AWS上部署深度学习模型

2018年11月22日 由 yuxiangyu 发表 428422 0

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


在AWS上部署深度学习模型

AMI类型(Ubuntu 18.04)


点击Select,然后在下一页上选择符合条件的免费套餐t2.micro实例(实例是我们AMI的硬件)。这只有1个CPU和1 GB的RAM,但足以运行我们预训练的RNN应用程序!如果你希望有更多流量或运行cpu密集型应用程序,你可能需要付钱。



安全组


选择所需的实例类型,然后转到选项卡6。在页面顶部配置安全组。安全组过滤进出我们实例的流量,一般来说,谁可以访问我们的虚拟计算机。


你(并且只有你)需要通过ssh访问实例,因此要为SSH添加Source下的“My IP” 规则。我们希望其他人能够在Web浏览器中访问我们的应用程序,因此添加规则允许所有源的进行HTTP访问。最终的安全配置是:

在AWS上部署深度学习模型

安全组规则


接下来,点击Review and Launch然后点击Launch。然后会显示密钥对的选项。你需要通过ssh访问服务器,因此请确保创建一个新的密钥对,并将私钥保存在你能记住的地方。如果丢失了,你将无法再次访问你的实例!

最后,点击Launch Instances,Amazon将启动完全属于你自己的虚拟机,它物理上位于……我也不知道在哪儿。等待几分钟使实例启动,然后进入到下一步:连接到你的实例。

通过SSH连接到服务器


实例启动并运行后,在EC2 实例仪表板(Services > EC2 > Running Instances)上选择它,然后单击Connect。这将为我们提供连接到实例的确切命令。


在AWS上部署深度学习模型

从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

你应该在终端中看到以下输出:


在AWS上部署深度学习模型

这个应用程序实际运行在localhost:80 /,这是在虚拟机上。要让我们可以访问Web应用程序,我们必须使用可在运行的实例仪表板上找到的实例的Public DNS IPv4 。

在AWS上部署深度学习模型

Public DNS


将地址复制并粘贴到你的浏览器中,你就会看到该应用程序!

在AWS上部署深度学习模型

Web应用程序的主页。


随意使用RNN应用程序。它正在做的是生成新的专利摘要,其中使用一个用关键词“神经网络”的数千个摘要训练的RNN。你可以输入random生成随机起始序列,或键入你自己的序列。

在AWS上部署深度学习模型

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

相关内容:

RNN示例项目从开发到部署(一):详解使用RNN撰写专利摘要

RNN示例项目从开发到部署(二):将Keras深度学习模型部署为Web应用程序
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消