ImageLabeller Web サービス

当社のチームは Jira Software とさまざまな接続ツールを使用してアプリケーションを開発、デプロイ、管理する方法を説明するために、機械学習を使用してイメージにラベルを添付する AWS 上に構築されたシンプルなデモ アプリケーションである ImageLabeller を作成しました。

AWS デモ アプリケーション | ImageLabeller

Image Labeller は、機械学習を使用して画像にラベルを添付するシンプルなデモ アプリケーションです。AWS LambdaAWS DynamoDBAWS S3AWS SageMakerAWS API GatewayAWS CloudWatchAWS CloudFormation を使用して、GoPython で記述されています。このガイドでは、Atlassian Open DevOps ツールを使用して、これらのコンポーネントのサブセットをデプロイして監視する方法について説明します。

アーキテクチャ

ImageLabeller のアーキテクチャ

動作の仕組み

ユーザーが AWS Lambda SubmitImage を呼び出して、有効なイメージ URL をパラメータとして渡します。SubmitImage はイメージをダウンロードして、AWS S3 バケット open-devops-images-<region> にアップロードし、新しいタプルを AWS DynamoDB テーブル ImageLabels に挿入して、イメージ ID トークンをユーザーに返します。イメージ ID トークンは、open-devops-images-<region> 内のイメージと ImageLabels のタプルを相関させるために使用されます。

AWS Lambda InvokeLabeller には、AWS DynamoDB イベント トリガーがあります。InvokeLabeller は open-devops-images-<region> から対応するイメージをダウンロードして、事前トレーニングされた AWS SageMaker Inception V3 モデルを呼び出してイメージ ラベルを生成します。新しいタプルが ImageLabels に挿入されると、ImageLabels のタプルがアップデートされます。

ユーザーは AWS Lambda GetImageLabel を呼び出して、イメージ ID トークンをパラメータとして渡します。GetImageLabel は ImageLabels 内のイメージ ID トークンに関連付けられたラベルを検索して、結果をユーザーに返します。AWS SageMaker モデルが画像の処理を完了していない場合は、ユーザーは NOT_Classified ラベルを取得します。

Image Labeller は 5 つの環境にデプロイされます。us-west-1 のテスト環境、us-east-2 のステージング環境、そして us-west-2、us-east-1、ca-central-1 の 3 つの本番環境の計 5 つです。

Image Labeller のコードで公開されている GitHub リポジトリ

https://github.com/AtlassianOpenDevOpsGuides

このガイドの使用方法

ImageLabeller の一部である AWS S3 バケットと AWS DynamoDB テーブルは、AWS CloudFormation テンプレートを使用してデプロイされます。このガイドでは、AWS S3 バケットをデプロイする方法に関する CI/CD 設定情報を提供します。AWS DynamoDB テーブルをデプロイするプロセスはほぼ同じで、自分で行える演習として用意されています。

ImageLabeller プロジェクトには、SubmitImage、InvokeLabeller、GetImageLabel の 3 つの AWS Lambda があります。このガイドでは、SubmitImage をデプロイする方法に関する CI/CD の設定情報を提供します。GetIMageLabel をデプロイするプロセスはほぼ同じで、自分で行える演習として用意されています。

InvokeLabeller は Python ベースの AWS Lambda で、公開する前にマイナー アップデートが必要です。具体的には、InvokeLabeller は AWS コンソールを介して実行される AWS SageMaker の設定に依存します。

ImageLabeller プロジェクトに含まれるシステム テストは、ImageLabeller 全体をテストします。ImageLabeller のコンポーネントが存在しないか、期待どおりに動作していない場合、テストは失敗します。SubmitImage、GetImageLabel、InvokeLabeller のデプロイは、それぞれの CI/CD パイプラインの一部としてシステム テストをすべて実行します。

SubmitImage、GetImageLabel、InvokeLabeller の初期デプロイでは、システム テストの実行ステップをコメント アウトする必要があります。デプロイが 1 回正常に実行された後は、システム テストの実行ステップのコメントを解除して再デプロイできます。

コンポーネントをデプロイする順序

AWS SageMaker 事前トレーニング済みモデルを AWS コンソールから手動でデプロイする

AWS インフラストラクチャ リポジトリをデプロイする

  1. s3_infra

  2. dynamodb_infra

AWS Lambda をデプロイする

  1. SubmitImage

  2. GetImageLabel

  3. InvokeLabeller

システム テストをデプロイする

CloudWatchAlarms をデプロイする

ImageLabeller とは何かが理解できたら、実際にデプロイしてみましょう。最初のステップは、AWS SageMaker をセットアップすることです。ここをクリックして始めましょう。

 

最終更新日 2021年09月24日)
次でキャッシュ 2:33 AM on Oct 19, 2021 |

その他のヘルプ