Le previsioni batch sono un modo per inviare in modo efficiente più prompt multimodali non sensibili alla latenza. A differenza delle previsioni online, dove ti trovi limitato a un solo prompt di input alla volta, puoi inviare un numero di prompt multimodali in una singola richiesta batch. Le risposte vengono poi compilate in modo asincrono nella posizione di output dello spazio di archiviazione BigQuery.
Le richieste batch per i modelli Gemini sono scontate del 50% rispetto alle richieste standard richieste. Per scoprire di più, consulta la pagina dei prezzi.
Modelli multimodali che supportano le previsioni batch
I seguenti modelli multimodali supportano le previsioni batch.
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
Prepara gli input
Le richieste batch per i modelli multimodali accettano origini di archiviazione BigQuery e Cloud Storage.
Input dello spazio di archiviazione BigQuery
- I contenuti nella colonna
request
devono essere in formato JSON valido. Questi dati JSON rappresenta l'input per il modello. - Il contenuto delle istruzioni JSON deve corrispondere alla struttura di un
GenerateContentRequest
- La tabella di input può avere colonne diverse da
request
. Sono ignorato per la generazione di contenuti, ma incluso nella tabella di output. Il sistema preleva due nomi di colonna per l'output:response
estatus
. Questi parametri vengono utilizzati per fornire informazioni sul risultato del job di previsione batch. - La previsione batch supporta solo gli URI pubblici dei bucket YouTube e Cloud Storage nel campo
fileData
per o Gemini. - Il supporto di
fileData
è limitato ad alcuni modelli Gemini.
Input di esempio (JSON) |
---|
|
Input di Cloud Storage
- Formato file: JSON Lines (JSONL)
- Si trova presso
us-central1
- Autorizzazioni di lettura appropriate per l'account di servizio
- La previsione batch supporta solo gli URI dei bucket YouTube e Cloud Storage pubblici nel campo
fileData
per Gemini. - Il supporto di
fileData
è limitato a determinati modelli Gemini.Input di esempio (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"}}]}]}}
Richiedi una risposta batch
In base al numero di elementi inseriti, viene inviata una di generazione batch può richiedere del tempo.
REST
Per testare un prompt multimodale utilizzando l'API Vertex AI, invia una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il nome del tuo progetto Google Cloud.BP_JOB_NAME
: un nome che scegli per il tuo lavoro.INPUT_URI
: l'URI di origine di input. Questo è un URI della tabella BigQuery modulobq://PROJECT_ID.DATASET.TABLE
. Oppure l'URI del tuo bucket Cloud Storage.INPUT_SOURCE
: il tipo di origine dati. Le opzioni sonobigquerySource
egcsSource
.INSTANCES_FORMAT
: formato delle istanze di input. Può essere "jsonl" o "bigquery".OUTPUT_URI
: l'URI della tabella di output o di destinazione, nel modulobq://PROJECT_ID.DATASET.TABLE
. Se la tabella non esiste già, viene creato automaticamente.
Metodo HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs
Corpo JSON della richiesta:
{ "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" } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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" }
La risposta include un identificatore univoco per il job batch.
Puoi eseguire il polling dello stato del job batch utilizzando
BATCH_JOB_ID finché il job state
non è
JOB_STATE_SUCCEEDED
. Ad esempio:
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
Recuperare l'output batch
Al termine di un'attività di previsione batch, l'output viene archiviato nella tabella BigQuery specificata nella richiesta.
Esempio di output BigQuery
richiesta | risposta | stato |
---|---|---|
'{"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 } } |
Esempio di output di 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}'"},
}'
Passaggi successivi
- Scopri come ottimizzare un modello Gemini in Panoramica dell'ottimizzazione dei modelli per Gemini
- Scopri di più sulle API Batch Prediction.