批量预测

本指南介绍了如何从 Llama 模型获取批量预测结果,涵盖以下主题:

下图总结了整个工作流程:

通过批量预测,您可以高效地向 Llama 模型发送对延迟时间不敏感的多个纯文本提示。与在线预测(每次请求发送一个输入提示)相比,您可以在单个请求中批量发送大量输入提示。

预览版期间,批量预测功能可供免费使用。

支持的 Llama 模型

Vertex AI 对以下 Llama 模型支持批量预测:

准备输入

您可以在 BigQuery 表中或以 Cloud Storage 中的 JSONL 文件形式提供输入提示。这两种来源的输入都必须遵循 OpenAI API 架构 JSON 格式,如以下示例所示:

输入源 说明 使用场景
BigQuery 输入数据存储在 BigQuery 表中。 如果您的数据已位于 BigQuery 中,并且是大规模结构化数据集,并且您希望利用 SQL 进行数据准备,那么这种方法非常适合。
Cloud Storage 输入数据以 JSONL 文件的形式存储在 Cloud Storage 存储桶中。 适用于非结构化或半结构化数据,当数据来自各种来源时,或适用于更简单的基于文件的工作流。
{"custom_id": "test-request-0", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "meta/llama-3.1-405b-instruct-maas", "messages": [{"role": "system", "content": "You are a chef."}, {"role": "user", "content": "Give me a recipe for banana bread"}], "max_tokens": 1000}}

BigQuery

BigQuery 输入表必须具有以下架构:

列名 说明
custom_id 每个请求的 ID,用于将输入与输出进行匹配。
method 请求方法。
url 请求端点。
body(JSON) 您的输入提示。
  • 输入表可以包含其他列。这些列会被批量作业忽略,并直接传递到输出表。
  • 批量预测作业会预留 response(JSON) 和 id 作为输出的列名。为避免冲突,请勿在输入表中为列使用这些名称。
  • 批量预测作业会舍弃 methodurl 列,因此输出表中不包含这两列。

Cloud Storage

输入必须是 Cloud Storage 存储桶中的 JSONL 文件。文件中的每一行都必须是遵循所需架构的有效 JSON 对象。

请求批量预测

如需向 Llama 模型请求批量预测,请使用来自 BigQueryCloud Storage 的输入。无论输入源是什么,您都可以选择将预测结果输出到 BigQuery 表或 Cloud Storage 存储桶中的 JSONL 文件。

BigQuery

指定 BigQuery 输入表、模型和输出位置。批量预测作业和您的表必须位于同一区域。

REST

设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:支持 Llama 模型的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL:要调优的模型的名称。
  • INPUT_URI:批量预测输入所在的 BigQuery 表,例如 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,请指定表位置,例如 myproject.mydataset.output_result。对于 Cloud Storage,请指定存储桶和文件夹位置,例如 gs://mybucket/path/to/outputfile

HTTP 方法和网址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

请求 JSON 正文:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/meta/models/MODEL",
  "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 响应。

Cloud Storage

指定 JSONL 文件的 Cloud Storage 位置、模型和输出位置。

REST

设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:支持 Llama 模型的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL:要调优的模型的名称。
  • INPUT_URI:JSONL 批量预测输入的 Cloud Storage 位置,例如 gs://bucketname/path/to/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,请指定表位置,例如 myproject.mydataset.output_result。对于 Cloud Storage,请指定存储桶和文件夹位置,例如 gs://mybucket/path/to/outputfile

HTTP 方法和网址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs

请求 JSON 正文:

'{
  "displayName": "JOB_NAME",
  "model": "publishers/meta/models/MODEL",
  "inputConfig": {
    "instancesFormat":"jsonl",
    "gcsDestination":{
      "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 响应。

获取批量预测作业的状态

提交请求后,您可以获取批量预测作业的状态,以检查其是否已完成。作业完成所需的时间取决于您提交的输入数据项数量。

REST

设置您的环境后,您可以使用 REST 测试文本提示。以下示例会向发布方模型端点发送请求。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • LOCATION:批量作业所在的区域。
  • JOB_ID:您创建作业时返回的批量作业 ID。

HTTP 方法和网址:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID

如需发送请求,请选择以下方式之一:

curl

执行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID"

PowerShell

执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/JOB_ID" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应。

检索输出

批量预测作业完成后,输出会保存到您在请求中指定的目标位置。

  • BigQuery:输出位于目标表的 response(JSON) 列中。
  • Cloud Storage:输出会以 JSONL 文件的形式保存在目标存储桶中。