La predicción por lotes es una técnica valiosa para aplicar modelos de aprendizaje automático a conjuntos de datos grandes de manera eficiente. En lugar de procesar datos individuales, puedes enviar un lote de datos a Gemini para la predicción, lo que ahorra tiempo y recursos de procesamiento. A diferencia de la predicción en línea, en la que estás limitado a una instrucción de entrada a la vez, puedes enviar una gran cantidad de instrucciones multimodales en una sola solicitud por lotes. Luego, tus respuestas se propagan de forma asíncrona en tu ubicación de salida de almacenamiento de BigQuery o Cloud Storage.
Las solicitudes por lotes para los modelos de Gemini tienen un 50% de descuento en comparación con las solicitudes estándar. Para obtener más información, consulta la página de precios.
Caso de uso de la predicción por lotes
Considera una librería en línea con miles de libros en su base de datos. En lugar de generar descripciones de forma individual para cada libro, lo que llevaría tiempo, esta tienda puede usar la predicción por lotes de Gemini para procesar toda la información de los libros a la vez. Este enfoque mejora de forma significativa la eficiencia, ya que reduce el tiempo de procesamiento general y minimiza los recursos de procesamiento necesarios.
La predicción por lotes también puede mejorar la coherencia con la automatización. Cuando se procesan todas las descripciones de forma simultánea, el modelo mantiene un tono y un estilo uniformes en las descripciones de los libros, lo que refuerza la identidad de marca. Esta librería también puede integrar la predicción por lotes en su flujo de trabajo para generar automáticamente descripciones de entradas de libros nuevas, lo que elimina el esfuerzo manual y garantiza que su sitio web permanezca actualizado con una intervención humana mínima.
Modelos de Gemini que admiten predicciones por lotes
Los siguientes modelos de Gemini base y ajustados admiten predicciones por lotes:
Limitaciones
Después del envío, los trabajos por lotes se validan y se ponen en cola para la capacidad disponible. Una vez que se inicia un trabajo, tiene un límite de ejecución de 24 horas. Si no se completa dentro de ese plazo, se exportarán todas las solicitudes completadas y solo se te cobrará por las que se hayan completado. El tiempo máximo que una trabajo por lotes puede pasar en la cola y en ejecución es de 72 horas.
Entradas y salidas de la predicción por lotes
Las solicitudes por lotes para modelos de Gemini aceptan fuentes de almacenamiento de BigQuery y de Cloud Storage. Puedes elegir de forma independiente si deseas generar predicciones en una tabla de BigQuery o en un archivo JSONL en un bucket de Cloud Storage.
Te recomendamos que tu fuente de entrada (tabla o archivo) incluya un mínimo de 25,000 solicitudes por trabajo. El sistema de predicción por lotes divide y paraleliza las tareas lo más rápido y eficientemente posible con los recursos disponibles en ese momento. No hay una cantidad máxima de solicitudes por trabajo.
Para conocer las cuotas y los límites de los trabajos de predicción por lotes, consulta Cuotas y límites del sistema de IA generativa en Vertex AI.
Predicción por lotes para Cloud Storage
Prepara tus entradas
Entrada de Cloud Storage
- Formato de archivo: Líneas JSON (JSONL)
- Ubicado en
us-central1
Debe tener los permisos de Cloud Storage adecuados para la cuenta de servicio. Para otorgarle a la cuenta de servicio permiso de lectura y escritura en un bucket de Cloud Storage, usa el comando
gcloud iam service-accounts add-iam-policy-binding
de la siguiente manera:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectUser"
Reemplaza los siguientes valores:
- PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
- SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
Ejemplo de entrada (JSONL) |
---|
|
Solicita un trabajo de predicción por lotes
Especifica la tabla de entrada, el modelo y la ubicación de salida de Cloud Storage.
REST
Para crear un trabajo de predicción 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:
- LOCATION: Es una región que admite modelos de Gemini.
- PROJECT_ID: El ID del proyecto.
- MODEL_PATH: El nombre del modelo del publicador, por ejemplo,
publishers/google/models/gemini-2.0-flash-001
, 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 predicción por lotes JSONL, como
gs://bucketname/path/to/file.jsonl
. - OUTPUT_FORMAT: Para generar una salida en una tabla de BigQuery, especifica
bigquery
. Para generar un bucket de Cloud Storage, especificajsonl
. - DESTINATION: Para BigQuery, especifica
bigqueryDestination
. En Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica
outputUri
. En Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: Para BigQuery, especifica la ubicación de la tabla, como
bq://myproject.mydataset.output_result
. La región del conjunto de datos de BigQuery de salida debe ser la misma que la del trabajo de predicción por lotes de Vertex AI. En Cloud Storage, especifica el bucket y la ubicación del directorio, comogs://mybucket/path/to/output
.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Cuerpo JSON de la solicitud:
{ "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" } } }
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://LOCATION-aiplatform.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://LOCATION-aiplatform.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:
En la respuesta, se incluye un identificador único para el trabajo por lotes.
Puedes consultar el estado del trabajo por lotes mediante BATCH_JOB_ID hasta que el state
sea JOB_STATE_SUCCEEDED
. Por ejemplo:
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
Gen AI SDK for 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 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
Salida de la predicción por lotes
Cuando se completa una tarea de predicción por lotes, el resultado se almacena en el bucket de Cloud Storage o en la tabla de BigQuery que especificaste en la solicitud.
En el caso de las filas que se procesaron correctamente, las respuestas del modelo se almacenan en la columna response
. De lo contrario, los detalles del error se almacenan en la columna status
para una inspección más detallada.
Durante los trabajos de larga duración, las predicciones completadas se exportan de forma continua al destino de salida especificado. Esto comienza después de 90 minutos. Si se cancela o falla el trabajo de predicción por lotes, se exportan todas las predicciones completadas.
Ejemplo de salida de 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
}
}
}
Predicción por lotes para BigQuery
Especifica la tabla de entrada, el modelo y la ubicación de salida de BigQuery. El trabajo de predicción por lotes y tu tabla deben estar en la misma región.
Prepara tus entradas
Entrada de almacenamiento de BigQuery
Tu cuenta de servicio debe tener los permisos de BigQuery adecuados. Para otorgarle a la cuenta de servicio el rol de Usuario de BigQuery, usa el comando
gcloud iam service-accounts add-iam-policy-binding
de la siguiente manera:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.user"
Reemplaza los siguientes valores:
- PROJECT_ID es el proyecto en el que se creó tu cuenta de servicio.
- SERVICE_ACCOUNT_ID: El ID para la cuenta de servicio.
Se requiere una columna
request
, que debe ser JSON válido. Estos datos JSON representan tu entrada para el modelo.El contenido de la columna
request
debe coincidir con la estructura de unGenerateContentRequest
.Tu tabla de entrada puede tener tipos de datos de columna distintos de
request
. Estas columnas pueden tener tipos de datos de BigQuery, excepto los siguientes: array, struct, rango, fecha y hora, y geografía. Estas columnas se ignoran para la generación de contenido, pero se incluyen en la tabla de resultados.
Ejemplo de entrada (JSON) |
---|
|
Solicita un trabajo de predicción por lotes
REST
Para crear un trabajo de predicción 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:
- LOCATION: Es una región que admite modelos de Gemini.
- PROJECT_ID: El ID del proyecto.
- MODEL_PATH: El nombre del modelo del publicador, por ejemplo,
publishers/google/models/gemini-2.0-flash-001
, 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 tabla de BigQuery en la que se encuentra la entrada de tu predicción por lotes, como
bq://myproject.mydataset.input_table
. No se admiten conjuntos de datos de varias regiones. - OUTPUT_FORMAT: Para generar una salida en una tabla de BigQuery, especifica
bigquery
. Para generar un bucket de Cloud Storage, especificajsonl
. - DESTINATION: Para BigQuery, especifica
bigqueryDestination
. En Cloud Storage, especificagcsDestination
. - OUTPUT_URI_FIELD_NAME: Para BigQuery, especifica
outputUri
. En Cloud Storage, especificaoutputUriPrefix
. - OUTPUT_URI: Para BigQuery, especifica la ubicación de la tabla, como
bq://myproject.mydataset.output_result
. La región del conjunto de datos de BigQuery de salida debe ser la misma que la del trabajo de predicción por lotes de Vertex AI. En Cloud Storage, especifica el bucket y la ubicación del directorio, comogs://mybucket/path/to/output
.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
Cuerpo JSON de la solicitud:
{ "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" } } }
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://LOCATION-aiplatform.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://LOCATION-aiplatform.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:
En la respuesta, se incluye un identificador único para el trabajo por lotes.
Puedes consultar el estado del trabajo por lotes mediante BATCH_JOB_ID hasta que el state
sea JOB_STATE_SUCCEEDED
. Por ejemplo:
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
Gen AI SDK for 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 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
Recuperar los resultados por lotes
Cuando se completa una tarea de predicción por lotes, el resultado se almacena en la tabla de BigQuery que especificaste en la solicitud.
En el caso de las filas que se procesaron correctamente, las respuestas del modelo se almacenan en la columna response
. De lo contrario, los detalles del error se almacenan en la columna status
para una inspección más detallada.
Ejemplo de salida de BigQuery
solicitud | respuesta | estado |
---|---|---|
{"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 } } |
¿Qué sigue?
- Aprende a ajustar un modelo de Gemini en Descripción general del ajuste de modelos para Gemini
- Obtén más información sobre la API de predicción por lotes.