Los modelos de video de AutoML no admiten inferencias en línea.
Obtén inferencias por lotes
Para realizar una solicitud de inferencia por lotes, especifica una fuente de entrada y un formato de salida en el que Vertex AI almacene los resultados de la inferencia.
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 inferencia. Las inferencias 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 inferencias 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'}
Solicita una inferencia por lotes
Para las solicitudes de inferencia por lotes, puedes usar la consola Google Cloud o la API de Vertex AI. Según la cantidad de elementos de entrada que hayas enviado, una tarea de inferencia por lotes puede tardar un tiempo en completarse.
Google Cloud console
Usa la consola de Google Cloud para solicitar una inferencia por lotes.
En la Google Cloud consola, 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 inferencia por lotes.
- En Nombre del modelo, selecciona el nombre del modelo que usarás para esta inferencia 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 inferencia 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 inferencia 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 inferencia por lotes. Por ejemplo:
us-central1
. - PROJECT_ID: El ID del proyecto.
- BATCH_JOB_NAME: el nombre visible del trabajo por lotes
- MODEL_ID: El ID del modelo que se usará para hacer inferencias
- THRESHOLD_VALUE (opcional): Vertex AI solo muestra inferencias que tienen puntuaciones de confianza con al menos este valor. El puerto predeterminado es
0.0
. - 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, }, "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. Para obtener más información, consulta la documentación de referencia de la API de Python.
Recupera los resultados de la inferencia por lotes
Vertex AI envía el resultado de la inferencia por lotes al destino especificado.
Cuando se completa una tarea de inferencia por lotes, el resultado de la inferencia se almacena en el bucket de Cloud Storage que especificaste en tu solicitud.
Ejemplo de resultados de inferencia por lotes
El siguiente es un ejemplo de resultados de inferencia por lotes de un modelo de seguimiento de objetos de video.
{ "instance": { "content": "gs://bucket/video.mp4", "mimeType": "video/mp4", "timeSegmentStart": "1s", "timeSegmentEnd": "5s" } "prediction": [{ "id": "1", "displayName": "cat", "timeSegmentStart": "1.2s", "timeSegmentEnd": "3.4s", "frames": [{ "timeOffset": "1.2s", "xMin": 0.1, "xMax": 0.2, "yMin": 0.3, "yMax": 0.4 }, { "timeOffset": "3.4s", "xMin": 0.2, "xMax": 0.3, "yMin": 0.4, "yMax": 0.5, }], "confidence": 0.7 }, { "id": "1", "displayName": "cat", "timeSegmentStart": "4.8s", "timeSegmentEnd": "4.8s", "frames": [{ "timeOffset": "4.8s", "xMin": 0.2, "xMax": 0.3, "yMin": 0.4, "yMax": 0.5, }], "confidence": 0.6 }, { "id": "2", "displayName": "dog", "timeSegmentStart": "1.2s", "timeSegmentEnd": "3.4s", "frames": [{ "timeOffset": "1.2s", "xMin": 0.1, "xMax": 0.2, "yMin": 0.3, "yMax": 0.4 }, { "timeOffset": "3.4s", "xMin": 0.2, "xMax": 0.3, "yMin": 0.4, "yMax": 0.5, }], "confidence": 0.5 }] }