As previsões em lote são uma maneira de enviar com eficiência vários comandos multimodais que não são sensíveis à latência. Ao contrário da previsão on-line, em que você está limitado a um comando de entrada por vez, é possível enviar um grande número de solicitações multimodais em um único comando em lote. Então, suas respostas preencher de maneira assíncrona a saída do armazenamento do BigQuery local.
Modelos multimodais compatíveis com previsões em lote
Os modelos multimodais a seguir são compatíveis com previsões em lote.
gemini-1.5-flash-001
gemini-1.5-pro-001
gemini-1.0-pro-002
gemini-1.0-pro-001
Preparar suas entradas
As solicitações em lote para modelos multimodais aceitam apenas origens de armazenamento do BigQuery. Para saber mais, consulte Visão geral do armazenamento do BigQuery.
Armazene sua entrada em uma tabela do BigQuery com uma coluna JSON chamada
request
:
- O conteúdo da coluna
request
precisa ser um JSON válido. - O conteúdo nas instruções JSON precisa corresponder à estrutura de um
GenerateContentRequest
. - A tabela de entrada pode ter colunas diferentes de
request
. Eles são ignorado para geração de conteúdo, mas incluído na tabela de saída. O sistema reserva dois nomes de colunas para a saída:response
estatus
. Eles são usados para fornecer informações sobre o resultado do job de previsão em lote. - A previsão em lote não aceita o campo
fileData
para Gemini.
Exemplo de uma entrada do BigQuery
solicitação |
---|
{ "contents": [ { "role": "user", "parts": { "text": "Give me a recipe for banana bread." } } ], "system_instruction": { "parts": [ { "text": "You are a chef." } ] } } |
Solicitar uma resposta em lote
Dependendo do número de itens de entrada enviados, uma tarefa de previsão em lote pode levar algum tempo para ser concluída.
REST
Para testar um comando multimodal usando a API Vertex AI, envie uma solicitação POST ao endpoint do modelo do publisher.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o nome do seu projeto do Google Cloud.
- BP_JOB_NAME: um nome que você escolhe para o job.
- INPUT_URI: o URI da origem da entrada. Este é um URI de tabela do BigQuery no
formulário
bq://PROJECT_ID.DATASET.TABLE
. - OUTPUT_URI: o URI do BigQuery da tabela de saída de destino, na
formulário
bq://PROJECT_ID.DATASET.TABLE
. Se a tabela ainda não existe, ela é criada para você.
Método HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
Corpo JSON da solicitação:
{ "displayName": "BP_JOB_NAME", "model": "publishers/google/models/gemini-1.0-pro-002", "inputConfig": { "instancesFormat":"bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat":"bigquery", "bigqueryDestination":{ "outputUri": "OUTPUT_URI" } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a esta:
{ "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" }
A resposta inclui um identificador exclusivo para a tarefa em lote.
É possível pesquisar o status da tarefa em lote usando BATCH_JOB_ID até que o job state
seja JOB_STATE_SUCCEEDED
. Exemplo:
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
Recuperar saída em lote
Quando uma tarefa de previsão em lote é concluída, a saída é armazenada na tabela do BigQuery especificada na solicitação.
Exemplo de uma saída do BigQuery
solicitação | resposta | 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 } } |
A seguir
- Saiba como ajustar um modelo do Gemini na Visão geral do ajuste de modelos para o Gemini.
- Saiba mais sobre a política de API de previsão em lote.