En esta página, se muestra cómo obtener predicciones por lotes a partir de tus modelos de clasificación de videos mediante la consola de Google Cloud o la API de Vertex AI. Las predicciones por lotes son solicitudes asíncronas. Las predicciones por lotes se solicitan directamente desde el recurso de modelo sin necesidad de implementar el modelo en un extremo.
Los modelos de video de AutoML no admiten predicciones en línea.
Obtén predicciones por lotes
Para realizar una predicción por lotes, especifica una fuente de entrada y un formato de salida en el que Vertex AI almacene los resultados de las predicciones.
Requisitos de los datos de entrada
La entrada para las solicitudes por lotes especifica los elementos que se enviarán a tu modelo para la predicción. Las predicciones por lotes para el tipo de modelo de video de AutoML usan un archivo de líneas JSON a fin de especificar una lista de videos para realizar predicciones y, luego, almacenan el archivo de líneas JSON en un bucket de Cloud Storage. Puedes especificar Infinity
para el campo timeSegmentEnd
a fin de precisar el final del video. En el siguiente ejemplo, se muestra una sola línea en un archivo de líneas JSON de entrada.
{'content': 'gs://sourcebucket/datasets/videos/source_video.mp4', 'mimeType': 'video/mp4', 'timeSegmentStart': '0.0s', 'timeSegmentEnd': '2.366667s'}
Solicitar una predicción por lotes
Para las solicitudes de predicción por lotes, puedes usar la consola de Google Cloud o la API de Vertex AI. Según la cantidad de elementos de entrada que hayas enviado, una tarea de predicción por lotes puede tardar un tiempo en completarse.
Consola de Google Cloud
Usa la consola de Google Cloud para solicitar una predicción por lotes.
En la consola de Google Cloud, en la sección Vertex AI, ve a la página Predicciones por lotes.
Haz clic en Crear para abrir la ventana Nueva predicción por lotes y completa los siguientes pasos:
- Ingresa un nombre para la predicción por lotes.
- En Nombre del modelo, selecciona el nombre del modelo que usarás para esta predicción por lotes.
- En Ruta de acceso de origen, especifica la ubicación de Cloud Storage en la que se encuentra el archivo de entrada de líneas JSONL.
- Para la Ruta de acceso destino, especifica una ubicación de Cloud Storage en la que se almacenen los resultados de la predicción por lotes. El objetivo de tu modelo determina el formato de Resultado está determinado por. Los modelos de AutoML para objetivos de imagen generan archivos de líneas JSON.
API
Usa la API de Vertex AI para enviar solicitudes de predicción por lotes.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Región en la que se almacena el modelo y se ejecuta el trabajo de predicción por lotes. Por ejemplo:
us-central1
. - PROJECT_ID: el ID de tu proyecto
- BATCH_JOB_NAME: el nombre visible del trabajo por lotes
- MODEL_ID: El ID del modelo que se usará para hacer predicciones.
- THRESHOLD_VALUE (opcional): El modelo muestra solo predicciones que tienen puntuaciones de confianza con al menos este valor
- SEGMENT_CLASSIFICATION (opcional): Un valor booleano que determina si se debe solicitar una clasificación a nivel de segmento. Vertex AI muestra etiquetas y sus puntuaciones de confianza para todo el segmento de tiempo del video que especificaste en la instancia de entrada. El valor predeterminado es
true
. - SHOT_CLASSIFICATION (opcional): Un valor booleano que determina si se debe solicitar una clasificación a nivel de toma. Vertex AI determina los límites de cada toma de cámara en todo el segmento de tiempo del video que especificaste en la instancia de entrada. A continuación, Vertex AI muestra etiquetas y sus puntuaciones de confianza para cada toma detectada, junto con la hora de inicio y finalización de la toma. El predeterminado es
false
. - ONE_SEC_INTERVAL_CLASSIFICATION (opcional): Un valor booleano que determina si se debe solicitar clasificación para un video en intervalos de un segundo. Vertex AI muestra etiquetas y sus puntuaciones de confianza para cada segundo de todo el segmento de tiempo del video que especificaste en la instancia de entrada. El predeterminado es
false
. - URI: el URI de Cloud Storage en el que se encuentra el archivo de líneas JSON de entrada.
- BUCKET: tu bucket de Cloud Storage
- PROJECT_NUMBER: El número de proyecto de tu proyecto generado de forma automática
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
Cuerpo JSON de la solicitud:
{ "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "modelParameters": { "confidenceThreshold": THRESHOLD_VALUE, "segmentClassification": SEGMENT_CLASSIFICATION, "shotClassification": SHOT_CLASSIFICATION, "oneSecIntervalClassification": ONE_SEC_INTERVAL_CLASSIFICATION }, "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": ["URI"], }, }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "OUTPUT_BUCKET", }, }, }
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID", "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "CONTENT" ] } }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "BUCKET" } }, "state": "JOB_STATE_PENDING", "createTime": "2020-05-30T02:58:44.341643Z", "updateTime": "2020-05-30T02:58:44.341643Z", "modelDisplayName": "MODEL_NAME", "modelObjective": "MODEL_OBJECTIVE" }
Puedes consultar el estado del trabajo por lotes mediante BATCH_JOB_ID hasta que el state
sea JOB_STATE_SUCCEEDED
.
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.
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.
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.
Recupera los resultados de las predicciones por lotes
Vertex AI envía el resultado de la predicción por lotes al destino especificado.
Cuando se completa una tarea de predicción por lotes, el resultado de la predicción se almacena en el bucket de Cloud Storage que especificaste en tu solicitud.
Ejemplos de resultados de predicción por lotes
El siguiente es un ejemplo de predicción por lotes de un modelo de clasificación de videos.
{ "instance": { "content": "gs://bucket/video.mp4", "mimeType": "video/mp4", "timeSegmentStart": "1s", "timeSegmentEnd": "5s" } "prediction": [{ "id": "1", "displayName": "cat", "type": "segment-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "5s", "confidence": 0.7 }, { "id": "1", "displayName": "cat", "type": "shot-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "4s", "confidence": 0.9 }, { "id": "2", "displayName": "dog", "type": "shot-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "5s", "confidence": 0.6 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "1s", "confidence": 0.95 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "2s", "timeSegmentEnd": "2s", "confidence": 0.9 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "3s", "timeSegmentEnd": "3s", "confidence": 0.85 }, { "id": "2", "displayName": "dog", "type": "one-sec-interval-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "4s", "confidence": 0.6 }] }