ML.GENERATE_EMBEDDING を繰り返し呼び出して割り当てエラーを処理する
このチュートリアルでは、BigQuery bqutil.procedure.bqml_generate_embeddings
公開ストアド プロシージャを使用して、ML.GENERATE_EMBEDDING
関数の呼び出しを反復処理する方法について説明します。関数を繰り返し呼び出すと、関数に適用される割り当てと上限を超えたために発生する再試行可能なエラーに対処できます。
GitHub の bqutil.procedure.bqml_generate_embeddings
ストアド プロシージャのソースコードを確認するには、bqml_generate_embeddings.sqlx
をご覧ください。ストアド プロシージャのパラメータと使用方法の詳細については、README ファイルをご覧ください。
このチュートリアルでは、次のタスクについて説明します。
text-embedding-005
モデルを介してリモートモデルを作成する。bqutil.procedure.bqml_generate_embeddings
ストアド プロシージャを使用し、リモートモデルとbigquery-public-data.bbc_news.fulltext
一般公開データテーブルを使用してML.GENERATE_EMBEDDING
関数の呼び出しを繰り返し行う。
必要な権限
このチュートリアルを実行するには、次の Identity and Access Management(IAM)ロールが必要です。
- BigQuery データセット、接続、モデルを作成して使用する: BigQuery 管理者(
roles/bigquery.admin
)。 - 接続のサービス アカウントに権限を付与する。プロジェクト IAM 管理者(
roles/resourcemanager.projectIamAdmin
)。
これらの事前定義ロールには、このドキュメントのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
- データセットを作成する:
bigquery.datasets.create
- 接続を作成、委任、使用する:
bigquery.connections.*
- デフォルトの接続を設定する:
bigquery.config.*
- サービス アカウントの権限を設定する:
resourcemanager.projects.getIamPolicy
とresourcemanager.projects.setIamPolicy
- モデルを作成して推論を実行する:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model.
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
BigQuery の料金の詳細については、BigQuery の料金をご覧ください。
Vertex AI の料金の詳細については、Vertex AI の料金をご覧ください。
始める前に
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
データセットを作成する
モデルとサンプルデータを保存する BigQuery データセットを作成します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
> [データセットを作成] をクリックします。
「アクションを表示」[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に「
target_dataset
」と入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US(米国の複数のリージョン)] を選択します。
残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
テキスト エンベディング生成モデルを作成する
Vertex AI text-embedding-005
モデルを表すリモートモデルを作成します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
CREATE OR REPLACE MODEL `target_dataset.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
クエリが完了するまでに数秒かかります。完了後、
embedding
モデルが [エクスプローラ] ペインのsample
データセットに表示されます。クエリはCREATE MODEL
ステートメントを使用してモデルを作成するため、クエリの結果はありません。
ストアド プロシージャを実行する
bqutil.procedure.bqml_generate_embeddings
ストアド プロシージャを実行します。このプロシージャは、target_dataset.embedding_model
モデルと bigquery-public-data.bbc_news.fulltext
一般公開データテーブルを使用して ML.GENERATE_EMBEDDING
関数を繰り返し呼び出します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
CALL `bqutil.procedure.bqml_generate_embeddings`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.target_dataset.news_body_embeddings", -- destination table "PROJECT_ID.target_dataset.embedding_model", -- model "body", -- content column ["filename"], -- key columns '{}' -- optional arguments encoded as a JSON string );
PROJECT_ID
は、このチュートリアルで使用するプロジェクトのプロジェクト ID に置き換えます。ストアド プロシージャは、
ML.GENERATE_EMBEDDING
関数の出力を含むtarget_dataset.news_body_embeddings
テーブルを作成します。クエリの実行が完了したら、再試行可能なエラーを含む行が
target_dataset.news_body_embeddings
テーブルにないことを確認します。クエリエディタで、次のステートメントを実行します。SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
このクエリは、メッセージ
No data to display
を返します。
クリーンアップ
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.