En esta página se explica cómo obtener inferencias y explicaciones online (en tiempo real) de tus modelos de clasificación o regresión tabulares mediante la Google Cloud consola o la API de Vertex AI.
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 inferencias oportunas.
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.
Los temas que se tratan son los siguientes:
- Desplegar un modelo en un endpoint
- Obtener una inferencia online con el modelo desplegado
- Obtener una explicación online con tu modelo desplegado
Antes de empezar
Para obtener inferencias online, primero debes entrenar un modelo de clasificación o regresión y evaluar su precisión.
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.
Obtener 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
y aceptado como entrada por el métodoexplain
. El ID del modelo usado para generar la inferencia. Si necesitas solicitar explicaciones de una inferencia que ya has solicitado y tienes más de un modelo implementado, puedes usar este ID para asegurarte de que las explicaciones se devuelvan para el mismo modelo que proporcionó la inferencia anterior.
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
y aceptado como entrada por el métodoexplain
. El ID del modelo usado para generar la inferencia. Si necesitas solicitar explicaciones de una inferencia que ya has solicitado y tienes más de un modelo implementado, puedes usar este ID para asegurarte de que las explicaciones se devuelvan para el mismo modelo que proporcionó la inferencia anterior.
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, "lower_bound": 4.6572, "upper_bound": 164.0279 } ] ], "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. En el caso de los destinos de BigQuery, también devuelven un intervalo de inferencia. El intervalo de inferencia proporciona un intervalo de valores que el modelo tiene una confianza del 95% de que contiene el resultado real.
Obtener una explicación online con tu modelo desplegado
Puedes solicitar una inferencia con explicaciones (también llamadas atribuciones de características) para ver cómo ha llegado tu modelo a una inferencia. Los valores de importancia de las funciones locales te indican cuánto ha contribuido cada función al resultado de la inferencia. Las atribuciones de funciones se incluyen en las inferencias de Vertex AI a través de Vertex Explainable AI.
Consola
Cuando usas la Google Cloud consola para solicitar una inferencia online, se devuelven automáticamente los valores de importancia de las funciones locales.
Si ha usado los valores de predicción rellenados previamente, todos los valores de importancia de las funciones locales serán cero. Esto se debe a que los valores rellenados previamente son los datos de predicción de referencia, por lo que la predicción devuelta es el valor de predicción de referencia.
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 explain 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.
De forma opcional, si quieres enviar una solicitud de explicación a un
DeployedModel
específico de laEndpoint
, puedes especificar la marca--deployed-model-id
:gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=DEPLOYED_MODEL_ID \ --json-request=request.json
Además de los marcadores de posición descritos anteriormente, sustituya lo siguiente:
-
DEPLOYED_MODEL_ID Opcional: ID del modelo implementado del que quiere obtener explicaciones. El ID se incluye en la respuesta del método
predict
. Si necesitas solicitar explicaciones de un modelo concreto y tienes más de un modelo desplegado en el mismo endpoint, puedes usar este ID para asegurarte de que las explicaciones se devuelvan para ese modelo concreto.
REST
En el siguiente ejemplo se muestra una solicitud de inferencia online para un modelo de clasificación tabular con atribuciones de características locales. El formato de la solicitud es el mismo para los modelos de regresión.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
LOCATION: región en la que se encuentra el endpoint. Por ejemplo,
us-central1
. - PROJECT: .
- 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 (opcional): ID del modelo implementado del que quiere obtener explicaciones. El ID se incluye en la respuesta del método
predict
. Si necesitas solicitar explicaciones de un modelo concreto y tienes más de un modelo desplegado en el mismo endpoint, puedes usar este ID para asegurarte de que las explicaciones se devuelvan para ese modelo concreto.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain
Cuerpo JSON de la solicitud:
{ "instances": [ { PREDICTION_DATA_ROW } ], "deployedModelId": "DEPLOYED_MODEL_ID" }
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/locations/LOCATION/endpoints/ENDPOINT_ID:explain"
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/locations/LOCATION/endpoints/ENDPOINT_ID:explain" | Select-Object -Expand Content
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 explicaciones de una predicción devuelta anteriormente
Como las explicaciones aumentan el uso de recursos, puede que te interese reservarlas para situaciones en las que las necesites específicamente. A veces, puede ser útil solicitar explicaciones sobre un resultado de inferencia que ya has recibido, quizás porque la inferencia era atípica o no tenía sentido.
Si todas tus inferencias proceden del mismo modelo, puedes volver a enviar los datos de la solicitud y pedir explicaciones esta vez. Sin embargo, si tienes varios modelos que devuelven inferencias, debes asegurarte de enviar la solicitud de explicación al modelo correcto. Para ver las explicaciones de un modelo concreto, incluye el ID del modelo implementado deployedModelID
en tu solicitud, que se incluye en la respuesta de la solicitud de inferencia original.
Ten en cuenta que el ID del modelo implementado es diferente del ID del modelo.
Interpretar los resultados de la explicación
Para calcular la importancia de las funciones locales, primero se calcula la puntuación de inferencia de referencia. Los valores de referencia se calculan a partir de los datos de entrenamiento. Para ello, se usa la mediana de las características numéricas y la moda de las características categóricas. La inferencia generada a partir de los valores de referencia es la puntuación de inferencia de referencia. Los valores de referencia se calculan una vez para un modelo y no cambian.
En una inferencia específica, la importancia de la función local de cada función te indica cuánto ha sumado o restado esa función al resultado en comparación con la puntuación de inferencia de referencia. La suma de todos los valores de importancia de las características es igual a la diferencia entre la puntuación de inferencia de referencia y el resultado de la inferencia.
En los modelos de clasificación, la puntuación siempre está comprendida entre 0,0 y 1,0 (ambos incluidos). Por lo tanto, los valores de importancia de las funciones locales de los modelos de clasificación siempre están comprendidos entre -1,0 y 1,0 (ambos incluidos).
Para ver ejemplos de consultas de atribución de funciones y obtener más información, consulte Atribuciones de funciones para clasificación y regresión.Ejemplo de resultado de inferencias y explicaciones
Clasificación
La carga útil de respuesta de una inferencia online de un modelo de clasificación tabular con importancia de las características es similar al siguiente ejemplo.
El instanceOutputValue
de 0.928652400970459
es la puntuación de confianza de la clase con la puntuación más alta, en este caso class_a
. El campo baselineOutputValue
contiene la puntuación de inferencia de referencia 0.808652400970459
. La función que más ha contribuido a este resultado es feature_3
.
{
"predictions": [
{
"scores": [
0.928652400970459,
0.071347599029541
],
"classes": [
"class_a",
"class_b"
]
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 0.808652400970459,
"instanceOutputValue": 0.928652400970459,
"approximationError": 0.0058915703929231,
"featureAttributions": {
"feature_1": 0.012394922231235,
"feature_2": 0.050212341234556,
"feature_3": 0.057392736534209,
},
"outputIndex": [
0
],
"outputName": "scores"
}
],
}
]
"deployedModelId": "234567"
}
Regresión
La carga útil de respuesta de una inferencia online con la importancia de las características de un modelo de regresión tabular es similar al siguiente ejemplo.
El instanceOutputValue
de 1795.1246466281819
es el valor previsto, y los campos lower_bound
y upper_bound
proporcionan el intervalo de confianza del 95 %.
El campo baselineOutputValue
contiene la puntuación de inferencia de referencia 1788.7423095703125
. La función que más ha contribuido a este resultado es feature_3
.
{
"predictions": [
{
"value": 1795.1246466281819,
"lower_bound": 246.32196807861328,
"upper_bound": 8677.51904296875
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 1788.7423095703125,
"instanceOutputValue": 1795.1246466281819,
"approximationError": 0.0038215703911553,
"featureAttributions": {
"feature_1": 0.123949222312359,
"feature_2": 0.802123412345569,
"feature_3": 5.456264423211472,
},
"outputIndex": [
-1
]
}
]
}
],
"deployedModelId": "345678"
}
Siguientes pasos
- Consulta cómo exportar tu modelo.