En esta guía, se describe cómo obtener explicaciones de un recurso Model
en Vertex AI. Puedes obtener explicaciones de dos maneras:
Explicaciones en línea: Solicitudes síncronas a la API de Vertex AI, similares a las predicciones en línea que muestran predicciones con atribuciones de atributos.
Explicaciones por lotes: Solicitudes asíncronas a la API de Vertex AI que muestran predicciones con atribuciones de atributos. Las explicaciones por lotes son una parte opcional de las solicitudes de predicción por lotes.
Antes de comenzar
Antes de obtener explicaciones, debes hacer lo siguiente:
Este paso difiere según el tipo de modelo de aprendizaje automático que uses:
Si deseas obtener explicaciones a partir de un modelo de entrenamiento personalizado, sigue Configura explicaciones basadas en ejemplos o Configura explicaciones basadas en atributos para crear un
Model
que admita Vertex Explainable AI.Si deseas obtener explicaciones a partir de un modelo de regresión o clasificación tabular de AutoML, entrena un modelo de AutoML en un conjunto de datos tabular. No se requiere una configuración específica para usar Vertex Explainable AI. No se admiten las explicaciones para los modelos de previsión.
Si deseas obtener explicaciones de un modelo de clasificación de imágenes de AutoML, entrena un modelo de AutoML en un conjunto de datos de imágenes y habilita las explicaciones cuando implementas el modelo. No se requiere una configuración específica para usar Vertex Explainable AI. No se admiten las explicaciones para los modelos de detección de objetos.
Si deseas obtener explicaciones en línea, implementa el
Model
que creaste en el paso anterior en un recursoEndpoint
.
Obtén explicaciones en línea
Para obtener explicaciones en línea, sigue la mayoría de los pasos que realizarías para obtener predicciones en línea. Sin embargo, en lugar de enviar una solicitud projects.locations.endpoints.predict
a la API de Vertex AI, envía una solicitud projects.locations.endpoints.explain
.
En las siguientes guías, se proporcionan instrucciones detalladas para preparar y enviar solicitudes de explicación en línea:
Para los modelos de clasificación de imágenes de AutoML, lee Obtén predicciones en línea a partir de modelos de AutoML.
Para modelos de regresión y de clasificación tabular de AutoML, consulta Obtén predicciones en línea a partir de modelos de AutoML.
En el caso de los modelos de entrenamiento personalizado, lee Obtén predicciones en línea de modelos de entrenamiento personalizado.
Obtén explicaciones por lotes
Solo se admiten las explicaciones por lotes basadas en atributos; no puedes obtener explicaciones por lotes basadas en ejemplos.
Para obtener explicaciones por lotes, configura el campo generateExplanation
como true
cuando crees un trabajo de predicción por lotes.
Si deseas obtener instrucciones detalladas para preparar y crear trabajos de predicción por lotes, consulta Obtén predicciones por lotes.
Obtén explicaciones de forma local en los notebooks administrados por usuarios de Vertex AI Workbench
En Notebooks administrados por el usuario de Vertex AI Workbench, puedes generar explicaciones para tu modelo entrenado personalizado mediante la ejecución de Vertex Explainable AI en el kernel o entorno de ejecución local de tu notebook sin implementar el modelo en Vertex AI para obtener explicaciones. El uso de explicaciones locales te permite probar diferentes opciones de configuración de Vertex Explainable AI sin ajustar la implementación de tus modelos de Vertex AI para cada cambio. Esto facilita y agiliza la evaluación del impacto de usar diferentes modelos de referencia, probar diferentes configuraciones de visualización para tus explicaciones o ajustar la cantidad de pasos o rutas de acceso que se usan para el algoritmo.
Las explicaciones locales solo están disponibles en notebooks administrados por el usuario, por lo tanto, esta característica no funciona en notebooks de Jupyter que se ejecutan fuera de una instancia de notebooks administrados por el usuario.
Para generar explicaciones de forma local en una instancia de notebooks administrados por el usuario, haz lo siguiente:
- Crea una instancia de notebook administrada por el usuario
- Inicia el entorno de JupyterLab desde la instancia de notebooks administrados por el usuario y, luego, crea o importa un notebook.
- Guarda el artefacto del modelo en el entorno local de tu notebook o en un bucket de Cloud Storage.
- Genera y guarda los metadatos para describir tu modelo y configurar la solicitud de explicación.
Usa el SDK de Explainable AI en notebooks administrados por el usuario
El SDK de Explainable AI está preinstalado en instancias de notebooks administrados por el usuario. En tu notebook, puedes usar el SDK de Explainable AI para guardar el artefacto del modelo y, luego, identificar de forma automática los metadatos de las entradas y salidas del modelo para la solicitud de explicación. También puedes especificar otros parámetros para configurar la solicitud de explicación y, luego, visualizar los resultados de la explicación.
Puedes guardar modelos y metadatos en el entorno local de tu notebook o en un bucket de Cloud Storage. Si usas TensorFlow, puedes usar el método save_model_with_metadata()
para inferir las entradas y salidas de tu modelo, y guardar estos metadatos de explicación con tu modelo.
A continuación, carga el modelo en el SDK de Explainable AI mediante load_model_from_local_path()
. Si es necesario, puedes ajustar la configuración para el algoritmo específico de Vertex Explainable AI. Por ejemplo, puedes cambiar la cantidad de rutas que se usarán para Shapley de muestra o la cantidad de pasos que se usarán en los gradientes integrados o XRAI.
Por último, llama a explain()
con instancias de datos y visualiza las atribuciones de los atributos.
Puedes usar el siguiente código de ejemplo a fin de obtener explicaciones locales para un modelo de TensorFlow 2 dentro de una instancia de notebooks administrados por el usuario:
# This sample code only works within a user-managed notebooks instance.
import explainable_ai_sdk
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
metadata_and_model_builder = SavedModelMetadataBuilder('LOCAL_PATH_TO_MODEL')
metadata_and_model_builder.save_model_with_metadata('LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT')
# Load the model and adjust the configuration for Explainable AI parameters
num_paths = 20
model_artifact_with_metadata = explainable_ai_sdk.load_model_from_local_path(
'LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT',
explainable_ai_sdk.SampledShapleyConfig(num_paths))
# Explainable AI supports generating explanations for multiple predictions
instances = [{feature_a: 10, feature_2: 100,...}, ... ]
explanations = model_artifact_with_metadata.explain(instances)
explanations[0].visualize_attributions()
Para obtener más información sobre el SDK de Explainable AI, incluidos los diferentes parámetros y parámetros de configuración, consulta el archivo config.py del SDK en GitHub. Obtén más información sobre los notebooks administrados por el usuario de Vertex AI Workbench.
¿Qué sigue?
- En función de las explicaciones que recibas, aprende a ajustar tu
Model
para mejorar las explicaciones. - Prueba un notebook de muestra que brinde Vertex Explainable AI en datos tabulares o de imágenes.