批量预测是一种有价值的技术,可用于高效地将机器学习模型应用于大型数据集。您可以将一批数据提交给 Gemini 进行预测,而不是处理单个数据点,从而节省时间和计算资源。与在线预测(一次只能有一个输入提示)不同,您可以在单个批量请求中发送大量多模态提示。然后,您的回答会异步填充到 BigQuery 或 Cloud Storage 存储空间输出位置。
Gemini 模型的批量请求比标准请求享受 50% 的折扣。如需了解详情,请参阅价格页面。
批量预测用例
假设某个在线书店的数据库中有数千本图书。该商店可以使用 Gemini 批量预测功能一次处理所有图书信息,而无需为每本图书单独生成说明,这将大大节省时间。这种方法通过缩短总体处理时间并最大限度地减少所需的计算资源,显著提高了效率。
批量预测还可以提高自动化操作的一致性。通过同时处理所有说明,该模型可确保所有图书说明保持一致的基调和风格,从而强化品牌形象。该书店还可以将批量预测集成到其工作流中,以自动为新图书条目生成说明,从而免去手动操作,并确保其网站始终保持最新状态,同时尽可能减少人工干预。
支持批量预测的多模态模型
以下多模态模型支持批量预测。
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 表或 Cloud Storage 存储桶中的 JSONL 文件。
针对 Cloud Storage 的批量预测
准备输入
Cloud Storage 输入
- 文件格式:JSON 行 (JSONL)
- 位于
us-central1
- 服务账号的适当读取权限
fileData
支持仅限于某些 Gemini 型号。示例输入(JSONL) {"request":{"contents": [{"role": "user", "parts": [{"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"}}, {"fileData": {"fileUri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg", "mimeType": "image/jpeg"}}]}]}} {"request":{"contents": [{"role": "user", "parts": [{"text": "Describe what is happening in this video."}, {"fileData": {"fileUri": "gs://cloud-samples-data/generative-ai/video/another_video.mov", "mimeType": "video/mov"}}]}]}}
请求批量预测作业
指定 Cloud Storage 输入表、模型和输出位置。
REST
如需创建批量预测作业,请使用 projects.locations.batchPredictionJobs.create
方法。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:支持 Gemini 模型的区域。
- PROJECT_ID:您的项目 ID。
- INPUT_URI:JSONL 批量预测输入(例如
gs://bucketname/path/to/file.jsonl
)的 Cloud Storage 位置。 - 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 方法和网址:
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 响应。
响应包含批量作业的唯一标识符。您可以使用 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
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 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 存储输入
request
列是必需的,并且必须是有效的 JSON。此 JSON 数据代表您要提供给模型的输入。request
列中的内容必须与GenerateContentRequest
的结构一致。- 输入表可以包含
request
以外的列数据类型。这些列可以采用 BigQuery 数据类型,但以下类型除外:数组、结构体、范围、日期时间和地理位置。这些列在内容生成中会被忽略,但会包含在输出表中。系统为输出预留了两个列名称:response
和status
。这些参数用于提供有关批量预测作业结果的信息。 fileData
支持仅限于某些 Gemini 型号。
示例输入(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 方法和网址:
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 响应。
响应包含批量作业的唯一标识符。您可以使用 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
Python
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
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 输出示例
请求 | Response | 状态 |
---|---|---|
{"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 模型调优概览
- 详细了解 Batch Prediction API。