翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Flask と を使用して AI/ML モデルの結果を視覚化する AWS Elastic Beanstalk
Amazon Web Services、Chris Caudill、Durga Sury
概要
人工知能と機械学習 (AI/ML) サービスからの出力を視覚化するには、開発者やエンジニアがカスタマイズする必要な複雑な API 呼び出しが必要になることがよくあります。アナリストが新しいデータセットを迅速に探索する場合、これは欠点になる可能性があります。
ウェブベースのユーザーインターフェイス (UI) を使用することで、サービスのアクセシビリティを高め、よりインタラクティブなデータ分析を実現できます。これにより、ユーザーが独自のデータをアップロードし、ダッシュボードでモデルの結果を視覚化できます。
このパターンでは、Flask
前提条件と制限事項
前提条件
アクティブ AWS アカウント。
AWS Command Line Interface (AWS CLI) をローカルマシンにインストールして設定します。詳細については、 AWS CLI ドキュメントの「設定の基本」を参照してください。 AWS Cloud9 統合開発環境 (IDE) を使用することもできます。詳細については、 AWS Cloud9 ドキュメントの「 の Python チュートリアル AWS Cloud9」および「IDE AWS Cloud9 で実行中のアプリケーションのプレビュー」を参照してください。
注意: AWS Cloud9 は新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS Cloud9 引き続き使用できます。詳細はこちら
Flask のウェブアプリケーションフレームワークについての理解。 へのサインアップの詳細については、 ドキュメント内のクイックスタート
を参照してください。 インストールされ、設定されたPython バージョン 3.6 以降。Python をインストールするには、 AWS Elastic Beanstalk ドキュメントの「Python 開発環境のセットアップ」の手順に従います。
Elastic Beanstalk コマンドラインインターフェイス (EB CLI) 詳細については、Elastic Beanstalk ドキュメントの「EB CLI のインストール」および「EB CLI の設定」を参照してください。
制限事項
このパターンの Flask アプリケーションは、単一のテキスト列を使用し、200 行に制限されている.csv ファイルで動作するように設計されています。アプリケーションコードは他のファイルタイプやデータ量を処理するように調整できます。
アプリケーションはデータの保持を考慮せず、アップロードされたユーザーファイルは手動で削除されるまで集計を続けます。アプリケーションを Amazon Simple Storage Service (Amazon S3) と統合して永続的なオブジェクトストレージを作成したり、Amazon DynamoDB などのデータベースを使用してサーバーレスのキーバリューストレージを作成したりできます。
このアプリケーションは英語のドキュメントのみを考慮します。ただし、Amazon Comprehend を使用してドキュメントの主要言語を検出することはできます。各アクションに適用される言語の詳細については、Amazon Comprehend ドキュメントのAPI リファレンス を参照してください。
アーキテクチャ
アプリケーションのアーキテクチャ
Flaskは、Pythonでウェブアプリケーションを開発するための軽量フレームワークです。Python の強力なデータ処理と豊富な ウェブ UI を組み合わせるように設計されています。パターンの Flask アプリケーションでは、ユーザーがデータをアップロードし、そのデータを Amazon Comprehend に送信して推論し、結果を視覚化するウェブアプリケーションの構築方法を示しています。 マッピングドキュメントの構造は次のとおりです。
static— ウェブ UI が適用されるすべての静的ファイル (JavaScript、CSS、画像など) が含まれています。templates— アプリケーションのすべての HTML ページが含まれます。userData— アップロードされたユーザーデータを格納します。application.py— Flask アプリケーションファイルcomprehend_helper.py— Amazon Comprehend に API 呼び出しを行う関数アプリケーション設定ファイル。
requirements.txt— アプリケーションに必要な Python の依存関係
application.py このスクリプトには、4 つの Flask ルートで構成されるウェブアプリケーションのコア機能が含まれています。以下の図に、これらの Flask ルートを示します。

/はアプリケーションのルートで、ユーザーをupload.htmlページ (templatesディレクトリに格納) にガイドします。/saveFileは、ユーザーがファイルをアップロードした後に呼び出されるルートです。このルートは、ユーザーがアップロードしたファイルを含む HTML フォームを介してPOSTリクエストを受け取ります。userDataファイルがディレクトリに保存され、ルートはユーザーを/dashboardルートにガイドします。/dashboardがユーザーをdashboard.htmlページにがガイドします。このページの HTML、/dataルートからデータを読み取るstatic/js/core.jsに JavaScript コードを実行して、ページの視覚化を構築します。/dataは、ダッシュボードに視覚化されるデータを表示する JSON API です。このルートでは、ユーザーが提供したデータを読み取り、comprehend_helper.pyの関数を使用してユーザーデータを Amazon Comprehend にガイドして、センチメント分析と名前付けのエンティティ認識 (NER) を行います。Amazon Comprehend レスポンスはフォーマットされ、JSON オブジェクトとして返されます。
デプロイアーキテクチャ

で Elastic Beanstalk を使用してデプロイされたアプリケーションの設計上の考慮事項の詳細については AWS クラウド、 AWS Elastic Beanstalk ドキュメントの「」を参照してください。
テクノロジースタック
Amazon Comprehend
(Elastic Beanstalk)
Flask
自動化とスケール
Elastic Beanstalk のデプロイは、ロードバランサーとauto スケーリンググループを使用して自動的にセットアップされます。その他の設定オプションについては、Elastic Beanstalk ドキュメントの「Elastic Beanstalk 環境の設定」を参照してください。
ツール
AWS Command Line Interface (AWS CLI) は、AWS のすべての部分とやり取りするための一貫したインターフェイスを提供する統合ツールです。
Amazon Comprehend では、ドキュメントの内容に関するインサイトの抽出用に自然言語処理 (NLP) を使用しています。
AWS Elastic Beanstalk を使用すると、これらのアプリケーションを実行するインフラストラクチャについて知る AWS クラウド ことなく、 でアプリケーションをすばやくデプロイおよび管理できます。
Elastic Beanstalk CLI (EB CLI) は、ローカルリポジトリからの環境の作成、更新、モニタリングを簡素化するインタラクティブなコマンド AWS Elastic Beanstalk を提供する のコマンドラインインターフェイスです。
Flask
フレームワークは Python を使用してデータ処理と API コールを実行し、Plotly を使用してインタラクティブなウェブビジュアライゼーションを提供します。
コードリポジトリ
このパターンのコードは、GitHub Visualize AI/ML model results using Flask and repository AWS Elastic Beanstalk
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
GitHub リポジトリのクローン作成 | 次のコマンドを実行して、Flask とリポジトリを使用して GitHub Visualize AI/ML モデルの結果からアプリケーションコードをプルします。 AWS Elastic Beanstalk
注記必ず GitHub に SSH キーを設定します。 | 開発者 |
Python モジュールをインストールします。 | リポジトリをクローンすると、新しいローカル
| Python 開発 |
アプリケーションのローカルテスト | 次のコマンドを実行して、Weka サーバーを作成します。
これにより、実行中のサーバーに関する情報が返されます。ブラウザを開いて http://localhost:5000 にアクセスすると、アプリケーションにアクセスできます。 注記 AWS Cloud9 IDE でアプリケーションを実行している場合は、
デプロイする前にこの変更を元に戻す必要があります。 | Python 開発 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
AWS Elastic Beanstalk アプリケーション | Elastic Beanstalk アプリケーションとしてプロジェクトを起動するには、アプリケーションのルートディレクトリから以下のコマンドを実行します。
重要
| アーキテクト、開発者 |
Elastic Beanstalk 環境をデプロイします。 | プロジェクトルートディレクトリから以下のコマンドを実行すると、アプリケーションが構築されます。
注記
| アーキテクト、開発者 |
Amazon Comprehend を使用するようにデプロイを承認します。 | アプリケーションは正常にデプロイされている可能性がありますが、Amazon Comprehend へのアクセスをデプロイに提供する必要があります。 次のコマンドを実行して、
重要
| 開発者、セキュリティアーキテクト |
デプロイしたアプリケーションにアクセスします。 | アプリケーションが正常にデプロイされた後、
| アーキテクト、開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
Elastic Beanstalk が新しいモデルにアクセスすることを許可します。 | Elastic Beanstalk に新しいモデルエンドポイントに必要なアクセス権限があることを保証します。例えば、Amazon SageMaker AI エンドポイントを使用する場合、デプロイにはエンドポイントを呼び出すアクセス許可が必要です。 詳細については、Amazon SageMaker InvokeEndpoint」を参照してください。 | 開発者、セキュリティアーキテクト |
ユーザーデータを新しいモデルに送信します。 | このアプリケーションの基になる ML モデルを変更するには、以下のファイルを変更する必要があります。
| データサイエンティスト |
ダッシュボードのビジュアライゼーションを更新します。 | 通常、新しい ML モデルを組み込むと、新しい結果を反映するようにビジュアライゼーションを更新する必要があります。これらのフラグは、次のファイルで定義されています。
| ウェブ開発者 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
アプリケーションの要件ファイルを更新します。 | Elastic Beanstalk に変更を送信する前に、アプリケーションのルートディレクトリで以下のコマンドを実行して、新しい Pythonモジュールを反映するように
| Python 開発 |
Elastic Beanstalk 環境をセットアップします。 | アプリケーションの変更が Elastic Beanstalk デプロイに確実に反映されるようにするには、アプリケーションのルートディレクトリに移動し、以下のコマンドを実行します。
これにより、アプリケーションのコードの最新バージョンが既存の Elastic Beanstalk デプロイに送信されます。 | システム管理者、アーキテクト |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
| の実行時にこのエラーが発生した場合は |
| このエラーは、Elastic Beanstalk が Flask コードの名前を と想定しているため、デプロイログで発生します
自分のファイル名で Gunicorn と Procfile を利用することもできます。このアプローチの詳細については、 AWS Elastic Beanstalk ドキュメントの「Procfile を使用した WSGI サーバーの設定」を参照してください。 |
| Elastic Beanstalk では、Flask アプリケーションを表す変数に という名前が付けられることを想定しています
|
| EB CLI を使用して、使用するキーペアを指定するか、デプロイの Amazon EC2 インスタンスのキーペアを作成します。エラーを解決するには、
|
コードを更新して再デプロイしましたが、デプロイには変更が反映されていません。 | デプロイで Git リポジトリを使用している場合は、再デプロイする前に必ず変更を追加してコミットしてください。 |
IDE から Flask AWS Cloud9 アプリケーションをプレビューしていて、エラーが発生します。 | 詳細については、 AWS Cloud9 ドキュメントの IDE AWS Cloud9 で実行中のアプリケーションのプレビューを参照してください。 |
関連リソース
追加情報
自然言語処理に Amazon Comprehend を使用
Amazon Comprehend を使用することを選択すると、リアルタイム分析または非同期バッチジョブを実行して、個々のテキストドキュメント内のカスタムエンティティを検出できます。Amazon Comprehend では、エンドポイントを作成することでリアルタイムで使用できるカスタムエンティティ認識モデルとテキスト分類モデルをトレーニングすることもできます。
このパターンでは、非同期バッチジョブを使用して、複数のドキュメントを含む入力ファイルからセンチメントとエンティティを検出します。このパターンで提供されるサンプルアプリケーションは、ユーザーが 1 つの列と 1 行に 1 つのテキストドキュメントを含む.csv ファイルをアップロードできるように設計されています。GitHub の comprehend_helper.pyファイルは、Flask とリポジトリを使用して AI/ML モデルの結果を視覚化し、入力ファイルを読み取り、Amazon Comprehend に入力を送信して処理します。 AWS Elastic Beanstalk
BatchDetectEntities
Amazon Comprehend は、名前付きエンティティのドキュメントのバッチのテキストを検査し、検出されたエンティティ、場所、エンティティのタイプ、および Amazon Comprehend の信頼レベルを示すスコアを返します。1 つの API 呼び出しで送信できるドキュメントは最大 25 個で、各ドキュメントのサイズは 5,000 バイト未満です。結果をフィルタリングして、ユースケースに基づいて特定のエンティティのみを表示できます。たとえば、‘quantity’ エンティティタイプをスキップして、検出されたエンティティのしきい値スコア (0.75 など) を設定できます。しきい値を選択する前に、特定のユースケースの結果を調べることを推薦します。これに関する詳細については、Amazon Comprehend ドキュメントのBatchDetectEntities を参照してください。
BatchDetectSentiment
Amazon Comprehend は、受信した複数のドキュメントを検査し、各ドキュメントの一般的なセンチメント(POSITIVE、NEUTRAL、MIXED、または NEGATIVE)を返します。1 つの API 呼び出しで送信できるドキュメントは最大 25 個で、各ドキュメントのサイズは 5,000 バイト未満です。センチメントの分析は簡単で、スコアが最も高いセンチメントを選択して最終結果に表示します。これに関する詳細については、Amazon Comprehend ドキュメントのBatchDetectSentiment を参照してください。
フラスコの設定処理
Flask サーバーは一連の設定変数
このパターンでは、設定が config.py で定義され、application.py の内部で継承されます。
config.pyには、アプリケーションの起動時に設定される設定変数が含まれます。このアプリケーションでは、サーバーをデバッグモードで実行するようにアプリケーションに指示する DEBUG変数が定義されています。注記
本番稼働環境でアプリケーションを実行するときは、デバッグモードを使用しないでください。
UPLOAD_FOLDERは、アプリケーションの後半で参照するように定義されたカスタム変数であり、アップロードされたユーザーデータを保存する場所を通知します。application.pyはFlask アプリケーションを初期化し、config.pyで定義されている設定を継承します。これは以下のコードによって実行されます。
application = Flask(__name__) application.config.from_pyfile('config.py')