1. はじめに
この Codelab では、Vertex AI AutoML を使用して映画スコア予測モデルを作成し、デプロイされたモデル エンドポイントを Java Cloud Functions からトリガーします。モデルは BigQuery に保存されたデータでトレーニングされ、Vertex AI に登録されます。サービスのリストは、次の 2 つのセクションに分けられます。
- ML モデルの作成とデプロイ
- ML API を使用して予測するトリガー
ML モデルの作成:
- データは CSV から BigQuery に取り込まれる
- AutoML モデル作成のために BigQuery データを Vertex AI に統合
- エンドポイント API を生成するために Vertex AI Model Registry にデプロイされたモデル
ML API を使用した予測のトリガー:
- デプロイされた AutoML モデルのエンドポイントの呼び出しをトリガーする Java Cloud Functions の関数。UI からのリクエストとして映画の詳細を受け取り、予測された映画のスコアを返します。
アプリケーションのアーキテクチャの概要は次のとおりです。
上記のアーキテクチャのアプリケーションはこの Codelab の対象外ですが、クライアント アプリケーションも開発する場合は、ブログをご覧ください。
実装手順を詳しく見ていきましょう。
作成するアプリの概要
まず、
- テーブルとモデル コンポーネントが格納された BigQuery データセット
- Vertex AI AutoML モデル(作成とデプロイ)
- ML API を使用して予測する Java Cloud Functions の関数
2. 必要なもの
前提条件は次のとおりです。
プロジェクトを作成する
- Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- BigQuery に移動して API を有効にします。ブラウザに https://console.cloud.google.com/bigquery の URL を入力して、BigQuery ウェブ UI を直接開くこともできます。
Cloud Shell をアクティブにする
- Cloud Shell を使用します。Cloud Shell は、Google Cloud で実行されるコマンドライン環境で、bq がプリロードされています。Cloud コンソールの右上にある [Cloud Shell をアクティブにする] をクリックします。
- Cloud Shell に接続すると、すでに認証は完了しており、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list
- Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
- プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <PROJECT_ID>
gcloud コマンドとその使用方法については、ドキュメントをご覧ください。
3. トレーニング データの準備
これは、データ関連のプロジェクト、プロダクト、アプリすべてにおける重要なステップであり、最適なデータセットを準備して ML プロジェクトに備えるためのテクノロジーに加えて、多くの専門知識が必要です。この Codelab では、データがすでに準備されているものと仮定し、この処理済みの data ファイルを使用します。
4. データセットの作成と読み込み
BigQuery データセットはテーブルのコレクションです。データセット内のすべてのテーブルは、同じデータ ロケーションに保存されます。カスタム アクセス制御を接続して、データセットとそのテーブルへのアクセスを制限することもできます。
- Cloud Shell で bq mk コマンドを使用して「movies」というデータセットを作成します。
bq mk --location=<<LOCATION>> movies
ロケーションをリージョン(asia-south1)に設定します。必ず、VERTEX AI ステップのリージョンとして設定してください(両方のインスタンスが同じリージョンにある必要があります)。
- データファイル(.csv)が用意できていることを確認します。Cloud Shell で次のコマンドを実行してリポジトリのクローンを作成し、プロジェクトに移動します。
git clone <<repository link>>
cd movie-score
- bq load コマンドを使用して、CSV ファイルを BigQuery テーブルに読み込みます(BigQuery UI から直接アップロードすることもできます)。
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
- 次の 3 つの方法のいずれかでクエリを実行します。
BigQuery を操作するには 3 つの方法があります。そのうちの 2 つを試してみましょう。BigQuery ウェブ UI b.bq コマンド c.API
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
BigQuery Web SQL Workspace を使用してクエリを実行しました。SQL ワークスペースは次のようになります。
bq コマンドを使用する場合:
bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
5. Vertex AI AutoML での BigQuery データの使用
BigQuery のデータを使用して、Vertex AI で AutoML モデルを直接作成する。BigQuery 自体から AutoML を実行し、モデルを VertexAI に登録してエンドポイントを公開することも可能です。BigQuery AutoML のドキュメントをご覧ください。ただし、この例では、Vertex AI AutoML を使用してモデルを作成します。
Vertex AI データセットを作成する
Google Cloud コンソールから Vertex AI に移動し、Vertex AI API を有効にします(まだ行っていない場合)。データを開いて [データセット] を選択し、[データセットを作成] をクリックして [表形式] データ型と [回帰 / 分類] を選択します。[作成] をクリックします。
データソースを選択
次のページでデータソースを選択します。[テーブルまたはビューを BigQuery から選択] を選択します。[BigQuery path BROWSE] フィールドで BigQuery のテーブルを選択します。[続行] をクリックします。
注: Vertex AI に BigQuery テーブルを表示するには、BigQuery インスタンスと Vertex AI データセットのリージョンが同じである必要があります。
ソーステーブル/ビューを選択する際は、参照リストから必ずラジオボタンをクリックして、次の手順に進んでください。誤ってテーブル / ビューの名前をクリックすると、Dataplex に移動します。このような場合は、Vertex AI をもう一度参照してください。
モデルをトレーニングする
- データセットが作成されると、[分析] ページが表示され、新しいモデルをトレーニングするオプションが表示されます。以下をクリックします。
- [目標] を [分類] のままにして、最初のページで [AutoML] オプションを選択し、[続行] をクリックします。
- モデルに名前を付けて、[Target Column name] で「Score」を選択します。表示されたプルダウンから [続行] をクリックします。
- また、[Export test dataset to BigQuery] チェックボックスをオンにします。このオプションを使用すると、追加の統合レイヤやサービス間でデータを移動することなく、データベース内の結果を含むテストセットを効率的に確認できます。
- 次のページでは、必要な高度なトレーニング オプションと、モデルをトレーニングする時間を選択できます。トレーニングに使用するノード時間数を増やす前に、料金を検討することをおすすめします。
[トレーニングを開始] をクリックして、新しいモデルのトレーニングを開始します。
モデルの評価、デプロイ、テスト
トレーニングが完了したら、[トレーニング](左側のメニューの [モデル開発] 見出しの下にある)をクリックすると、[トレーニング パイプライン] セクションにトレーニングが表示されます。該当するトレーニングをクリックすると、[モデル レジストリ] ページが表示され、次のことを行える必要があります。
- トレーニング結果を表示して評価する
- API エンドポイントでモデルをデプロイしてテストする
モデルをデプロイすると、API エンドポイントが作成されます。このエンドポイントをアプリケーションで使用して、リクエストを送信し、レスポンスでモデル予測結果を取得できます。
このセクションから先に進む前に、Vertex AI エンドポイント セクションにあるデプロイ済みモデルのエンドポイント ID、ロケーション、その他の詳細をメモしておいてください。
6. ML 呼び出しをトリガーする Java Cloud Functions の関数
ML のデプロイ ステップで取得したエンドポイントやその他の詳細を思い出してください。ここではそれを使用します。Java の Cloud Functions を使用しているため、依存関係の処理には pom.xml を使用します。google-cloud-aiplatform ライブラリを使用して、Vertex AI AutoML Endpoint API を使用します。
- Google Cloud コンソールで Cloud Functions を検索し、[関数を作成] をクリックします。
- 環境、関数名、リージョン、トリガー(この場合は HTTPS)、任意の認証などの設定の詳細を入力し、[HTTPS を必須にする] を有効にします。[次へ] または [保存] をクリックします。
- 次のページで [ランタイム](Java 11)、[ソースコード](インラインまたはアップロード)を選択し、編集を開始します。
- リポジトリから java ファイルと pom.xml ファイルをコピーし、インライン エディタにそれぞれのファイルに貼り付けます。ローカル エディタ(推奨)を使用している場合は、リポジトリからソースのクローンを作成します。
- この例では、.java ソースファイルのプロジェクト ID、エンドポイント ID、ロケーション、エンドポイントを変更しますが、認証情報の保存には Secret Manager を使用することをおすすめします。
- この Codelab では、コピーしたソースコードの .java クラスの MongoDB の部分をコメントアウトします。
すべての変更が完了したら、関数をデプロイします。この Cloud Functions の関数にリクエストを送信し、レスポンスとして映画スコアを受け取るためにクライアント アプリケーションで使用できるエンドポイント URL が表示されます。
7. クリーンアップ
この投稿で使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
8. 完了
これで、Vertex AI AutoML で映画スコア予測モデルを作成してデプロイし、デプロイされたモデルを Cloud Functions からトリガーしました。