バッチ予測では、レイテンシの影響を受けない複数のマルチモーダル プロンプトを効率的に送信できます。オンライン予測では一度に 1 つの入力プロンプトに制限されますが、バッチ予測では 1 つのバッチ リクエストで大量のマルチモーダル プロンプトを送信できます。その後、レスポンスにより BigQuery ストレージ出力ロケーションに非同期でデータが入力されます。
Gemini モデルのバッチ リクエストは、標準リクエストから 50% 割引されます。詳細については、料金のページをご覧ください。
バッチ予測をサポートするマルチモーダル モデル
次のマルチモーダル モデルはバッチ予測をサポートしています。
gemini-1.5-flash-002
gemini-1.5-flash-001
gemini-1.5-pro-002
gemini-1.5-pro-001
gemini-1.0-pro-002
gemini-1.0-pro-001
入力を準備する
マルチモーダル モデルのバッチ リクエストは、BigQuery ストレージ ソースと Cloud Storage ソースを受け入れます。
BigQuery ストレージ入力
request
列のコンテンツは有効な JSON である必要があります。この JSON データは、モデルの入力を表します。- JSON 指示のコンテンツは、
GenerateContentRequest
の構造と一致している必要があります。 - 入力テーブルには、
request
以外の列を含めることができます。コンテンツの生成では無視されますが、出力テーブルには含まれます。システムは、出力用にresponse
とstatus
の 2 つの列名を予約します。これらは、バッチ予測ジョブの結果に関する情報を提供するために使用されます。 - バッチ予測は、Gemini の
fileData
フィールドをサポートしていません。
入力の例(JSON) |
---|
|
Cloud Storage 入力
- ファイル形式: JSON Lines(JSONL)
- 場所:
us-central1
- サービス アカウントの適切な読み取り権限
- 特定の Gemini モデルの fileData 制限。
入力の例(JSONL) {"request":{"contents": [{"role": "user", "parts": [{"text": "What is the relation between the following video and image samples?"}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/video/animals.mp4", "mime_type": "video/mp4"}}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg", "mime_type": "image/jpeg"}}]}]}} {"request":{"contents": [{"role": "user", "parts": [{"text": "Describe what is happening in this video."}, {"file_data": {"file_uri": "gs://cloud-samples-data/generative-ai/video/another_video.mov", "mime_type": "video/mov"}}]}]}}
バッチ レスポンスをリクエストする
送信した入力アイテム数によっては、バッチ生成タスクが完了するまでに時間がかかることがあります。
REST
Vertex AI API を使用してマルチモーダル プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: Google Cloud Platform プロジェクトの名前です。BP_JOB_NAME
: ジョブに付ける名前。INPUT_URI
: 入力ソース URI。これは、bq://PROJECT_ID.DATASET.TABLE
形式の BigQuery テーブル URI です。または、Cloud Storage バケットの URI です。INPUT_SOURCE
: 入力ソースのタイプ。bigquerySource
とgcsSource
を指定できます。INSTANCES_FORMAT
: 入力インスタンスの形式 - jsonl または bigquery のいずれか。OUTPUT_URI
: 出力テーブルまたはターゲット出力テーブルの URI(bq://PROJECT_ID.DATASET.TABLE
形式)。テーブルがまだ存在しない場合は、自動的に作成されます。
HTTP メソッドと URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
リクエストの本文(JSON):
{ "displayName": "BP_JOB_NAME", "model": "publishers/google/models/gemini-1.0-pro-002", "inputConfig": { "instancesFormat":"INSTANCES_FORMAT", "inputSource":{ INPUT_SOURCE "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/{PROJECT_ID}/locations/us-central1/batchPredictionJobs/{BATCH_JOB_ID}", "displayName": "My first batch prediction", "model": "projects/{PROJECT_ID}/locations/us-central1/models/gemini-1.0-pro-002", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource": { "inputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_input" } }, "modelParameters": {}, "outputConfig": { "predictionsFormat": "bigquery", "bigqueryDestination": { "outputUri": "bq://{PROJECT_ID}.mydataset.batch_predictions_output" } }, "state": "JOB_STATE_PENDING", "createTime": "2023-07-12T20:46:52.148717Z", "updateTime": "2023-07-12T20:46:52.148717Z", "modelVersionId": "1" }
レスポンスには、バッチジョブの固有識別子が含まれます。ジョブ 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
バッチ出力を取得する
バッチ予測タスクが完了すると、リクエストで指定した BigQuery テーブルに出力が保存されます。
BigQuery 出力の例
リクエスト | レスポンス | ステータス |
---|---|---|
'{"content":[{...}]}' | { "candidates": [ { "content": { "role": "model", "parts": [ { "text": "In a medium bowl, whisk together the flour, baking soda, baking powder." } ] }, "finishReason": "STOP", "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE", "probabilityScore": 0.14057204, "severity": "HARM_SEVERITY_NEGLIGIBLE", "severityScore": 0.14270912 } ] } ], "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 396, "totalTokenCount": 404 } } |
Cloud Storage 出力の例
PROJECT_ID=[PROJECT ID]
REGION="us-central1"
MODEL_URI="publishers/google/models/gemini-1.0-pro-001@default"
INPUT_URI="[GCS INPUT URI]"
OUTPUT_URI="[OUTPUT URI]"
# Setting variables based on parameters
ENDPOINT="${REGION}-autopush-aiplatform.sandbox.googleapis.com"
API_VERSION=v1
ENV=autopush
BP_JOB_NAME="BP_testing_`date +%Y%m%d_%H%M%S`"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${ENDPOINT}/${API_VERSION}/projects/${PROJECT_ID}/locations/${REGION}/batchPredictionJobs \
-d '{
"name": "'${BP_JOB_NAME}'",
"displayName": "'${BP_JOB_NAME}'",
"model": "'${MODEL_URI}'",
"inputConfig": {
"instancesFormat":"jsonl",
"gcsSource":{
"uris" : "'${INPUT_URI}'"
}
},
"outputConfig": {
"predictionsFormat":"jsonl",
"gcsDestination":{
"outputUriPrefix": "'${OUTPUT_URI}'"
}
},
"labels": {"stage": "'${ENV}'"},
}'
次のステップ
- Gemini のモデル チューニングの概要で、Gemini モデルのチューニング方法を学習する。
- Batch Prediction API の詳細を確認する。