レスポンスをバッチで取得すると、レイテンシの影響を受けない大量のエンベディング リクエストを効率的に送信できます。レスポンスをオンラインで取得する場合は一度に 1 つの入力リクエストしか行えませんが、バッチで取得する場合は 1 つのバッチ リクエストで多くの LLM リクエストを送信できます。Vertex AI の表形式データに対してバッチ予測を行う場合と同様に、出力先を決めて入力を追加すると、その出力先に非同期でレスポンスが返されます。
バッチ予測をサポートするテキスト エンベディング モデル
テキスト エンベディング モデルのすべての安定版は、Gemini エンベディング(gemini-embedding-001)を除き、バッチ予測をサポートしています。安定版は本番環境で完全にサポートされています。エンベディング モデルの一覧については、エンベディング モデルとバージョンをご覧ください。
入力を準備する
バッチ リクエストの入力は、BigQuery テーブルまたは Cloud Storage の JSON Lines(JSONL)ファイルとして保存可能なプロンプトのリストです。1 つのリクエストには最大 30,000 件のプロンプトを含めることができます。
JSONL の例
このセクションでは、JSONL の入出力をフォーマットする方法の例を示します。
JSONL 入力の例
{"content":"Give a short description of a machine learning model:"}
{"content":"Best recipe for banana bread:"}
JSONL 出力の例
{"instance":{"content":"Give..."},"predictions": [{"embeddings":{"statistics":{"token_count":8,"truncated":false},"values":[0.2,....]}}],"status":""}
{"instance":{"content":"Best..."},"predictions": [{"embeddings":{"statistics":{"token_count":3,"truncated":false},"values":[0.1,....]}}],"status":""}
BigQuery の例
このセクションでは、BigQuery の入力と出力をフォーマットする方法の例を示します。
BigQuery 入力の例
この例は、単一列の BigQuery テーブルを示しています。
| コンテンツ |
|---|
| 「機械学習モデルについて簡単に説明してください」 |
| 「バナナブレッドのベストレシピ」 |
BigQuery 出力の例
| コンテンツ | 予測 | ステータス |
|---|---|---|
| 「ML モデルについて簡単に説明してください」 |
'[{"embeddings": { "statistics":{"token_count":8,"truncated":false}, "Values":[0.1,....] } } ]' |
|
| 「バナナブレッドのベストレシピ」 |
'[{"embeddings": { "statistics":{"token_count":3,"truncated":false}, "Values":[0.2,....] } } ]' |
バッチ レスポンスをリクエストする
送信した入力アイテム数によっては、バッチ生成タスクが完了するまでに時間がかかることがあります。
REST
Vertex AI API を使用してテキスト プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。
リクエスト データを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- BP_JOB_NAME: ジョブ名。
- INPUT_URI: 入力ソース URI。これは、BigQuery テーブル URI または Cloud Storage の JSONL ファイルの URI です。
- OUTPUT_URI: 出力ターゲット URI。
HTTP メソッドと URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
リクエストの本文(JSON):
{
"name": "BP_JOB_NAME",
"displayName": "BP_JOB_NAME",
"model": "publishers/google/models/textembedding-gecko",
"inputConfig": {
"instancesFormat":"bigquery",
"bigquerySource":{
"inputUri" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "OUTPUT_URI"
}
}
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
"name": "projects/123456789012/locations/us-central1/batchPredictionJobs/1234567890123456789",
"displayName": "BP_sample_publisher_BQ_20230712_134650",
"model": "projects/{PROJECT_ID}/locations/us-central1/models/textembedding-gecko",
"inputConfig": {
"instancesFormat": "bigquery",
"bigquerySource": {
"inputUri": "bq://project_name.dataset_name.text_input"
}
},
"modelParameters": {},
"outputConfig": {
"predictionsFormat": "bigquery",
"bigqueryDestination": {
"outputUri": "bq://project_name.llm_dataset.embedding_out_BP_sample_publisher_BQ_20230712_134650"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2023-07-12T20:46:52.148717Z",
"updateTime": "2023-07-12T20:46:52.148717Z",
"labels": {
"owner": "sample_owner",
"product": "llm"
},
"modelVersionId": "1",
"modelMonitoringStatus": {}
}
レスポンスには、バッチジョブの固有識別子が含まれます。ジョブ state が JOB_STATE_SUCCEEDED になるまで、BATCH_JOB_ID を使用してバッチジョブのステータスをポーリングできます。例:
curl \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
バッチ出力を取得する
バッチ予測タスクが完了すると、リクエストで指定した Cloud Storage バケットまたは BigQuery テーブルに出力が保存されます。
次のステップ
- テキスト エンベディングの取得方法を学習する。