虽然我很喜欢为自己建立数据科学和编程项目,但我同样乐于与世界上的任何人在线分享它。幸好,我们以使用AWS(Amazon Web Services),这样我们可以在几分钟内免费将Python Web应用程序部署给全世界。
在本文中,我们将了解如何在免费的EC2实例上将深度学习Web应用程序部署到AWS。本文将使用在Python中使用在RNN示例项目从开发到部署(一):详解使用RNN撰写专利摘要一文中开发的模型,建立在RNN示例项目从开发到部署(二):将Keras深度学习模型部署为Web应用程序一文中构建的应用程序上。当然你现在可以不用管它们,只要知道我们的应用程序使用RNN生成新的专利摘要。项目的所有代码都可以在文末的GitHub链接上找到。
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。在页面顶部配置安全组。安全组过滤进出我们实例的流量,一般来说,谁可以访问我们的虚拟计算机。
安全组规则
实例启动并运行后,在EC2 实例仪表板(Services > EC2 > Running Instances)上选择它,然后单击Connect。这将为我们提供连接到实例的确切命令。
从EC2运行实例仪表板连接对话框。
复制示例代码,并将其粘贴到Bash或使用私钥在文件夹中运行的命令提示符中(在启动实例时生成)。如果一切顺利,你将登录到你的实例并查看熟悉的终端命令提示符。
这个AMI预装了Python 3.6,因此我们只需要克隆存储库并安装应用程序依赖项。首先,获取存储库:
git clone https://github.com/WillKoehrsen/recurrent-neural-networks.git
sudo apt-get update
sudo apt-get install python3-pip
cd recurrent-neural-networks
pip3 install --user -r requirements.txt
cd deployment
python3 run_keras_server.py
你应该在终端中看到以下输出:
Public DNS
Web应用程序的主页。
RNN应用。
# 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应用程序部署到世界各地。