La previsione batch è una tecnica preziosa per applicare in modo efficiente i modelli di machine learning a set di dati di grandi dimensioni. Anziché elaborare singoli punti dati, puoi inviare un batch di dati a Gemini per la previsione, risparmiando tempo e risorse di calcolo. A differenza della previsione online, in cui sei limitato a un prompt di input alla volta, puoi inviare un numero elevato di prompt multimodali in una singola richiesta batch. Le risposte vengono poi inserite in modo asincrono nella posizione di output di archiviazione BigQuery o Cloud Storage.
Le richieste batch per i modelli Gemini vengono scontate del 50% rispetto alle richieste standard. Per saperne di più, consulta la pagina dei prezzi.
Caso d'uso per la previsione batch
Prendi in considerazione una libreria online con migliaia di libri nel suo database. Anziché generare descrizioni singole per ogni libro, il che richiederebbe molto tempo, questo negozio può utilizzare la previsione batch di Gemini per elaborare tutte le informazioni sui libri contemporaneamente. Questo approccio migliora notevolmente l'efficienza riducendo il tempo di elaborazione complessivo e al minimo le risorse di calcolo richieste.
La previsione in batch può anche migliorare la coerenza con l'automazione. Elaborando tutte le descrizioni contemporaneamente, il modello mantiene un tono e uno stile uniformi in tutte le descrizioni dei libri, rafforzando l'identità del brand. Questa libreria può anche integrare la previsione batch nel proprio flusso di lavoro per generare automaticamente descrizioni per le nuove voci di libri, eliminando il lavoro manuale e garantendo che il sito web rimanga aggiornato con un intervento umano minimo.
Modelli Gemini che supportano le previsioni batch
I seguenti modelli Gemini di base e ottimizzati supportano le previsioni batch:
Limitazioni
Dopo l'invio, i job batch vengono convalidati e messi in coda per la capacità disponibile. Una volta avviato, un job ha un limite di esecuzione di 24 ore. Se non viene completato entro questo periodo, tutte le richieste completate verranno esportate e ti verranno addebitati solo gli importi relativi alle richieste completate. Il tempo massimo che un job batch può trascorrere in coda e in esecuzione è di 72 ore.
Input e output della previsione batch
Le richieste batch per i modelli Gemini accettano origini di archiviazione BigQuery e origini Cloud Storage. Puoi scegliere in modo indipendente di generare l'output delle previsioni in una tabella BigQuery o in un file JSONL in un bucket Cloud Storage.
Ti consigliamo di includere nell'origine di input (tabella o file) almeno 25.000 richieste per job. Il sistema di previsione batch suddivide e parallelizza i job nel modo più rapido ed efficiente possibile con le risorse disponibili al momento. Non esiste un numero massimo di richieste per job.
Per quote e limiti relativi ai job di previsioni in batch, consulta Quote e limiti di sistema per l'AI generativa su Vertex AI.
Previsione batch per Cloud Storage
Preparare gli input
Input Cloud Storage
- Formato file: JSON Lines (JSONL)
- Situato a
us-central1
Deve disporre delle autorizzazioni Cloud Storage appropriate per il account di servizio. Per concedere all'account di servizio l'autorizzazione di lettura e scrittura su un bucket Cloud Storage, utilizza il comando
gcloud iam service-accounts add-iam-policy-binding
come segue:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectUser"
Sostituisci i seguenti valori:
- PROJECT_ID: il progetto in cui è stato creato l'account di servizio.
- SERVICE_ACCOUNT_ID: l'ID dell'account di servizio.
Input di esempio (JSONL) |
---|
|
Richiedere un job di previsione batch
Specifica la tabella di input, il modello e la posizione di output di Cloud Storage.
REST
Per creare un job di previsione batch, utilizza il metodo
projects.locations.batchPredictionJobs.create
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: una regione che supporta i modelli Gemini.
- PROJECT_ID: il tuo ID progetto
- MODEL_PATH: il nome del modello dell'editore, ad esempio
publishers/google/models/gemini-2.0-flash-001
; o il nome dell'endpoint ottimizzato, ad esempioprojects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
, dove MODEL_ID è l'ID modello del modello ottimizzato. - INPUT_URI: la posizione
Cloud Storage dell'input di previsione batch JSONL, ad esempio
gs://bucketname/path/to/file.jsonl
. - OUTPUT_FORMAT: per l'output in
una tabella BigQuery, specifica
bigquery
. Per l'output in un bucket Cloud Storage, specificajsonl
. - DESTINATION: per
BigQuery, specifica
bigqueryDestination
. Per Cloud Storage, specificagcsDestination
. - OUTPUT_URI_FIELD_NAME:
Per BigQuery, specifica
outputUri
. Per Cloud Storage, specificaoutputUriPrefix
. - OUTPUT_URI: per
BigQuery, specifica la posizione della tabella, ad esempio
bq://myproject.mydataset.output_result
. La regione del set di dati BigQuery di output deve essere la stessa del job di previsione batch di Vertex AI. Per Cloud Storage, specifica la posizione del bucket e della directory, ad esempiogs://mybucket/path/to/output
.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Corpo JSON della richiesta:
{ "displayName": "my-cloud-storage-batch-prediction-job", "model": "MODEL_PATH", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat": "OUTPUT_FORMAT", "DESTINATION": { "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI" } } }
Per inviare la richiesta, scegli una di queste 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
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
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Output di previsione batch
Al termine di un'attività di previsione batch, l'output viene archiviato
nel bucket Cloud Storage o nella tabella BigQuery specificati nella richiesta.
Per le righe riuscite, le risposte del modello vengono memorizzate nella colonna response
. In caso contrario,
i dettagli dell'errore vengono memorizzati nella colonna status
per ulteriori verifiche.
Durante i job a esecuzione prolungata, le previsioni completate vengono esportate continuamente nella destinazione di output specificata. Questa operazione inizia dopo 90 minuti. Se il job di previsione batch viene annullato o non va a buon fine, vengono esportate tutte le previsioni completate.
Esempio di output di 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-2.0-flash-001@default",
"usageMetadata": {
"candidatesTokenCount": 36,
"promptTokenCount": 29180,
"totalTokenCount": 29216
}
}
}
Previsione batch per BigQuery
Specifica la tabella di input, il modello e la posizione di output BigQuery. Il job di previsione batch e la tabella devono trovarsi nella stessa regione.
Preparare gli input
Input di archiviazione BigQuery
Il account di servizio deve disporre delle autorizzazioni BigQuery appropriate. Per concedere all'account di servizio il ruolo Utente BigQuery, utilizza il comando
gcloud iam service-accounts add-iam-policy-binding
nel seguente modo:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.user"
Sostituisci i seguenti valori:
- PROJECT_ID: il progetto in cui è stato creato l'account di servizio.
- SERVICE_ACCOUNT_ID: l'ID dell'account di servizio.
È necessaria una colonna
request
, che deve essere un JSON valido. Questi dati JSON rappresentano l'input per il modello.I contenuti della colonna
request
devono corrispondere alla struttura di unGenerateContentRequest
.La tabella di input può avere tipi di dati delle colonne diversi da
request
. Queste colonne possono avere tipi di dati BigQuery ad eccezione di: array, struct, intervallo, datetime e geografia. Queste colonne vengono ignorate per la generazione di contenuti, ma sono incluse nella tabella di output.
Input di esempio (JSON) |
---|
|
Richiedere un job di previsione batch
REST
Per creare un job di previsione batch, utilizza il metodo
projects.locations.batchPredictionJobs.create
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: una regione che supporta i modelli Gemini.
- PROJECT_ID: il tuo ID progetto
- MODEL_PATH: il nome del modello dell'editore, ad esempio
publishers/google/models/gemini-2.0-flash-001
; o il nome dell'endpoint ottimizzato, ad esempioprojects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
, dove MODEL_ID è l'ID modello del modello ottimizzato. - INPUT_URI: la
tabella BigQuery in cui si trova l'input della previsione batch
come
bq://myproject.mydataset.input_table
. I set di dati multiregionali non sono supportati. - OUTPUT_FORMAT: per l'output in
una tabella BigQuery, specifica
bigquery
. Per l'output in un bucket Cloud Storage, specificajsonl
. - DESTINATION: per
BigQuery, specifica
bigqueryDestination
. Per Cloud Storage, specificagcsDestination
. - OUTPUT_URI_FIELD_NAME:
Per BigQuery, specifica
outputUri
. Per Cloud Storage, specificaoutputUriPrefix
. - OUTPUT_URI: per
BigQuery, specifica la posizione della tabella, ad esempio
bq://myproject.mydataset.output_result
. La regione del set di dati BigQuery di output deve essere la stessa del job di previsione batch di Vertex AI. Per Cloud Storage, specifica la posizione del bucket e della directory, ad esempiogs://mybucket/path/to/output
.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Corpo JSON della richiesta:
{ "displayName": "my-bigquery-batch-prediction-job", "model": "MODEL_PATH", "inputConfig": { "instancesFormat": "bigquery", "bigquerySource":{ "inputUri" : "INPUT_URI" } }, "outputConfig": { "predictionsFormat": "OUTPUT_FORMAT", "DESTINATION": { "OUTPUT_URI_FIELD_NAME": "OUTPUT_URI" } } }
Per inviare la richiesta, scegli una di queste 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
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
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Recupera l'output batch
Al termine di un'attività di previsione batch, l'output viene archiviato nella tabella BigQuery specificata nella richiesta.
Per le righe riuscite, le risposte del modello vengono memorizzate nella colonna response
. In caso contrario,
i dettagli dell'errore vengono memorizzati nella colonna status
per ulteriori verifiche.
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 } } |
Passaggi successivi
- Scopri come ottimizzare un modello Gemini in Panoramica dell'ottimizzazione dei modelli per Gemini
- Scopri di più sull'API Batch Prediction.