Una inferencia online es una solicitud síncrona, a diferencia de la inferencia por lotes, que es una solicitud asíncrona. Usa inferencias online cuando hagas solicitudes en respuesta a la entrada de una aplicación o en otras situaciones en las que necesites una inferencia oportuna.
Para poder usar un modelo para ofrecer inferencias online, primero debes desplegarlo en un endpoint. Al desplegar un modelo, se asocian recursos físicos al modelo para que pueda ofrecer inferencias online con baja latencia.
Los temas que se tratan son los siguientes:
- Desplegar un modelo en un endpoint
- Obtener una inferencia online con el modelo desplegado
Antes de empezar
Para obtener inferencias online, primero debes entrenar un modelo.
Desplegar un modelo en un endpoint
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.
En la página Define your endpoint (Define tu endpoint), configura lo siguiente:
Puedes desplegar el modelo en un punto final nuevo o en uno que ya tengas.
- 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 disponible, 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
Haz clic en Continuar.
En la página Configuración del modelo, configure los ajustes de la siguiente manera:
-
Si vas a desplegar el modelo en un endpoint nuevo, acepta el valor 100 en Distribución del tráfico. Si vas a desplegar tu modelo en un punto final que ya tiene uno o varios modelos desplegados, debes actualizar el porcentaje de División del tráfico del modelo que vas a desplegar y de los modelos que ya están desplegados para que todos los porcentajes sumen 100%.
-
Introduce el número mínimo de nodos de computación que quieras proporcionar para tu modelo.
Es el número de nodos disponibles para este modelo en todo momento. Se te cobrará por los nodos utilizados, ya sea para gestionar la carga de inferencia o para los nodos de reserva (mínimo), incluso si no hay tráfico de inferencia. Consulta la página de precios.
-
Selecciona el Tipo de máquina.
Cuanto mayores sean los recursos de la máquina, mejor será el rendimiento de la inferencia y mayores serán los costes.
-
Consulta cómo cambiar la configuración predeterminada del registro de inferencias.
-
Haz clic en Continuar.
-
En la página Monitorización de modelos, haz clic en Continuar.
En la página Objetivos de monitorización, configure lo siguiente:
- Introduce la ubicación de tus datos de entrenamiento.
- Escribe el nombre de la columna de destino.
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 usar GPUs para acelerar el servicio de predicciones y 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
. -
MACHINE_TYPE: opcional. Los recursos de la máquina que se usan en cada nodo de esta implementación. Su ajuste predeterminado es
n1-standard-2
. Más información sobre los tipos de máquinas -
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.
Este valor debe ser superior o igual a 1. Si se omite la marca
--min-replica-count
, el valor predeterminado es 1. -
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 \ --machine-type=MACHINE_TYPE \ --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 ` --machine-type=MACHINE_TYPE ` --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 ^ --machine-type=MACHINE_TYPE ^ --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 \ --machine-type=MACHINE_TYPE \ --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 \ --machine-type=MACHINE_TYPE ` --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 \ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Para solicitar una inferencia online, se usa el método endpoints.predict.
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
. -
MACHINE_TYPE: opcional. Los recursos de la máquina que se usan en cada nodo de esta implementación. Su ajuste predeterminado es
n1-standard-2
. Más información sobre los tipos de máquinas - ACCELERATOR_TYPE: tipo de acelerador que se va a asociar a la máquina. Opcional si ACCELERATOR_COUNT no se especifica o es cero. No se recomienda para modelos de AutoML ni modelos entrenados personalizados que usen imágenes que no sean de GPU. Más información
- ACCELERATOR_COUNT: número de aceleradores que debe usar cada réplica. Opcional. Debe ser cero o no especificarse en los modelos de AutoML o en los modelos entrenados personalizados que usen imágenes que no sean de GPU.
- 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. Este valor debe ser superior o igual a 1.
- 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.
- REQUIRED_REPLICA_COUNT: opcional. Número de nodos necesarios para que esta implementación se marque como correcta. Debe ser igual o superior a 1 e igual o inferior al número mínimo de nodos. Si no se especifica, el valor predeterminado es el 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/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT, "requiredReplicaCount": REQUIRED_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/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.
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.
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.
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.
Obtener 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. Usa la Google Cloud consola o la API de Vertex AI para solicitar una inferencia online.
Google Cloud consola
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. Los datos de inferencia de referencia se rellenan automáticamente, pero también puedes introducir tus propios datos de inferencia y hacer clic en Predecir.
Una vez completada la inferencia, Vertex AI devuelve los resultados en la consola.
API: Classification
gcloud
-
Crea un archivo llamado
request.json
con el siguiente contenido:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Haz los cambios siguientes:
-
PREDICTION_DATA_ROW: objeto JSON con las claves como nombres de las funciones y los valores como los valores de las funciones correspondientes. Por ejemplo, en un conjunto de datos con un número, un array de cadenas y una categoría, la fila de datos podría tener el siguiente aspecto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Se debe proporcionar un valor para cada función incluida en la formación. El formato de los datos usados para la predicción debe coincidir con el formato usado para el entrenamiento. Consulta los detalles en Formato de datos para las predicciones.
-
-
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
Para solicitar una inferencia online, se usa el método endpoints.predict.
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: tu ID de proyecto.
- ENDPOINT_ID: ID del endpoint.
-
PREDICTION_DATA_ROW: objeto JSON con las claves como nombres de las funciones y los valores como los valores de las funciones correspondientes. Por ejemplo, en un conjunto de datos con un número, un array de cadenas y una categoría, la fila de datos podría tener el siguiente aspecto:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Se debe proporcionar un valor para cada función incluida en la formación. El formato de los datos usados para la predicción debe coincidir con el formato usado para el entrenamiento. Consulta los detalles en Formato de datos para las predicciones.
- DEPLOYED_MODEL_ID: salida del método
predict
. El ID del modelo usado para generar la inferencia.
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": [ { PREDICTION_DATA_ROW } ] }
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": [ { "scores": [ 0.96771615743637085, 0.032283786684274673 ], "classes": [ "0", "1" ] } ] "deployedModelId": "2429510197" }
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.
API: regresión
gcloud
-
Crea un archivo llamado `request.json` con el siguiente contenido:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Haz los cambios siguientes:
-
PREDICTION_DATA_ROW: objeto JSON con las claves como nombres de las funciones y los valores como los valores de las funciones correspondientes. Por ejemplo, en un conjunto de datos con un número, un array de números y una categoría, la fila de datos podría tener el siguiente aspecto:
"age":3.6, "sq_ft":5392, "code": "90331"
Se debe proporcionar un valor para cada función incluida en la formación. El formato de los datos usados para la predicción debe coincidir con el formato usado para el entrenamiento. Consulta los detalles en Formato de datos para las predicciones.
-
-
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
Para solicitar una inferencia online, se usa el método endpoints.predict.
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.
-
PREDICTION_DATA_ROW: objeto JSON con las claves como nombres de las funciones y los valores como los valores de las funciones correspondientes. Por ejemplo, en un conjunto de datos con un número, un array de números y una categoría, la fila de datos podría tener el siguiente aspecto:
"age":3.6, "sq_ft":5392, "code": "90331"
Se debe proporcionar un valor para cada función incluida en la formación. El formato de los datos usados para la predicción debe coincidir con el formato usado para el entrenamiento. Consulta los detalles en Formato de datos para las predicciones.
- DEPLOYED_MODEL_ID: salida del método
predict
. El ID del modelo usado para generar la inferencia.
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": [ { PREDICTION_DATA_ROW } ] }
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": [ [ { "value": 65.14233 } ] ], "deployedModelId": "DEPLOYED_MODEL_ID" }
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.
Interpretar los resultados de las predicciones
Clasificación
Los modelos de clasificación devuelven una puntuación de confianza.
La puntuación de confianza indica la intensidad con la que tu modelo asocia cada clase o etiqueta con un elemento de prueba. Cuanto mayor sea el número, mayor será la confianza del modelo en que la etiqueta se debe aplicar a ese elemento. Tú decides lo alto que debe ser el nivel de confianza para aceptar los resultados del modelo.
Regresión
Los modelos de regresión devuelven un valor de inferencia.
Si tu modelo usa la inferencia probabilística, el campo value
contiene el minimizador del objetivo de optimización. Por ejemplo, si su objetivo de optimización es minimize-rmse
, el campo value
contiene el valor medio.
Si es minimize-mae
, el campo value
contiene el valor de la mediana.
Si tu modelo usa inferencia probabilística con cuantiles, Vertex AI proporciona valores e inferencias de cuantiles, además del minimizador del objetivo de optimización. Los valores de los cuantiles se definen durante el entrenamiento del modelo. Las inferencias de cuantiles son los valores de inferencia asociados a los valores de cuantiles.
TabNet proporciona una interpretabilidad inherente del modelo, ya que ofrece a los usuarios información valiosa sobre las funciones que ha usado para tomar una decisión. El algoritmo utiliza la atención, que aprende a mejorar de forma selectiva la influencia de algunas funciones y a reducir la de otras mediante una media ponderada. Para tomar una decisión concreta, TabNet decide de forma gradual la importancia que debe dar a cada característica. A continuación, combina cada uno de los pasos para crear una predicción final. La atención es multiplicativa, donde los valores más altos indican que la característica ha desempeñado un papel más importante en la predicción y un valor de cero significa que la característica no ha desempeñado ningún papel en esa decisión. Como TabNet usa varios pasos de decisión, la atención que se presta a las características en todos los pasos se combina linealmente después de un escalado adecuado. Esta combinación lineal de todos los pasos de decisión de TabNet es la importancia total de las características que te proporciona TabNet.
Ejemplo de salida de inferencias
La carga útil de respuesta de una inferencia online con importancia de las características de un modelo de regresión es similar al siguiente ejemplo.
{
"predictions":[
{
"value":0.3723912537097931,
"feature_importance":{
"MSSubClass":0.12,
"MSZoning":0.33,
"LotFrontage":0.27,
"LotArea":0.06,
...
}
}
]
}
Siguientes pasos
- Consulta cómo exportar tu modelo.
- Consulta información sobre los precios de las inferencias online.