批量预测是一种高效发送对延迟不敏感的多种多模态提示的方法。与在线预测(一次只能有一个输入提示)不同,您可以在单个批量请求中发送大量多模态提示。然后,您的回答会异步填充到 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
。这些属性用于提供有关批量预测作业结果的信息。 - 批量预测不支持 Gemini 的
fileData
字段。
示例输入 (JSON) |
---|
|
Cloud Storage 输入
- 文件格式:JSON 行 (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 项目的名称。BP_JOB_NAME
:您为作业选择的名称。INPUT_URI
:输入源 URI。这是 BigQuery 表 URI,格式为bq://PROJECT_ID.DATASET.TABLE
。或者您的 Cloud Storage 存储桶 URI。INPUT_SOURCE
:输入源类型。选项为bigquerySource
和gcsSource
。INSTANCES_FORMAT
:输入实例格式 - 可以是“jsonl”或“bigquery”。OUTPUT_URI
:输出或目标输出表的 URI,格式为bq://PROJECT_ID.DATASET.TABLE
。如果该表尚不存在,则系统会为您创建。
HTTP 方法和网址:
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" }
响应包含批量作业的唯一标识符。您可以使用 BATCH_JOB_ID 轮询批量作业的状态,直到作业 state
为 JOB_STATE_SUCCEEDED
。 例如:
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 输出示例
请求 | 回答 | status |
---|---|---|
'{"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。