Diferencia entre las inferencias online y por lotes
Las inferencias online son solicitudes síncronas que se envían a un endpoint de un modelo. Usa inferencias online cuando hagas solicitudes en respuesta a la entrada de una aplicación o en situaciones que requieran inferencias oportunas.
Las inferencias por lotes son solicitudes asíncronas. Puedes solicitar inferencias por lotes directamente desde el recurso del modelo sin necesidad de desplegarlo en un endpoint. En el caso de los datos de imagen, usa las inferencias por lotes si no necesitas una respuesta inmediata y quieres procesar los datos acumulados con una sola solicitud.
Obtener inferencias online
Desplegar un modelo en un endpoint
Debes desplegar un modelo en un endpoint para poder usarlo y ofrecer inferencias online. Al desplegar un modelo, se asocian recursos físicos al modelo para que pueda ofrecer inferencias online con baja latencia.
Puedes desplegar más de un modelo en un endpoint y desplegar un modelo en más de un endpoint. Para obtener más información sobre las opciones y los casos prácticos de implementación de modelos, consulta el artículo Acerca de la implementación de modelos.
Utilice uno de los siguientes métodos para implementar un modelo:
Google Cloud consola
En la Google Cloud consola, en la sección Vertex AI, ve a la página Modelos.
Haz clic en el nombre del modelo que quieras implementar para abrir su página de detalles.
Selecciona la pestaña Implementar y probar.
Si tu modelo ya se ha desplegado en algún endpoint, aparecerá en la sección Desplegar tu modelo.
Haz clic en Implementar en endpoint.
Para desplegar el modelo en un nuevo endpoint, selecciona
Crear endpoint y asigna un nombre al nuevo endpoint. Para desplegar el modelo en un endpoint, selecciona Añadir a endpoint disponible y elige el endpoint en la lista desplegable.Puede añadir más de un modelo a un endpoint y añadir un modelo a más de un endpoint. Más información
Si despliega su modelo en un punto final que ya tiene uno o varios modelos desplegados, debe actualizar el porcentaje de División del tráfico del modelo que va a desplegar y de los modelos que ya están desplegados para que todos los porcentajes sumen el 100%.
Selecciona Imagen de AutoML y configura lo siguiente:
Si vas a desplegar el modelo en un nuevo endpoint, acepta el valor 100 en División del tráfico. De lo contrario, ajuste los valores de división del tráfico de todos los modelos del endpoint para que sumen 100.
Introduce el Número de nodos de computación que quieras proporcionar a tu modelo.
Es el número de nodos disponibles para este modelo en todo momento. Se te cobra por los nodos, aunque no haya tráfico de inferencia. Consulta la página de precios.
Consulta cómo cambiar la configuración predeterminada del registro de inferencias.
Solo modelos de clasificación (opcional): en la sección Opciones de interpretabilidad, selecciona Vertex Explainable AI. Acepta los ajustes de visualización que ya tengas o elige nuevos valores y haz clic en Hecho.
Habilitar atribuciones de funciones para este modelo para habilitarEl despliegue de modelos de clasificación de imágenes de AutoML con Vertex Explainable AI configurado y la realización de inferencias con explicaciones es opcional. Si habilitas Vertex Explainable AI en el momento de la implementación, se aplicarán costes adicionales en función del número de nodos implementados y del tiempo de implementación. Consulta la página de precios para obtener más información.
Haz clic en Hecho en el modelo y, cuando todos los porcentajes de División del tráfico sean correctos, haz clic en Continuar.
Se muestra la región en la que se implementa el modelo. Debe ser la región en la que has creado el modelo.
Haga clic en Desplegar para desplegar el modelo en el endpoint.
API
Cuando despliegas un modelo con la API de Vertex AI, sigues estos pasos:
- Crea un endpoint si es necesario.
- Obtén el ID del endpoint.
- Despliega el modelo en el endpoint.
Crear un punto final
Si vas a desplegar un modelo en un endpoint que ya tienes, puedes saltarte este paso.
gcloud
En el siguiente ejemplo se usa el comando gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Haz los cambios siguientes:
- LOCATION_ID: la región en la que usas Vertex AI.
- ENDPOINT_NAME: el nombre visible del endpoint.
La herramienta de Google Cloud CLI puede tardar unos segundos en crear el endpoint.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: tu región.
- PROJECT_ID: tu ID de proyecto.
- ENDPOINT_NAME: el nombre visible del endpoint.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Cuerpo JSON de la solicitud:
{ "display_name": "ENDPOINT_NAME" }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
"done": true
.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Recuperar el ID del endpoint
Necesitas el ID del endpoint para desplegar el modelo.
gcloud
En el siguiente ejemplo se usa el comando gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME
Haz los cambios siguientes:
- LOCATION_ID: la región en la que usas Vertex AI.
- ENDPOINT_NAME: el nombre visible del endpoint.
Fíjate en el número que aparece en la columna ENDPOINT_ID
. Úsalo en el paso siguiente.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: .
- ENDPOINT_NAME: el nombre visible del endpoint.
Método HTTP y URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Desplegar el modelo
Selecciona la pestaña correspondiente a tu idioma o entorno:
gcloud
En los siguientes ejemplos se usa el comando gcloud ai endpoints deploy-model
.
En el siguiente ejemplo se implementa un Model
en un Endpoint
sin dividir el tráfico entre varios recursos DeployedModel
:
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- ENDPOINT_ID: ID del endpoint.
- LOCATION_ID: la región en la que usas Vertex AI.
- MODEL_ID: ID del modelo que se va a implementar.
-
DEPLOYED_MODEL_NAME: nombre del
DeployedModel
. También puedes usar el nombre visible de laModel
para laDeployedModel
. - MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.
-
MAX_REPLICA_COUNT: número máximo de nodos de este despliegue.
El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia,
hasta este número de nodos y nunca por debajo del número mínimo de nodos.
Si omite la marca
--max-replica-count
, el número máximo de nodos se define como el valor de--min-replica-count
.
Ejecuta el comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Dividir el tráfico
La marca --traffic-split=0=100
de los ejemplos anteriores envía el 100% del tráfico de predicción que recibe Endpoint
al nuevo DeployedModel
, que se representa con el ID temporal 0
. Si tu Endpoint
ya tiene otros
DeployedModel
recursos, puedes dividir el tráfico entre los nuevos
DeployedModel
y los antiguos.
Por ejemplo, para enviar el 20% del tráfico a la nueva DeployedModel
y el 80% a una anterior, ejecuta el siguiente comando.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- OLD_DEPLOYED_MODEL_ID: el ID del
DeployedModel
.
Ejecuta el comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Despliega el modelo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: .
- ENDPOINT_ID: ID del endpoint.
- MODEL_ID: ID del modelo que se va a implementar.
-
DEPLOYED_MODEL_NAME: nombre del
DeployedModel
. También puedes usar el nombre visible de laModel
para laDeployedModel
. - MIN_REPLICA_COUNT: número mínimo de nodos de esta implementación. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta el número máximo de nodos y nunca por debajo de este número.
- MAX_REPLICA_COUNT: número máximo de nodos de este despliegue. El número de nodos se puede aumentar o reducir según lo requiera la carga de inferencia, hasta este número de nodos y nunca por debajo del número mínimo de nodos.
- TRAFFIC_SPLIT_THIS_MODEL: porcentaje del tráfico de predicción de este punto final que se va a dirigir al modelo que se está desplegando con esta operación. El valor predeterminado es 100. Todos los porcentajes de tráfico deben sumar 100. Más información sobre las divisiones de tráfico
- DEPLOYED_MODEL_ID_N: opcional. Si se implementan otros modelos en este endpoint, debes actualizar los porcentajes de división del tráfico para que todos los porcentajes sumen 100.
- TRAFFIC_SPLIT_MODEL_N: valor del porcentaje de división del tráfico de la clave del ID del modelo implementado.
- PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Cuerpo JSON de la solicitud:
{ "deployedModel": { "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "automaticResources": { "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT } }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Consulta cómo cambiar la configuración predeterminada del registro de inferencias.
Obtener el estado de la operación
Algunas solicitudes inician operaciones de larga duración que requieren tiempo para completarse. Estas solicitudes devuelven un nombre de operación que puedes usar para ver el estado de la operación o cancelarla. Vertex AI proporciona métodos auxiliares para hacer llamadas a operaciones de larga duración. Para obtener más información, consulta Trabajar con operaciones de larga duración.
Hacer una inferencia online con el modelo desplegado
Para hacer una inferencia online, envía uno o varios elementos de prueba a un modelo para que los analice. El modelo devuelve resultados basados en el objetivo del modelo. Para obtener más información sobre los resultados de la inferencia, consulta la página Interpretar resultados.
Consola
Usa la consola de Google Cloud para solicitar una inferencia online. Tu modelo debe estar desplegado en un endpoint.
En la Google Cloud consola, en la sección Vertex AI, ve a la página Modelos.
En la lista de modelos, haz clic en el nombre del modelo del que quieras solicitar inferencias.
Selecciona la pestaña Implementar y probar.
En la sección Prueba tu modelo, añade elementos de prueba para solicitar una inferencia.
Para usar los modelos de AutoML con objetivos de imagen, debes subir una imagen para solicitar una inferencia.
Para obtener información sobre la importancia de las funciones locales, consulta Obtener explicaciones.
Una vez completada la inferencia, Vertex AI devuelve los resultados en la consola.
API
Usa la API de Vertex AI para solicitar una inferencia online. Tu modelo debe estar desplegado en un endpoint.
Entre los objetivos de los tipos de datos de imagen se incluyen la clasificación y la detección de objetos.
Inferencia de modelos Edge: cuando uses modelos Edge de imagen de AutoML para la inferencia, debes convertir cualquier archivo de inferencia que no sea JPEG a un archivo JPEG antes de enviar la solicitud de inferencia.
gcloud
Crea un archivo llamado
request.json
con el siguiente contenido:{ "instances": [{ "content": "CONTENT" }], "parameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS } }
Haz los cambios siguientes:
- CONTENT: el contenido de la imagen codificado en base64.
- THRESHOLD_VALUE Opcional: El modelo solo devuelve predicciones que tienen puntuaciones de confianza con al menos este valor.
- MAX_PREDICTIONS Opcional: El modelo devuelve hasta este número de predicciones con las puntuaciones de confianza más altas.
Ejecuta el siguiente comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Haz los cambios siguientes:
- ENDPOINT_ID: ID del endpoint.
- LOCATION_ID: la región en la que usas Vertex AI.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que se encuentra el endpoint. Por ejemplo,
us-central1
. - PROJECT_ID: .
- ENDPOINT_ID: ID del endpoint.
- CONTENT: el contenido de la imagen codificado en base64.
- THRESHOLD_VALUE Opcional: El modelo solo devuelve predicciones que tienen puntuaciones de confianza con al menos este valor.
- MAX_PREDICTIONS Opcional: El modelo devuelve hasta este número de predicciones con las puntuaciones de confianza más altas.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
Cuerpo JSON de la solicitud:
{ "instances": [{ "content": "CONTENT" }], "parameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS } }
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/endpoints/ENDPOINT_ID:predict"
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/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "predictions": [ { "confidences": [ 0.975873291, 0.972160876, 0.879488528, 0.866532683, 0.686478078 ], "displayNames": [ "Salad", "Salad", "Tomato", "Tomato", "Salad" ], "ids": [ "7517774415476555776", "7517774415476555776", "2906088397049167872", "2906088397049167872", "7517774415476555776" ], "bboxes": [ [ 0.0869686604, 0.977020741, 0.395135701, 1 ], [ 0, 0.488701463, 0.00157663226, 0.512249 ], [ 0.361617863, 0.509664357, 0.772928834, 0.914706349 ], [ 0.310678929, 0.45781514, 0.565507233, 0.711237729 ], [ 0.584359646, 1, 0.00116168708, 0.130817384 ] ] } ], "deployedModelId": "3860570043075002368" }
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Obtener inferencias por lotes
Para hacer una solicitud de inferencia por lotes, debes especificar una fuente de entrada y un formato de salida en el que Vertex AI almacene los resultados de la inferencia. Las inferencias por lotes para el tipo de modelo de imagen de AutoML requieren un archivo JSON Lines de entrada y el nombre de un segmento de Cloud Storage para almacenar la salida.
Requisitos de los datos de entrada
La entrada de las solicitudes por lotes especifica los elementos que se enviarán a tu modelo para la inferencia. En el caso de los modelos de detección de objetos en imágenes, puedes usar un archivo JSON Lines para especificar una lista de imágenes sobre las que hacer inferencias y, a continuación, almacenar el archivo JSON Lines en un segmento de Cloud Storage. En el siguiente ejemplo se muestra una sola línea de un archivo JSON Lines de entrada:
{"content": "gs://sourcebucket/datasets/images/source_image.jpg", "mimeType": "image/jpeg"}
Solicitar una inferencia por lotes
Para las solicitudes de inferencia por lotes, puedes usar la Google Cloud consola o la API Vertex AI. En función del número de elementos de entrada que hayas enviado, una tarea de inferencia por lotes puede tardar un tiempo en completarse.
Google Cloud consola
Usa la consola 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.
Haga clic en Crear para abrir la ventana Nueva predicción por lotes y siga estos pasos:
- Escribe un nombre para la inferencia por lotes.
- En Nombre del modelo, selecciona el nombre del modelo que quieras usar para esta inferencia por lotes.
- En Ruta de origen, especifique la ubicación de Cloud Storage en la que se encuentra el archivo de entrada JSON Lines.
- En Ruta de destino, especifica una ubicación de Cloud Storage donde se almacenarán los resultados de la inferencia por lotes. El formato de Salida viene determinado por el objetivo del modelo. Los modelos de AutoML para objetivos de imagen generan archivos JSON Lines.
API
Usa la API de Vertex AI para enviar solicitudes de inferencia por lotes.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- 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:
- BATCH_JOB_NAME: nombre visible del trabajo por lotes
- MODEL_ID: ID del modelo que se va a usar para hacer inferencias.
- THRESHOLD_VALUE (opcional): Vertex AI devuelve solo las inferencias que tengan puntuaciones de confianza con al menos este valor. El valor predeterminado es
0.0
. - MAX_PREDICTIONS (opcional): Vertex AI devuelve hasta este número de inferencias, empezando por las que tienen las puntuaciones de confianza más altas. El valor predeterminado es
10
. - URI: URI de Cloud Storage donde se encuentra el archivo JSON Lines de entrada.
- BUCKET: tu segmento de Cloud Storage
- PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
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/locations/LOCATION/models/MODEL_ID", "modelParameters": { "confidenceThreshold": THRESHOLD_VALUE, "maxPredictions": MAX_PREDICTIONS }, "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 siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID", "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_ID/locations/LOCATION_ID/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 sondear el estado del trabajo por lotes con BATCH_JOB_ID hasta que el trabajo state
sea JOB_STATE_SUCCEEDED
.
Python
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Recuperar resultados de inferencia por lotes
Vertex AI envía la salida de la inferencia por lotes al destino que hayas especificado.
Cuando se completa una tarea de inferencia por lotes, la salida de la inferencia se almacena en el segmento de Cloud Storage que hayas especificado en tu solicitud.
Ejemplo de resultados de inferencia por lotes
A continuación se muestra un ejemplo de los resultados de la inferencia por lotes de un modelo de detección de objetos de imagen.
Importante: Los cuadros delimitadores se especifican de la siguiente manera:
"bboxes": [
[xMin, xMax, yMin, yMax],
...]
xMin
y xMax
son los valores mínimos y máximos de x, y
yMin
y yMax
son los valores mínimos y máximos de y, respectivamente.
{ "instance": {"content": "gs://bucket/image.jpg", "mimeType": "image/jpeg"}, "prediction": { "ids": [1, 2], "displayNames": ["cat", "dog"], "bboxes": [ [0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5] ], "confidences": [0.7, 0.5] } }