本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用燒瓶和 AWS Elastic Beanstalk 以視覺化方式呈現 AI/ML 模型結果
由克里斯·考迪爾(AWS)和杜爾加蘇里(AWS)創建
:Entiment PoC 或試驗 | :機器學習與 AI;分析;DevOps;網站與網路應用程式 | 工作負載:開放原始碼 |
AWS 服務:Amazon Comprehend; AWS Elastic Beanstalk |
Summary
將人工智慧和機器學習 (AI/ML) 服務的輸出視覺化通常需要複雜的 API 呼叫,這些呼叫必須由您的開發人員和工程師自訂。如果您的分析師想要快速探索新的資料集,這可能是一個缺點。
您可以使用 Web 型使用者介面 (UI) 來增強服務的可存取性,並提供更具互動性的資料分析形式,讓使用者能夠上傳自己的資料,並在儀表板中視覺化模型結果。
此模式使用Flask
先決條件和限制
先決條件
作用中的 AWS 帳戶
AWS Command Line Interface (AWS CLI),已安裝並設定在您的本機電腦。如需此項目的詳細資訊,請參閱組態基礎概念儲存在 AWS CLI 文件中。您也可以使用 AWS Cloud9 整合式開發環境 (IDE);如需有關此方面的詳細資訊,請參閱AWS Cloud9 的教學課程和預覽 AWS Cloud9 IDE 中執行的應用程式儲存在 AWS Cloud9 文件中。
瓶的 Web 應用程序框架的理解。如需 Flask 的詳細資訊,請參閱快速指南
在瓶文檔中。 已安裝並設定 Python 3.6 或更新版本。您可以遵循中的指示安裝 Python設定您的 Python 開發環境AWS Elastic Beanstalk 文件中的。
已安裝並設定 Elastic Beanstalk 命令列界面 (EB CLI)。如需此項目的詳細資訊,請參閱安裝 EB CLI和設定 EB CLI來自 AWS Elastic Beanstalk 文件。
限制
這種模式的 Flask 應用程序被設計為與使用單個文本列的 .csv 文件一起工作,並且限制為 200 行。應用程式程式碼可以調整以處理其他檔案類型和資料磁碟區。
應用程式不會考慮資料保留,而且會繼續彙總上傳的使用者檔案,直到手動刪除為止。您可以將應用程式與 Amazon Simple Storage Service (Amazon S3) 整合以進行永久性物件儲存,或使用資料庫 (例如 Amazon DynamoDB) 來進行無伺服器鍵值儲存。
申請只考慮英語文件。但是,您可以使用 Amazon Comprehend 來檢測文檔的主要語言。如需每個動作支援語言的詳細資訊,請參閱API 參考在 Amazon Comprehend 文檔中。
包含常見錯誤及其解決方案的疑難排解清單可在其他資訊區段。
Architecture
Flask 應用程式架構
瓶是用於在 Python 開發 Web 應用程序的輕量級框架。它被設計來結合 Python 強大的數據處理與豐富的 Web 用戶界面。該模式的 Flask 應用程序向您展示如何構建一個 Web 應用程序,使用戶能夠上傳數據,將數據發送到 Amazon Comprehend 進行推斷,然後將結果視覺化。 應用程式的結構如下:
static
— 包含支援 Web UI (例如 JavaScript、CSS 和影像) 的所有靜態檔案 (例如,JavaScript、CSS 和影像)templates
— 包含應用程式的所有 HTML 網頁userData
-存儲上傳的用戶數據application.py
-瓶應用程序文件comprehend_helper.py
— 函數,使 API 呼叫 Amazon Comprehendconfig.py
— 應用程式組態檔requirements.txt
-應用程序所需的 Python 依賴關係
所以此application.py
腳本包含 Web 應用程序的核心功能,它由四個 Flask 路由組成。下圖顯示了這些 Flask 路由。

/
是應用程序的根目錄,並將用戶導向upload.html
頁面 (儲存在templates
目錄)。/saveFile
是用戶上傳檔案後叫用的路由。此路由接收POST
請求,其中包含由用戶上傳的文件。檔案會儲存在userData
目錄,並且路由會將使用者重新導向至/dashboard
路由。/dashboard
會將使用者傳送至dashboard.html
(憑證已建立!) 頁面上的名稱有些許差異。在這個頁面的 HTML 中,它 JavaScript 在static/js/core.js
,從/data
路由,然後建置頁面的視覺效果。/data
是一個 JSON API,它呈現要在儀表板中可視化的數據。此路由讀取用戶提供的數據,並使用comprehend_helper.py
將使用者資料傳送至 Amazon Comprehend 以進行情緒分析和命名實體辨識 (NER)。亞馬遜理解的響應被格式化並返回為 JSON 對象。
部署架構

如需有關在 AWS 雲端上使用 Elastic Beanstalk 部署的應用程式之設計考量的詳細資訊,請參閱設計考量AWS Elastic Beanstalk 文件中的。
技術堆疊
Amazon Comprehend
Elastic Beanstalk
Flask
自動化和擴充
Elastic Beanstalk 部署會自動設定負載平衡器和自動調整群組。如需更多組態選項,請參閱設定 Elastic Beanstalk 環境AWS Elastic Beanstalk 文件中的。
Tools
AWS 命令列界面 (AWS CLI)— AWS CLI 是統一的工具,可提供一致的界面,讓您與 AWS 的所有服務互動。
Amazon Comprehend-Amazon Comprehend 使用自然語言處理 (NLP) 擷取文件內容的洞察,無需特殊預處理。
AWS Elastic Beanstalk— Elastic Beanstalk 可協助您在 AWS 雲端快速部署和管理應用程式,無需了解執行這些應用程式的基礎設施。
EElastic Beanstalk CLI (EB CLI)— EB CLI 是 AWS Elastic Beanstalk 的命令列界面,可提供互動式命令,簡化自本機儲存庫建立、更新和監控環境的作業。
Flask
-瓶框架使用 Python 執行數據處理和 API 調用,並提供交互式 Web 可視化與 Plotly。
Code
這種模式的代碼可以在 GitHub使用燒瓶和 AWS Elastic Beanstalk 以視覺化方式呈現 AI/ML 模型結果
Epics
任務 | 描述 | 所需技能 |
---|---|---|
複製 GitHub 儲存庫。 | 從 GitHub 中提取應用程式程式碼使用燒瓶和 AWS Elastic Beanstalk 以視覺化方式呈現 AI/ML 模型結果
請注意:請確保您使用 GitHub 配置您的 SSH 密鑰。 | 開發人員 |
安裝 Python 模組。 | 克隆儲存庫之後,會使用新的本機
| Python 開發人員 |
在本機測試應用程式。 | 執行以下命令啟動 Flask 服務器:
這會傳回關於執行中伺服器的資訊。您應該可以通過打開瀏覽器並訪問 http://localhost:5000 訪問該應用程序 請注意:如果您是在 AWS Cloud9 IDE 中執行應用程式,則需要將
您必須在部署之前還原此變更。 | Python 開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
啟動 Elastic Beanstalk 應用程式。 | 若要以 Elastic Beanstalk 應用程式啟動專案,請從應用程式的根目錄執行下列命令:
重要:
執行 | 建築師、開發人員 |
部署 Elastic Beanstalk 環境。 | 從應用程式的根目錄執行以下命令:
注意: | 建築師、開發人員 |
授權您的部署使用 Amazon Comprehend。 | 雖然您的應用程式可能已成功部署,但您還應該為您的部署提供存取 Amazon Comprehend 權限。 將附加
Important (重要): | 開發人員、安全架構師 |
造訪您已部署的應用程式。 | 成功部署應用程式之後,您可以透過執行 您也可以 | 建築師、開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
授權 Elastic Beanstalk 存取新模型。 | 確保 Elastic Beanstalk 具有新模型端點所需的存取權限。例如,如果您使用 Amazon SagMaker 終端節點,您的部署必須具有叫用終端節點的權限。 如需此項目的詳細資訊,請參閱InvokeEndpoint在 Amazon SagMaker 文件中。 | 開發人員、安全架構師 |
將用戶數據發送到一個新模型。 | 若要變更此應用程式中的基礎 ML 模型,您必須變更下列檔案:
| DataScientist |
更新儀表板視覺效果。 | 通常,納入新的 ML 模型表示必須更新視覺效果才能反映新的結果。這些變更會在下列檔案中進行:
| 網頁開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
更新應用程式的需求檔案。 | 在將變更傳送至 Elastic Beanstalk 之前,請先更新
| Python 開發人員 |
重新部署 Elastic Beanstalk 環境。 | 若要確保您的應用程式變更會反映在 Elastic Beanstalk 部署中,請瀏覽至應用程式的根目錄,然後執行下列命令:
這會將最新版本的應用程式程式碼傳送到您現有的 Elastic Beanstalk 部署。 | 系統管理員, 架構師 |
相關資源
其他資訊
故障診斷清單
以下是六個常見錯誤及其解決方案。
錯誤 1
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
解決方案:如果當您執行eb create
,請在 Elastic Beanstalk 主控台建立範例應用程式,以建立預設執行個體設定檔。如需此項目的詳細資訊,請參閱建立 Elastic Beanstalk 環境AWS Elastic Beanstalk 文件中的。
錯誤 2
Your WSGIPath refers to a file that does not exist.
解決方案:此錯誤發生在部署日誌中,因為 Elastic Beanstalk 期望將 Flask 代碼命名為application.py
。如果您選擇了不同的名稱,請執行eb config
並編輯 WSGiPath,如下程式碼範例所示:
aws:elasticbeanstalk:container:python: NumProcesses: '1' NumThreads: '15' StaticFiles: /static/=static/ WSGIPath: application.py
請確定您將application.py
使用您的檔案名稱。
您也可以利用甘尼康和加速檔案。如需此方法的詳細資訊,請參閱使用 Procfile 設定 WSGI 伺服器AWS Elastic Beanstalk 文件中的。
錯誤 3
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
解決方案:Elastic Beanstalk 期望代表您的 Flask 應用程序的變量被命名為application
。請確定application.py
檔案使用application
作為變量名稱:
application = Flask(__name__)
錯誤 4
The EB CLI cannot find your SSH key file for keyname
解決方案:使用 EB CLI 指定要使用的 key pair,或為部署的 EC2 執行個體建立 key pair。若要解決此錯誤,請執行eb init -i
,其中一個選項會問:
Do you want to set up SSH for your instances?
回應Y
建立 key pair 或指定現有金鑰對。
錯誤 5
我已經更新了我的代碼並重新部署,但我的部署沒有反映我的更改。
解決方案:如果您在部署中使用 Git 存放庫,請務必在重新部署之前新增並提交變更。
錯誤 6
您正在從 AWS Cloud9 IDE 預覽燒瓶應用程序並遇到錯誤。
解決方案:如需此項目的詳細資訊,請參閱預覽 AWS Cloud9 IDE 中執行的應用程式儲存在 AWS Cloud9 文件中。
使用 Amazon Comprehend 的自然語言處理
選擇使用 Amazon Comprehend,您可以透過執行即時分析或非同步批次任務來偵測個別文字文件中的自訂實體。Amazon Comprehend 還可讓您訓練自訂實體辨識和文字分類模型,這些模型可透過建立終端節點即時使用。
此模式使用非同步批次工作,從包含多個文件的輸入檔中偵測情緒和實體。此模式提供的示例應用程序旨在為用戶上傳包含單列的 .csv 文件,每行包含一個文本文件。所以此comprehend_helper.py
文件中的使用燒瓶和 AWS Elastic Beanstalk 以視覺化方式呈現 AI/ML 模型結果
批次偵測
Amazon Comprehend 檢查一批文檔的命名實體的文本,並返回檢測到的實體,位置,實體類型,以及表示亞馬遜理解的信心水平的分數。一次 API 呼叫最多可傳送 25 份文件,每份文件的大小小於 5,000 個位元組。您可以篩選結果,以僅顯示基於使用案例的特定實體。例如,您可以跳過‘quantity’
實體類型,並為偵測到的實體設定臨界值分數 (例如,0.75)。建議您在選擇臨界值之前,先瀏覽特定使用案例的結果。如需此項目的詳細資訊,請參閱批次偵測在 Amazon Comprehend 文檔中。
BatchDetectSentiment
Amazon Comprehend 檢查一批傳入文檔,並返回每個文檔的普遍情緒(POSITIVE
、NEUTRAL
、MIXED
, 或NEGATIVE
。一次 API 呼叫最多可傳送 25 份文件,每份文件的大小小於 5,000 個位元組。分析情緒非常簡單,您可以選擇要在最終結果中顯示得分最高的情緒。如需此項目的詳細資訊,請參閱BatchDetectSentiment在 Amazon Comprehend 文檔中。
Flask 配置處理
燒瓶服務器使用一系列組態變數
在這種模式中,配置在config.py
,並繼承於application.py
。
config.py
包含在應用程式啟動時設定的組態變數。在此應用程式中,DEBUG
變量被定義為告訴應用程序在除錯模式。請注意:在生產環境中執行應用程式時,不應使用偵錯模式。 UPLOAD_FOLDER
是一個自定義變量,該變量被定義為稍後在應用程序中引用,並通知它上傳的用戶數據應該存儲在哪裡。application.py
啟動瓶應用程序,並繼承在定義的配置設置config.py
。這是由下列程式碼執行:
application = Flask(__name__) application.config.from_pyfile('config.py')