バッチ予測は、機械学習モデルを大規模なデータセットに効率的に適用する際に有用な手法です。個々のデータポイントを処理する代わりに、データのバッチを Gemini に送信して予測を行うと、時間と計算リソースを節約できます。オンライン予測では一度に 1 つの入力プロンプトに制限されますが、バッチ予測では 1 つのバッチ リクエストで大量のマルチモーダル プロンプトを送信できます。その後、レスポンスにより、BigQuery または Cloud Storage ストレージの出力先にデータが非同期で入力されます。
Gemini モデルのバッチ リクエストは、標準リクエストから 50% 割引されます。詳細については、料金のページをご覧ください。
バッチ予測のユースケース
データベースに数千冊の書籍があるオンライン書店について考えてみましょう。書籍ごとに個別に説明を生成するのは時間がかかるため、この書店では Gemini のバッチ予測を使用して、すべての書籍情報を一度に処理しています。このアプローチにより、全体的な処理時間を短縮し、必要なコンピューティング リソースを最小限に抑えることで、効率が大幅に向上させることができます。
バッチ予測により、自動化の整合性を高めることもできます。すべての説明を同時に処理することで、書籍の説明全体で統一されたトーンとスタイルを維持し、ブランドのアイデンティティを強化できます。この書店では、バッチ予測をワークフローに統合して、新しい書籍の説明を自動的に生成しています。これにより、手作業を減らし、人間による介入を最小限に抑えながら、ウェブサイトを常に最新の状態にしています。
バッチ予測をサポートする Gemini モデル
次の Gemini モデルはバッチ予測をサポートしています。
gemini-2.0-flash-001
gemini-1.5-flash-002
gemini-1.5-flash-001
gemini-1.5-pro-002
gemini-1.5-pro-001
gemini-1.0-pro-vision-001
gemini-1.0-pro-002
gemini-1.0-pro-001
Gemini モデルのバッチ リクエストは、BigQuery ストレージ ソースと Cloud Storage ソースを受け入れます。予測の出力先として、BigQuery テーブルまたは Cloud Storage バケット内の JSONL ファイルのいずれかを選択できます。
Cloud Storage のバッチ予測
入力を準備する
Cloud Storage 入力
- ファイル形式: JSON Lines(JSONL)
- 場所:
us-central1
サービス アカウントに適切な Cloud Storage 権限が必要です。Cloud Storage バケットに対する読み取り権限と書き込み権限をサービス アカウントに付与するには、次のように
gcloud iam service-accounts add-iam-policy-binding
コマンドを使用します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="storage.objectUser"
次の値を置き換えます。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
次の Gemini モデルは
fileData
をサポートしています。gemini-1.5-flash-002
gemini-1.5-flash-001
gemini-1.5-pro-002
gemini-1.5-pro-001
入力の例(JSONL) |
---|
|
バッチ予測ジョブをリクエストする
Cloud Storage の入力テーブル、モデル、出力先を指定します。
REST
バッチ予測ジョブを作成するには、projects.locations.batchPredictionJobs.create
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: Gemini モデルをサポートするリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
- INPUT_URI: JSONL バッチ予測入力の Cloud Storage の場所(
gs://bucketname/path/to/file.jsonl
など)。 - OUTPUT_FORMAT: BigQuery テーブルに出力するには、
bigquery
を指定します。Cloud Storage バケットに出力するには、jsonl
を指定します。 - DESTINATION: BigQuery の場合は、
bigqueryDestination
を指定します。Cloud Storage の場合は、gcsDestination
を指定します。 - OUTPUT_URI_FIELD_NAME: BigQuery の場合は、
outputUri
を指定します。Cloud Storage の場合は、outputUriPrefix
を指定します。 - OUTPUT_URI: BigQuery の場合は、テーブルの場所(
bq://myproject.mydataset.output_result
など)を指定します。BigQuery の出力データセットのリージョンは、Vertex AI バッチ予測ジョブのリージョンと同じである必要があります。Cloud Storage の場合は、バケットとディレクトリの場所(例:gs://mybucket/path/to/output
)を指定します。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
リクエストの本文(JSON):
{ "displayName": "my-cloud-storage-batch-prediction-job", "model": "publishers/google/models/gemini-1.5-flash-002", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat": "OUTPUT_FORMAT", "DESTINATION": { "OUTPUT_URI_FIELD_NAME": "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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンスには、バッチジョブの固有識別子が含まれます。ジョブ 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
Gen AI SDK for Python
Google Gen AI SDK for Python をインストールまたは更新する方法を確認する。
詳細については、Gen AI SDK for Python API リファレンス ドキュメントまたは python-genai
GitHub リポジトリをご覧ください。
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
Vertex AI SDK for Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
バッチ予測の出力
バッチ予測タスクが完了すると、リクエストで指定した Cloud Storage バケットまたは BigQuery テーブルに出力が保存されます。成功した行の場合、モデルのレスポンスは response
列に格納されます。それ以外の場合、エラーの詳細が status
列に格納され、詳細な調査が可能です。
長時間実行ジョブの間、完了した予測は指定された出力先に継続的にエクスポートされます。これは 90 分後に開始されます。バッチ予測ジョブがキャンセルされた場合や失敗した場合、完了した予測はすべてエクスポートされます。
Cloud Storage 出力の例
{
"status": "",
"processed_time": "2024-11-01T18:13:16.826+00:00",
"request": {
"contents": [
{
"parts": [
{
"fileData": null,
"text": "What is the relation between the following video and image samples?"
},
{
"fileData": {
"fileUri": "gs://cloud-samples-data/generative-ai/video/animals.mp4",
"mimeType": "video/mp4"
},
"text": null
},
{
"fileData": {
"fileUri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg",
"mimeType": "image/jpeg"
},
"text": null
}
],
"role": "user"
}
]
},
"response": {
"candidates": [
{
"avgLogprobs": -0.5782725546095107,
"content": {
"parts": [
{
"text": "This video shows a Google Photos marketing campaign where animals at the Los Angeles Zoo take self-portraits using a modified Google phone housed in a protective case. The image is unrelated."
}
],
"role": "model"
},
"finishReason": "STOP"
}
],
"modelVersion": "gemini-1.5-flash-002@default",
"usageMetadata": {
"candidatesTokenCount": 36,
"promptTokenCount": 29180,
"totalTokenCount": 29216
}
}
}
BigQuery のバッチ予測
BigQuery 入力テーブル、モデル、出力先を指定します。バッチ予測ジョブとテーブルは同じリージョンに存在する必要があります。
入力を準備する
BigQuery ストレージ入力
サービス アカウントには、適切な BigQuery 権限が必要です。サービス アカウントに BigQuery ユーザーのロールを付与するには、次のように
gcloud iam service-accounts add-iam-policy-binding
コマンドを使用します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.user"
次の値を置き換えます。
- PROJECT_ID: サービス アカウントが作成されたプロジェクト。
- SERVICE_ACCOUNT_ID: サービス アカウントの ID。
request
列は必須で、有効な JSON である必要があります。この JSON データは、モデルの入力を表します。request
列のコンテンツは、GenerateContentRequest
の構造と一致している必要があります。入力テーブルには、
request
以外の列のデータ型を含めることができます。これらの列には、配列、構造体、範囲、日時、地理情報以外の BigQuery データ型を使用できます。これらの列はコンテンツの生成では無視されますが、出力テーブルには含まれます。システムは、出力用にresponse
とstatus
の 2 つの列名を予約します。これらは、バッチ予測ジョブの結果に関する情報を提供するために使用されます。次の Gemini モデルは
fileData
をサポートしています。gemini-1.5-flash-002
gemini-1.5-flash-001
gemini-1.5-pro-002
gemini-1.5-pro-001
入力の例(JSON) |
---|
|
バッチ予測ジョブをリクエストする
REST
バッチ予測ジョブを作成するには、projects.locations.batchPredictionJobs.create
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: Gemini モデルをサポートするリージョン。
- PROJECT_ID: 実際のプロジェクト ID。
- INPUT_URI: バッチ予測入力が配置されている BigQuery テーブル(
bq://myproject.mydataset.input_table
など)。マルチリージョン データセットはサポートされていません。 - OUTPUT_FORMAT: BigQuery テーブルに出力するには、
bigquery
を指定します。Cloud Storage バケットに出力するには、jsonl
を指定します。 - DESTINATION: BigQuery の場合は、
bigqueryDestination
を指定します。Cloud Storage の場合は、gcsDestination
を指定します。 - OUTPUT_URI_FIELD_NAME: BigQuery の場合は、
outputUri
を指定します。Cloud Storage の場合は、outputUriPrefix
を指定します。 - OUTPUT_URI: BigQuery の場合は、テーブルの場所(
bq://myproject.mydataset.output_result
など)を指定します。BigQuery の出力データセットのリージョンは、Vertex AI バッチ予測ジョブのリージョンと同じである必要があります。Cloud Storage の場合は、バケットとディレクトリの場所(例:gs://mybucket/path/to/output
)を指定します。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
リクエストの本文(JSON):
{ "displayName": "my-bigquery-batch-prediction-job", "model": "publishers/google/models/gemini-1.5-flash-002", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat": "OUTPUT_FORMAT", "DESTINATION": { "OUTPUT_URI_FIELD_NAME": "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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンスには、バッチジョブの固有識別子が含まれます。ジョブ 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
Gen AI SDK for Python
Google Gen AI SDK for Python をインストールまたは更新する方法を確認する。
詳細については、Gen AI SDK for Python API リファレンス ドキュメントまたは python-genai
GitHub リポジトリをご覧ください。
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
Vertex AI SDK for Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
バッチ出力を取得する
バッチ予測タスクが完了すると、リクエストで指定した BigQuery テーブルに出力が保存されます。
成功した行の場合、モデルのレスポンスは response
列に格納されます。それ以外の場合、エラーの詳細が status
列に格納され、詳細な調査が可能です。
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 } } |
次のステップ
- Gemini モデルのチューニング方法を確認する。Gemini のモデル チューニングの概要をご覧ください。
- バッチ予測 API の詳細を確認する。