Athena でのML 予測のため、Amazon DynamoDB 内のデータを集約 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Athena でのML 予測のため、Amazon DynamoDB 内のデータを集約

作成者: Sachin Doshi (AWS) と Peter Molnar (AWS)

コードリポジトリ: Amazon Athena ML で Amazon DynamoDB データ経由で ML 予測 Amazon Athenaを使用する

環境:本稼働

テクノロジー: 機械学習と AI、データベース、サーバーレス

ワークロード: オープンソース

AWS サービス: Amazon AthenaAmazon DynamoDBAWSLambda、Amazon SageMaker、Amazon QuickSight

[概要]

このパターンは、Amazon Athena で Amazon DynamoDB テーブル内のモノのインターネット (IoT) データの複雑な集約を構築する方法を示しています。また、Amazon を使用して機械学習 (ML) 推論でデータを充実させる方法 SageMaker と、Athena を使用して地理空間データをクエリする方法についても説明します。このパターンは、組織の要件を満たす ML 予測ソリューションを作成するための基礎として使用できます。

デモの目的で、このパターンでは、スクーターシェアリングを運営する企業が、さまざまな都市部の顧客に展開しなければならない最適なスクーターの台数を予測したいと考えているシナリオを例に挙げています。この企業では、過去 4 時間に基づき、次の 1 時間の顧客需要を予測する、事前にトレーニングされた ML モデルを使用しています。このシナリオでは、「ルイビル市市民イノベーション技術局」が公開しているデータセットを使用しています。このシナリオのリソースは、 GitHub リポジトリで利用できます。

前提条件と制限

  • アクティブな AWS アカウント

  • 次の AWS Identity and Access Management (IAM) ロールを持つ AWS CloudFormation スタックを作成するアクセス許可:

    • Amazon Simple Storage Service (Amazon S3) バケット

    • Athena

    • DynamoDB

    • SageMaker

    • AWS Lambda

アーキテクチャ

テクノロジースタック

  • Amazon QuickSight

  • Amazon S3

  • Athena

  • DynamoDB

  • Lambda

  • SageMaker

ターゲット アーキテクチャ

次の図は、Athena、Lambda 関数、Amazon S3 ストレージ、 SageMaker エンドポイント、ダッシュボードのクエリ機能を使用して、DynamoDB で複雑なデータの集約を構築するためのアーキテクチャを示しています QuickSight 。

DynamoDB でデータの複雑な集約を構築するためのアーキテクチャ。

この図表は、次のワークフローを示しています:

  1. DynamoDB テーブルは、複数のスクーターから送信される IoT データを取り込みます。

  2. Lambda 関数は、取り込まれたデータを DynamoDB テーブルにロードします。

  3. Athena クエリは、都市部を表す地理空間データ用の新しい DynamoDB テーブルを作成します。

  4. クエリの位置は S3 バケットに保存されます。

  5. Athena 関数は、事前トレーニング済みの ML モデルをホストする SageMaker エンドポイントから ML 推論をクエリします。

  6. Athena は DynamoDB テーブルから直接データをクエリし、データを統合して分析します。

  7. ユーザーは、分析されたデータの出力を QuickSight ダッシュボードに表示します。

ツール

AWS のサービス

  • Amazon Athena は、標準の を使用して Amazon S3 でデータを直接分析するのに役立つインタラクティブなクエリサービスですSQL。

  • Amazon DynamoDB は、高速で予測可能でスケーラブルなパフォーマンスを提供するフルマネージドの NoSQL データベースサービスです。

  • Amazon SageMaker は、ML モデルを構築およびトレーニングし、本番環境対応のホスト環境にデプロイするのに役立つマネージド ML サービスです。

  • Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。

  • Amazon QuickSight は、データを 1 つのダッシュボードで視覚化、分析、レポートするのに役立つクラウドスケールのビジネスインテリジェンス (BI) サービスです。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

コードリポジトリ

このパターンのコードは、Amazon GitHub Amazon Athena ML リポジトリを使用して Amazon DynamoDB データで ML 予測を使用する で使用できます。リポジトリの CloudFormation テンプレートを使用して、サンプルシナリオで使用される次のリソースを作成できます。

  • DynamoDB テーブル。

  • テーブルに関連データをロードする Lambda 関数

  • Amazon S3 に保存されている事前トレーニング済みXGBoostモデルを使用した推論リクエストの SageMaker エンドポイント

  • V2EngineWorkGroup という Athena ワークグループ

  • 名前付きの Athena クエリで地理空間シェープファイルを検索し、スクーターの需要を予測します。

  • Amazon Athena DynamoDB Athena DynamoDB コネクタ DynamoDB AWS Serverless Application ModelAWS SAM

エピック

タスク説明必要なスキル

データセットとリソースをダウンロードします。

  1. ドックレス車両レンタルの公開データセット」をダウンロードします。デモ目的では、このデータはユースケースの一部として DynamoDB に事前入力されますが、本番環境ではIoT デバイスや Amazon Kinesisコンシューマーなどのさまざまなメカニズムを通じてこのデータを DynamoDB に送信します。これらのメカニズムは Lambda で DynamoDB にデータを導入します。

  2. ケンタッキー州ルイビル市内の歴史地区と文化地区の境界を表すGISシェープファイルをダウンロードします。公開データセットは、「Louisville and Jefferson County, KY Information Consortium」により提供されています。元のシェープファイルは、Athena でクエリできるテキストファイルに既に変換されていますが、Amazon Athena を使用したシェープファイルの地理空間処理の Jupyter ノートブックでGISシェープファイルを変換するための Python Amazon Athenaコードを確認できます GitHub。

  3. SageMaker および Athena を使用して時間単位の予測の ML モデルをトレーニングする事前トレーニング済みの Python コードをダウンロードします。

  4. DynamoDB に保存されているデータから、ライブ予測のためにすべてをまとめたSQLクエリを Athena で取得します。

  5. (オプション) QuickSight を使用して、ケンタッキー州ルイビルのマップで地理空間データを視覚化します。

アプリ開発者、データサイエンティスト
タスク説明必要なスキル

CloudFormation スタックを作成します。

  1. GitHub リポジトリ から CloudFormation テンプレートをダウンロードします。

  2. にサインインし AWS Management Console、 を選択しますus-east-1: ML モデルは の Amazon Elastic Container Registry (Amazon ECR) に保存されますがus-east-1 AWS リージョン、パターンはリージョンに依存しません。このパターン AWS のサービス で使用される がサポートされる任意のリージョンでパターンをレプリケートできます。

  3. CloudFormation コンソール を開き、ナビゲーションペインでスタックを選択します。

  4. [スタックの作成] を選択し、[既存のリソースを使用 (リソースのインポート)] を選択します。

  5. リソースの識別ページで次へを選択します。

  6. テンプレートを指定セクションのテンプレートソースで、テンプレートファイルをアップロードを選択します。

  7. ファイル を選択し、前にダウンロードした CloudFormation テンプレートを選択します。

  8. 次へを選択し、デフォルトのパラメータ値をそのまま使用し、次へを選択してセットアップウィザードの残りの部分を進めます。

  9. カスタム名でIAMリソースを作成する AWS CloudFormation 可能性がある 確認応答チェックボックスをオンにします。

  10. [スタックの作成] を選択します。

: CloudFormation スタックがこれらのリソースを作成するまでに 15~20 分かかる場合があります。

AWS DevOps

CloudFormation デプロイを確認します。

CloudFormation テンプレートのサンプルデータが DynamoDB にロードされていることを確認するには、以下を実行します。

  1. [DynamoDB コンソール] を開き、ナビゲーションペインから [テーブル] を選択します。

  2. [テーブル]セクションで、DynamoDBTableDocklessVehicles テーブルを確認します。

  3. リソースの作成が完了したら、「Athena コンソール」を開き、ナビゲーションペインからワークグループを選択します。

  4. [V2EngineWorkGroup ワークグループ] を選択し、[ワークグループの切り替え] を選択します。

  5. クエリ結果の位置を保存するように求めるプロンプトが表示されたら、書き込み権限がある Amazon S3 の位置を選択します。

  6. [Save] を選択します。

  7. ナビゲーションペインで、[クエリーエディター] を選択し、データベースを選択します。

アプリ開発者
タスク説明必要なスキル

Athena テーブルを地理空間データにより作成します。

Athena に位置情報ファイルを読み込むには、次の操作を実行します。

  1. Athena コンソール」を開き、ナビゲーションペインから[クエリエディター]を選択します。

  2. [保存済みクエリ] タブを選択します。

  3. Q1: Neighborhoods を検索して選択します。

  4. クエリエディタに戻るには、[Editor]タブを選択します。

  5. [Run] (実行) を選択します。これにより、データベースにと louisville_ky_neighborhoods いうテーブルが作成されます。athena-ml-db-<your-AWS-account-number> データベースにテーブルが作成されていることを確認してください。

このクエリは、都市部を表す地理空間データ用の新しいテーブルを作成します。データテーブルはGISシェープファイルから作成されます。CREATE EXTERNAL TABLE このステートメントは、テーブルのスキーマと、基になるデータファイルの位置と形式を定義します。

Python コードでシェープファイルを処理してこのテーブルを生成する方法については、 AWS 「サンプル」のAmazon Athena を使用したGISシェープファイルのジオ空間処理」を参照してください。詳細なSQLコードについては、 の create_neighborhood_table.sql を参照してください GitHub。

データエンジニア
タスク説明必要なスキル

Athena で関数を宣言して をクエリします SageMaker。

  1. Athena コンソール」を開き、ナビゲーションペインから [クエリエディター] と [エディター] を順に選択します。

  2. 次のSQLステートメントをコピーしてクエリエディタに貼り付けます。

    USING EXTERNAL FUNCTION predict_demand ( location_id BIGINT, hr BIGINT , dow BIGINT, n_pickup_1 BIGINT, n_pickup_2 BIGINT, n_pickup_3 BIGINT, n_pickup_4 BIGINT, n_dropoff_1 BIGINT, n_dropoff_2 BIGINT, n_dropoff_3 BIGINT, n_dropoff_4 BIGINT ) RETURNS DOUBLE SAGEMAKER '<Your SageMaker endpoint>'

    SQL ステートメントの最初の部分は、トレーニング済みモデルをホストする SageMaker エンドポイントから ML 推論をクエリする外部関数を宣言します。

  3. 入力パラメータの順序とタイプと戻り値のタイプを定義します。

  4. [Run] (実行) を選択します。

データサイエンティスト、データエンジニア

集約された DynamoDB データから地域別のスクーターの需要を予測します。

これで、Athena により、DynamoDB から直接トランザクションデータをクエリし、データを集約して分析と予測を行うことができます。これは、DynamoDB NoSQL データベースを直接クエリすることで簡単には実現できません。

  1. Athena コンソール」を開き、ナビゲーションペインから [クエリエディター] を選択します。

  2. [保存済みクエリ] タブを選択します。

  3. QQ2: D ynamoDBAthenaMLScooterPredictを検索して選択します。

  4. クエリエディタに戻るには、[エディタ] タブを選択します。

  5. [Run] (実行) を選択します。

SQL ステートメントは以下を実行します。

  • Athena 横串検索」で、未加工のトリップデータで DynamoDB テーブルをクエリします。

  • Athena の地理空間関数を使用して、地理座標を近傍に配置します。

  • を使用して ML 推論でデータを強化する SageMaker

SQL を使用して Athena で DynamoDB データおよび SageMaker 推論データを集約する方法については、 の athena_long.sql を参照してください GitHub。

アプリ開発者、データサイエンティスト

出力の検証

出力テーブルには、近傍と近傍の重心の経度と緯度を含んでいます。また、次の 1 時間に予測される車両の数も含んでいます。

このクエリでは、選択した時点の予測が生成されます。ステートメントのあらゆる箇所で TIMESTAMP '2019-09-07 15:00' 式を変更することで、それ以外の時点の予測を行うことができます。

DynamoDB テーブルにリアルタイムデータフィードがある場合は、タイムスタンプを NOW() に変更します。

アプリ開発者、データサイエンティスト
タスク説明必要なスキル

リソースの削除

  1. Athena コンソールを開き、 CloudFormation スタックの一部として作成したバケットを空にします。

  2. CloudFormation コンソール を開き、 という名前のスタックを削除しますbdb-1462-athena-dynamodb-ml-stack

  3. Amazon CloudWatch コンソール を開き、 という名前のロググループを削除します/aws/sagemaker/Endpoints/Sg-athena-ml-dynamodb-model-endpoint

アプリデベロッパー、 AWS DevOps

関連リソース