はじめに
今回はデータサイエンティストやデータエンジニアがBigQuery MLモデルを作成し、予測結果を提供するMLパイプラインの構成について、備忘録として残します。この記事では、REST APIアプリケーションを使用して、個々のユーザーIDの予測を100ミリ秒以下のレイテンシで提供する方法を解説します。
ソリューションの全体フロー
以下の図は、データの流れを示しています。各ステップで使用されるツールや必要なロールも含めています。
+--------------------------------------+
| BigQuery MLモデル |
+--------------------------------------+
|
v
+--------------------------------------+
| Dataflow パイプライン |
| (BigQueryIO, BigtableIO) |
+--------------------------------------+
|
v
+--------------------------------------+
| Bigtable |
+--------------------------------------+
|
v
+--------------------------------------+
| REST APIアプリケーション |
| (Bigtable Readerロールを付与) |
+--------------------------------------+
使用するツールとサービスの説明
-
BigQuery MLモデル:
- 説明: BigQuery MLを使用すると、BigQuery内で直接機械学習モデルのトレーニングと予測を行うことができます。SQLクエリだけで機械学習を操作できるため、データサイエンティストやアナリストにとって非常に使いやすいです。
- 用途: ユーザーデータを基に予測モデルを作成し、予測結果を生成します。
-
Dataflow パイプライン:
- 説明: Apache BeamをベースにしたGoogle Cloudのサービスで、バッチおよびストリーミングデータ処理に使用されます。Dataflowはデータの移動と変換を自動化し、スケーラブルで管理しやすいデータパイプラインを提供します。
-
使用ツール:
- BigQueryIO: DataflowからBigQueryデータセットを読み込むためのI/Oツールです。MLモデルから予測結果を取得します。
- BigtableIO: DataflowからBigtableにデータを書き込むためのI/Oツールです。予測結果をBigtableに保存します。
- 用途: BigQuery MLモデルから予測結果を取得し、それをBigtableに書き込みます。
-
Bigtable:
- 説明: Google CloudのNoSQLデータベースで、高スループットと低レイテンシの読み書き性能を提供します。大量のデータを効率的に処理することができます。
- 用途: Dataflowパイプラインからの予測結果を保存し、低レイテンシでのアクセスを提供します。
-
REST APIアプリケーション:
- 説明: ウェブアプリケーションフレームワーク(例:FlaskやFastAPI)を使用して構築されたAPIで、クライアントからのリクエストに応じてデータを提供します。
- 用途: Bigtableから予測結果を取得し、クライアントに返答します。100ミリ秒以下のレイテンシで予測結果を提供することを目指します。
- ロール: アプリケーションサービスアカウントにBigtable Readerロールを付与します。
サービスアカウントとロールの設定
- Dataflow Workerロール: Dataflowパイプラインを実行するためのサービスアカウントに付与します。
- Bigtable Readerロール: APIアプリケーションのサービスアカウントに付与します。
まとめ
このソリューションでは、BigQuery MLモデルから予測結果を取得し、Dataflowパイプラインを使用してBigtableに保存します。APIアプリケーションはBigtableから予測結果を取得し、ユーザーに対して100ミリ秒以下のレイテンシで提供します。この方法により、リアルタイムに近いレスポンスを実現し、エンドユーザーに対して迅速な予測結果を提供することができます。
この記事がBigQuery MLモデルを使用した低レイテンシ予測パイプラインの理解と実装に役立つことを願っています。質問やフィードバックがあれば、ぜひお知らせください。