En esta página, se muestra cómo obtener predicciones y explicaciones en línea (en tiempo real) de tus modelos de regresión o clasificación tabulares con la consola de Google Cloud o la API de Vertex AI.
Una predicción en línea es una solicitud síncrona, en lugar de una predicción por lotes, que es una solicitud asíncrona. Usa predicciones en línea cuando realices solicitudes en respuesta a la entrada de la aplicación o en otras situaciones en las que necesites una inferencia oportuna.
Debes implementar un modelo en un extremo antes de que se pueda usar para entregar predicciones en línea. La implementación de un modelo asocia recursos físicos con el modelo para que pueda entregar predicciones en línea con baja latencia.
Se tratan los siguientes temas:
- Implementa un modelo en un extremo
- Realiza una predicción en línea con el modelo implementado
- Obtén una explicación en línea con tu modelo implementado
Antes de comenzar
Antes de obtener predicciones en línea, primero debes entrenar un modelo de regresión o clasificación y evaluar su precisión.
Implementa un modelo en un extremo
Puedes implementar más de un modelo en un extremo y puedes implementar un modelo en más de un extremo. Si deseas obtener más información sobre las opciones y los casos de uso a fin de implementar modelos, consulta Acerca de la implementación de modelos.
Usa uno de los siguientes métodos para implementar un modelo:
Consola de Google Cloud
En la sección Vertex AI de la consola de Google Cloud, vaya a la página Modelos.
Haz clic en el nombre del modelo que deseas implementar para abrir su página de detalles.
Selecciona la pestaña Implementar y probar.
Si tu modelo ya está implementado en un extremo, se enumeran en la sección Implementa tu modelo.
Haz clic en Implementar en el extremo.
En la página Define tu extremo, configura lo siguiente:
Puedes implementar tu modelo en un extremo nuevo o en uno existente.
- Para implementar el modelo en un extremo nuevo, selecciona Crear extremo nuevo y proporciona un nombre para el extremo nuevo.
- Para implementar tu modelo en un extremo existente, selecciona Agregar a extremo existente y selecciona el extremo de la lista desplegable.
- Puedes agregar más de un modelo a un extremo y se puede agregar a un modelo más de un extremo. Obtén más información.
Haz clic en Continuar.
En la página Ajustes del modelo, configura lo siguiente:
-
Si implementas tu modelo en un extremo nuevo, acepta 100 para la división del tráfico. Si implementas tu modelo en un extremo existente que tiene uno o más modelos implementados, debes actualizar el porcentaje de división del tráfico del modelo que estás implementando y el que ya se implementó, para que todos los porcentajes sumen 100%.
-
Ingresa la cantidad mínima de nodos de procesamiento que deseas proporcionar para el modelo.
Esta es la cantidad de nodos disponibles para este modelo en todo momento. Se te cobrará por los nodos que se usaron, ya sea a fin de controlar la carga de la predicción o para los nodos en espera (mínimo), incluso sin tráfico de predicción. Consulta la página de precios.
-
Selecciona el Tipo de máquina.
Los recursos de máquina más grandes aumentarán el rendimiento de tu predicción y los costos.
-
Obtén más información a fin de cambiar la configuración predeterminada para el registro de predicción.
-
Haga clic en Continue.
-
En la página Supervisión de modelos, haz clic en Continuar.
En la página Objetivos de monitorización, configura lo siguiente:
- Ingresa la ubicación de tus datos de entrenamiento.
- Ingresa el nombre de la columna de destino.
Haz clic en Implementar para implementar el modelo en el extremo.
API
Cuando implementas un modelo con la API de Vertex AI, realiza los siguientes pasos:
- Crea un extremo si es necesario.
- Obtén el ID de extremo.
- Implementa el modelo en el extremo.
Crear un extremo
Si implementas un modelo en un extremo existente, puedes omitir 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
Reemplaza lo siguiente:
- LOCATION_ID: la región en la que usas Vertex AI.
ENDPOINT_NAME: el nombre visible para el extremo.
La herramienta de la CLI de Google Cloud puede tardar unos segundos en crear el extremo.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_NAME: el nombre visible para el extremo.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Obtén el ID de extremo
Necesitas el ID de extremo para implementar 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
Reemplaza lo siguiente:
- LOCATION_ID: la región en la que usas Vertex AI.
ENDPOINT_NAME: el nombre visible para el extremo.
Toma nota del número que aparece en la columna
ENDPOINT_ID
. Usa este ID en el paso siguiente.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_NAME: el nombre visible para el extremo.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" } ] }
Implementa 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 GPU para acelerar la entrega de predicciones y sin dividir el tráfico entre varios recursos DeployedModel
:
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. -
MACHINE_TYPE: Opcional Los recursos de máquina que se usan para cada nodo de esta implementación. Su configuración predeterminada es
n1-standard-2
. Obtén más información sobre los tipos de máquinas. -
MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación.
El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad.
Este valor debe ser mayor o igual que 1% Si se omite la marca
--min-replica-count
, el valor predeterminado es 1. -
MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación.
El recuento de nodos se puede aumentar o disminuir, según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
Si omites la marca
--max-replica-count
, la cantidad máxima de nodos se establece en 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
Divide el tráfico
La marca --traffic-split=0=100
en los ejemplos anteriores envía el 100% del tráfico de predicción que Endpoint
recibe al nuevo DeployedModel
, que se representa mediante el ID temporal 0
. Si tu Endpoint
ya tiene otros recursos DeployedModel
, puedes dividir el tráfico entre el DeployedModel
nuevo y los anteriores.
Por ejemplo, para enviar el 20% del tráfico al DeployedModel
nuevo y el 80% a uno anterior, ejecuta el siguiente comando.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- OLD_DEPLOYED_MODEL_ID: Es el ID del
DeployedModel
existente.
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
Usa el método endpoints.predict para solicitar una predicción en línea.
Implementar el modelo
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. -
MACHINE_TYPE: Opcional Los recursos de máquina que se usan para cada nodo de esta implementación. Su configuración predeterminada es
n1-standard-2
. Obtén más información sobre los tipos de máquinas. - ACCELERATOR_TYPE: El tipo de acelerador que se adjuntará a la máquina. Es opcional si no se especifica ACCELERATOR_COUNT o es cero. No recomendado para modelos de AutoML ni modelos personalizados con capacitación personalizado que usan imágenes que no son de GPU. Obtén más información.
- ACCELERATOR_COUNT: La cantidad de aceleradores que usa cada réplica. Opcional. Debe ser cero o no especificado para los modelos de AutoML o los modelos de capacitación personalizados que usan imágenes que no son de GPU.
- MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad. Este valor debe ser mayor o igual que 1%
- MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir, según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
- TRAFFIC_SPLIT_THIS_MODEL: El porcentaje del tráfico de predicción a este extremo para enrutar al modelo que se implementa con esta operación. La configuración predeterminada es 100. Todos los porcentajes de tráfico deben sumar hasta 100. Obtén más información sobre las divisiones del tráfico.
- DEPLOYED_MODEL_ID_N: Opcional Si se implementan otros modelos en este extremo, debes actualizar sus porcentajes de división del tráfico para que todos los porcentajes sumen hasta 100.
- TRAFFIC_SPLIT_MODEL_N: El valor de porcentaje de división del tráfico para la clave del ID del modelo implementado
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/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 }, }, "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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Obtén más información para cambiar la configuración predeterminada para el registro de predicción.
Obtén 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 en operaciones de larga duración. Para obtener más información, consulta Trabaja con operaciones de larga duración.
Realiza una predicción en línea con el modelo implementado
Si quieres realizar una predicción en línea, envía uno o más elementos de prueba a un modelo para su análisis, y el modelo mostrará resultados basados en el objetivo de tu modelo. Usa la consola de Google Cloud o la API de Vertex AI para solicitar una predicción en línea.
Consola de Google Cloud
En la sección Vertex AI de la consola de Google Cloud, vaya a la página Modelos.
En la lista de modelos, haz clic en el nombre del modelo desde el que quieres solicitar predicciones.
Selecciona la pestaña Implementar y probar.
En la sección Test your model, agrega elementos de prueba para solicitar una predicción. Los datos de la predicción de referencia se completan por ti o puedes ingresar tus propios datos de predicción y hacer clic en Predecir.
Una vez que se completa la predicción, Vertex AI muestra los resultados en la consola.
API: Clasificación
gcloud
-
Crea un archivo llamado
request.json
con el siguiente contenido:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Reemplaza lo siguiente:
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
-
-
Ejecute el siguiente comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Reemplaza lo siguiente:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
REST
Usa el método endpoints.predict para solicitar una predicción en línea.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
LOCATION_ID: Es la región en la que se encuentra el extremo. Por ejemplo,
us-central1
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
- DEPLOYED_MODEL_ID: salida del método
predict
y se acepta como entrada mediante el métodoexplain
. El ID del modelo que se usó para generar la predicción. Si necesitas solicitar explicaciones de una predicción solicitada con anterioridad y tienes más de un modelo implementado, puedes usar este ID a fin de asegurarte de que se muestren las explicaciones para el mismo modelo que proporcionó la predicción anterior.
HTTP method and 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 que se muestra a continuación:
{ "predictions": [ { "scores": [ 0.96771615743637085, 0.032283786684274673 ], "classes": [ "0", "1" ] } ] "deployedModelId": "2429510197" }
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
API: Regresión
gcloud
-
Crea un archivo llamado “request.json” con el siguiente contenido:
{ "instances": [ { PREDICTION_DATA_ROW } ] }
Reemplaza lo siguiente:
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"age":3.6, "sq_ft":5392, "code": "90331"
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
-
-
Ejecute el siguiente comando:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Reemplaza lo siguiente:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
REST
Usa el método endpoints.predict para solicitar una predicción en línea.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
LOCATION_ID: Es la región en la que se encuentra el extremo. Por ejemplo,
us-central1
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"age":3.6, "sq_ft":5392, "code": "90331"
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
- DEPLOYED_MODEL_ID: salida del método
predict
y se acepta como entrada mediante el métodoexplain
. El ID del modelo que se usó para generar la predicción. Si necesitas solicitar explicaciones de una predicción solicitada con anterioridad y tienes más de un modelo implementado, puedes usar este ID a fin de asegurarte de que se muestren las explicaciones para el mismo modelo que proporcionó la predicción anterior.
HTTP method and 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 que se muestra a continuación:
{ "predictions": [ [ { "value": 65.14233, "lower_bound": 4.6572, "upper_bound": 164.0279 } ] ], "deployedModelId": "DEPLOYED_MODEL_ID" }
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Interpreta los resultados de la predicción
Clasificación
Los modelos de clasificación muestran una puntuación de confianza.
La puntuación de confianza comunica cuán fuerte tu modelo asocia cada clase o etiqueta con un elemento de prueba. Cuanto más alto sea el número, mayor será la confianza del modelo de que la etiqueta se debe aplicar a ese elemento. Tú decides qué tan alta debe ser la puntuación de confianza para que aceptes los resultados del modelo.
Regresión
Los modelos de regresión muestran un valor de predicción. En el caso de los destinos de BigQuery, también muestran un intervalo de predicción. El intervalo de predicción proporciona un rango de valores en el cual el modelo tiene un 95% de confianza de que contiene el resultado real.
Obtén una explicación en línea con el modelo implementado
Puedes solicitar una predicción con explicaciones (también llamadas atribuciones de atributos) para ver cómo el modelo llegó a una predicción. Los valores de importancia de los atributos locales indican cuánto contribuyó cada atributo al resultado de la predicción. Las atribuciones de funciones se incluyen en las predicciones de Vertex AI a través de Vertex Explainable AI.
Console
Cuando usas la consola de Google Cloud para solicitar una predicción en línea, los valores de importancia de los atributos locales se muestran de forma automática.
Si usaste los valores de predicción completados previamente, los valores de importancia de los atributos locales son todos iguales a cero. Esto se debe a que los valores completados previamente son los datos de predicción del modelo de referencia, por lo que la predicción que se muestra es el valor de predicción del modelo de referencia.
gcloud
Crea un archivo llamado
request.json
con el siguiente contenido:{ "instances": [ { PREDICTION_DATA_ROW } ] }
Reemplaza lo siguiente:
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
-
Ejecute el siguiente comando:
gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
Reemplaza lo siguiente:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
De forma opcional, si deseas enviar una solicitud de explicación a un
DeployedModel
preciso en elEndpoint
, 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, reemplaza lo siguiente:
-
DEPLOYED_MODEL_ID Opcional: El ID del modelo implementado para el que deseas obtener explicaciones. Se incluye el ID en la respuesta del método
predict
. Si necesitas solicitar explicaciones para un modelo en particular y tienes más de un modelo implementado en el mismo extremo, puedes usar este ID a fin de garantizar que se muestren las explicaciones para ese modelo en particular.
REST
En el siguiente ejemplo, se muestra una solicitud de predicción en línea para un modelo de clasificación tabular con atribuciones de funciones locales. El formato de la solicitud es el mismo para los modelos de regresión.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
LOCATION: Es la región en la que se encuentra el extremo. Por ejemplo,
us-central1
- PROJECT: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
-
PREDICTION_DATA_ROW: Un objeto JSON con claves como nombres de funciones y valores como los valores de atributo correspondientes. Por ejemplo, para un conjunto de datos con un número, un array de strings y una categoría, la fila de datos puede tener el siguiente ejemplo de solicitud:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
Debes proporcionar un valor para cada atributo incluido en el entrenamiento. El formato de los datos usados para la predicción debe coincidir con el formato que se usa para el entrenamiento. Consulta Formato de datos para predicciones si quieres obtener más detalles.
-
DEPLOYED_MODEL_ID (opcional): El ID del modelo implementado para el que deseas obtener explicaciones. Se incluye el ID en la respuesta del método
predict
. Si necesitas solicitar explicaciones para un modelo en particular y tienes más de un modelo implementado en el mismo extremo, puedes usar este ID a fin de garantizar que se muestren las explicaciones para ese modelo en particular.
HTTP method and 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Obtén explicaciones para una predicción generada anteriormente
Debido a que las explicaciones aumentan el uso de recursos, te recomendamos reservar explicaciones de solicitud para situaciones en las que las necesitas específicamente. A veces, puede ser útil solicitar explicaciones para un resultado de predicción que ya recibiste, tal vez porque la predicción fue un valor atípico o no tenía sentido.
Si todas tus predicciones provienen del mismo modelo, puedes volver a enviar los datos de la solicitud con las explicaciones solicitadas esta vez. Sin embargo, si tienes varios modelos que muestran predicciones, debes asegurarte de enviar la solicitud de explicación al modelo correcto. Para ver las explicaciones de un modelo en particular, puedes incluir el ID del modelo implementado deployedModelID
en tu solicitud, lo que se incluye en la respuesta de la solicitud de predicción original.
Ten en cuenta que el ID del modelo implementado es diferente del ID del modelo.
Interpreta los resultados de la explicación
Para calcular la importancia de los atributos locales, primero se calcula la puntuación de predicción de modelo de referencia. Los valores del modelo de referencia se calculan a partir de los datos de entrenamiento, y se usa el valor de la mediana para los atributos numéricos y el modo para los atributos categóricos. La predicción que se genera a partir de los valores del modelo de referencia es la puntuación de predicción del modelo de referencia. Los valores del modelo de referencia se calculan una vez para un modelo y no cambian.
Para una predicción específica, la importancia de los atributos locales de cada atributo indica cuánto agregó o cuánto quitó ese atributo al resultado en comparación con la puntuación de predicción del modelo de referencia. La suma de todos los valores de importancia de los atributos equivale a la diferencia entre la puntuación de predicción del modelo de referencia y el resultado de la predicción.
Para los modelos de clasificación, la puntuación siempre se encuentra entre 0.0 y 1.0, inclusive. Por lo tanto, los valores de importancia de los atributos locales para los modelos de clasificación siempre se encuentran entre -1.0 y 1.0 (inclusive).
Si deseas obtener ejemplos de consultas de atribución de atributos y obtener más información, consulta Atribuciones de atributos para la clasificación y la regresión.Resultado de ejemplo para predicciones y explicaciones
Clasificación
La carga útil de retorno para una predicción en línea de un modelo de clasificación tabular con importancia de atributos 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 predicción del modelo de referencia, 0.808652400970459
. El atributo que contribuyó más a este resultado fue 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 retorno de una predicción en línea con una importancia de atributos de un modelo de regresión tabular es similar al siguiente ejemplo.
El instanceOutputValue
de 1795.1246466281819
es el valor previsto, con los campos lower_bound
y upper_bound
que proporcionan el intervalo de confianza del 95%.
El campo baselineOutputValue
contiene la puntuación de predicción del modelo de referencia, 1788.7423095703125
. El atributo que contribuyó más a este resultado fue 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"
}
¿Qué sigue?
- Obtén más información sobre cómo exportar tu modelo.