RNN示例項目從開發到部署(三):在AWS上部署深度學習模型

編譯:yxy

出品:ATYUN訂閱號

雖然我很喜歡爲自己建立數據科學和編程項目,但我同樣樂於與世界上的任何人在線分享它。幸好,我們以使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章