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 multimodales que admiten predicciones por lotes
Los siguientes modelos multimodales admiten predicciones por lotes.
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
Las solicitudes por lotes para modelos multimodales 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.
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
- Permisos de lectura adecuados para la cuenta de servicio
- La compatibilidad con
fileData
se limita a ciertos modelos de Gemini.Ejemplo de entrada (JSONL) {"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"}}]}]}} {"request":{"contents": [{"role": "user", "parts": [{"text": "Describe what is happening in this video."}, {"fileData": {"fileUri": "gs://cloud-samples-data/generative-ai/video/another_video.mov", "mimeType": "video/mov"}}]}]}}
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.
- 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 resultado en 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": "publishers/google/models/gemini-1.5-flash-002", "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
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Go.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
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-1.5-flash-002@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
- 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. El sistema reserva dos nombres de columnas para el resultado:response
ystatus
. Se usan para proporcionar información sobre el resultado del trabajo de predicción por lotes. - La compatibilidad con
fileData
se limita a ciertos modelos de Gemini.
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.
- 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 multirregionales. - OUTPUT_FORMAT: Para generar una salida en una tabla de BigQuery, especifica
bigquery
. Para generar un resultado en 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": "publishers/google/models/gemini-1.5-flash-002", "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
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Go.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
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.