ML.GENERATE_TEXT を繰り返し呼び出して割り当てエラーを処理する
このチュートリアルでは、BigQuery bqutil.procedure.bqml_generate_text
公開ストアド プロシージャを使用して、ML.GENERATE_TEXT
関数の呼び出しを反復処理する方法について説明します。関数を繰り返し呼び出すと、関数に適用される割り当てと上限を超えたために発生する再試行可能なエラーに対処できます。
GitHub の bqutil.procedure.bqml_generate_text
ストアド プロシージャのソースコードを確認するには、bqml_generate_text.sqlx
をご覧ください。ストアド プロシージャのパラメータと使用方法の詳細については、README ファイルをご覧ください。
このチュートリアルでは、次のタスクについて説明します。
gemini-2.0-flash
モデルを介してリモートモデルを作成する。bqutil.procedure.bqml_generate_text
ストアド プロシージャを使用し、リモートモデルとbigquery-public-data.bbc_news.fulltext
一般公開データテーブルを使用してML.GENERATE_TEXT
関数の呼び出しを繰り返し行う。
必要な権限
このチュートリアルを実行するには、次の Identity and Access Management(IAM)ロールが必要です。
- BigQuery データセット、接続、モデルを作成して使用する: BigQuery 管理者(
roles/bigquery.admin
)。 - 接続のサービス アカウントに権限を付与する: Project 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
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
費用
このドキュメントでは、課金対象である次の Trusted Cloud by S3NSコンポーネントを使用します。
- 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 Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Verify that billing is enabled for your Trusted Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
データセットを作成する
モデルとサンプルデータを保存する BigQuery データセットを作成します。
Trusted Cloud コンソールで、[BigQuery] ページに移動します。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
> [データセットを作成] をクリックします。
「アクションを表示」[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に「
sample
」と入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US(米国の複数のリージョン)] を選択します。
残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
テキスト生成モデルを作成する
ホストされる Vertex AI gemini-2.0-flash
モデルを表すリモートモデルを作成します。
Trusted Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
CREATE OR REPLACE MODEL `sample.generate_text` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.0-flash');
クエリが完了するまでに数秒かかります。完了後、
generate_text
モデルが [エクスプローラ] ペインのsample
データセットに表示されます。このクエリではCREATE MODEL
ステートメントを使用してモデルを作成するため、クエリの結果はありません。
ストアド プロシージャを実行する
bqutil.procedure.bqml_generate_text
ストアド プロシージャを実行します。このプロシージャは、sample.generate_text
モデルと bigquery-public-data.bbc_news.fulltext
一般公開データテーブルを使用して ML.GENERATE_TEXT
関数への呼び出しを反復処理します。
Trusted Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで、次のステートメントを実行します。
CALL `bqutil.procedure.bqml_generate_text`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.sample.news_generated_text", -- destination table "PROJECT_ID.sample.generate_text", -- model "body", -- content column ["filename"], -- key columns '{}' -- optional arguments );
PROJECT_ID
は、このチュートリアルで使用するプロジェクトのプロジェクト ID に置き換えます。ストアド プロシージャは、
ML.GENERATE_TEXT
関数の出力を含むsample.news_generated_text
テーブルを作成します。クエリの実行が完了したら、再試行可能なエラーを含む行が
sample.news_generated_text
テーブルにないことを確認します。クエリエディタで、次のステートメントを実行します。SELECT * FROM `sample.news_generated_text` WHERE ml_generate_text_status LIKE '%A retryable error occurred%';
このクエリは、メッセージ
No data to display
を返します。
クリーンアップ
- In the Trusted 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.