En esta página, se describe cómo obtener inferencias por lotes con Cloud Storage.
1. Prepara tus entradas
La inferencia por lotes para los modelos de Gemini acepta un archivo de líneas JSON (JSONL) almacenado en Cloud Storage como datos de entrada. Cada línea de los datos de entrada por lotes es una solicitud al modelo.
Por ejemplo:
{"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"}}]}], "generationConfig": {"temperature": 0.9, "topP": 1, "maxOutputTokens": 256}}}
Descarga el archivo de solicitud por lotes de muestra
Después de preparar tus datos de entrada y subirlos a Cloud Storage, asegúrate de que el agente de servicio de AI Platform tenga permiso para leer el archivo de Cloud Storage.
2. Envía un trabajo por lotes
Puedes crear un trabajo por lotes con la Google Cloud consola, la API de REST o el SDK de IA generativa de Google.
Console
- En la sección Agent Platform de la consola de Google Cloud , ve a la página Batch Inference.
- Haz clic en Crear.
REST
Para crear un trabajo de inferencia por lotes, usa el método projects.locations.batchPredictionJobs.create.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- ENDPOINT_PREFIX: Es la región del recurso del modelo, seguida de
-. Por ejemplo,us-central1-. Si usas el extremo global, deja este campo en blanco. Nota: El extremo global no es compatible con la inferencia por lotes que usa modelos ajustados. - LOCATION: Es una región que admite modelos de Gemini. Si usas el extremo global, ingresa
global. - PROJECT_ID: ID del proyecto.
- MODEL_PATH: Es el nombre del modelo de publicador, por ejemplo,
publishers/google/models/gemini-2.5-flash, o el nombre del extremo ajustado, por ejemplo,projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID, donde MODEL_ID es el ID del modelo ajustado. - INPUT_URI: Es la ubicación de Cloud Storage de tu entrada de inferencia por lotes en formato JSONL, como
gs://bucketname/path/to/file.jsonl. - OUTPUT_FORMAT: Para generar el resultado en un bucket de Cloud Storage, especifica
jsonl. - DESTINATION: Para BigQuery, especifica
bigqueryDestination. En Cloud Storage, especificagcsDestination. - OUTPUT_URI_FIELD_NAME:
Para BigQuery, especifica
outputUri. En el caso de Cloud Storage, especificaoutputUriPrefix. - OUTPUT_URI: En el caso de BigQuery, especifica la ubicación de la tabla, como
bq://myproject.mydataset.output_result. La región del conjunto de datos de salida de BigQuery debe ser la misma que la del trabajo de inferencia por lotes de Agent Platform. En Cloud Storage, especifica la ubicación del bucket y el directorio, comogs://mybucket/path/to/output.
Método HTTP y URL:
POST https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Cuerpo JSON de la solicitud:
{
"displayName": "my-cloud-storage-batch-inference-job",
"model": "MODEL_PATH",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat": "OUTPUT_FORMAT",
"DESTINATION": {
"OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
}
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$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://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
<0x0Python
Instalar
pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.
Establece variables de entorno para usar el SDK de IA generativa 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_ENTERPRISE=True
3. Supervisa el estado y el progreso del trabajo
Después de enviar el trabajo por lotes, puedes verificar su estado con la consola de Google Cloud , la API de REST o el SDK de IA generativa de Google.
Console
- Ve a la página Batch Inference.
- Selecciona tu trabajo por lotes para supervisar su progreso.
REST
Para supervisar un trabajo de inferencia por lotes, usa el método projects.locations.batchPredictionJobs.get y consulta el campo CompletionStats en la respuesta.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- ENDPOINT_PREFIX: Es la región del recurso del modelo, seguida de
-. Por ejemplo,us-central1-. Si usas el extremo global, deja este campo en blanco. - LOCATION: Es una región que admite modelos de Gemini. Si usas el extremo global, ingresa
global. - PROJECT_ID: ID del proyecto.
- BATCH_JOB_ID: Es el ID de tu trabajo por lotes.
Método HTTP y URL:
GET https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID"
PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://ENDPOINT_PREFIXaiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Python
Instalar
pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.
Establece variables de entorno para usar el SDK de IA generativa 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_ENTERPRISE=True
Para obtener descripciones de los estados de trabajo, consulta JobState.
4. Recuperar los resultados por lotes
Cuando se completa un trabajo de inferencia por lotes, el resultado se almacena en el bucket de Cloud Storage que especificaste cuando creaste el trabajo. En el caso de las filas correctas, las respuestas del modelo se almacenan en el campo response. De lo contrario, los detalles del error se almacenan en el campo status para su posterior inspección.
Durante los trabajos de larga duración, las inferencias completadas se exportan de forma continua al destino de salida especificado. Si se detiene el trabajo de inferencia por lotes, se exportarán todas las filas completadas. Solo se te cobrarán las inferencias completadas.
Ejemplos de resultados
Ejemplo sin errores
{
"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
}
}
}
Ejemplo con errores
{
"status": "Bad Request: {\"error\": {\"code\": 400, \"message\": \"Please use a valid role: user, model.\", \"status\": \"INVALID_ARGUMENT\"}}",
"processed_time": "2025-07-09T19:57:43.558+00:00",
"request": {
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
],
"role": "tester"
}
]
},
"response": {}
}