Vertex AI: Cómo compilar un modelo de detección de fraudes con AutoML

1. Descripción general

En este lab, usarás Vertex AI para entrenar y entregar un modelo con datos tabulares. Esta es la oferta de productos de IA más reciente de Google Cloud y se encuentra actualmente en versión preliminar.

Qué aprenderá

Aprenderás a hacer lo siguiente:

  • Sube un conjunto de datos administrado a Vertex AI
  • Entrenar un modelo con AutoML
  • Implementar el modelo entrenado de AutoML en un extremo y usarlo para obtener predicciones

El costo total de la ejecución de este lab en Google Cloud es de aproximadamente $22.

2. Introducción a Vertex AI

En este lab, se utiliza la oferta de productos de IA más reciente de Google Cloud. Vertex AI integra las ofertas de AA de Google Cloud en una experiencia de desarrollo fluida. Anteriormente, se podía acceder a los modelos personalizados y a los entrenados con AutoML mediante servicios independientes. La nueva oferta combina ambos en una sola API, junto con otros productos nuevos. También puedes migrar proyectos existentes a Vertex AI. Para enviarnos comentarios, visita la página de asistencia.

Vertex AI incluye muchos productos distintos para respaldar flujos de trabajo de AA de extremo a extremo. Este lab se enfocará en los productos que se destacan a continuación: AutoML para datos tabulares, Prediction y Workbench.

Descripción general del producto Vertex

3. Cómo configurar tu entorno

Para ejecutar este codelab, necesitarás un proyecto de Google Cloud Platform que tenga habilitada la facturación. Para crear un proyecto, sigue estas instrucciones.

Paso 1: Habilita la API de Compute Engine

Ve a Compute Engine y selecciona Habilitar (si aún no está habilitada). La necesitarás para crear la instancia de notebook.

Paso 2: Habilita la API de Vertex AI

Navegue hasta la sección de Vertex AI en la consola de Cloud y haga clic en Habilitar API de Vertex AI.

Panel de Vertex

Paso 3: Crea una instancia de Vertex AI Workbench

En la sección Vertex AI de Cloud Console, haz clic en Workbench:

Menú Vertex AI

Allí, en Notebooks administrados por el usuario, haz clic en Nuevo notebook:

Crear notebook nuevo

Luego, selecciona la versión más reciente del tipo de instancia TensorFlow Enterprise (with LTS) without GPUs:

Instancia de TFE

Usa las opciones predeterminadas y, luego, haz clic en Crear.

Paso 5: Abre tu notebook

Una vez que se crea la instancia, selecciona Abrir JupyterLab:

Abrir notebook

Los datos que usaremos para entrenar nuestro modelo provienen de este conjunto de datos de detección de fraudes de tarjetas de crédito. Usaremos una versión de este conjunto de datos que está disponible públicamente en BigQuery.

4. Crear un conjunto de datos administrado

En Vertex AI, puede crear conjuntos de datos administrados para una gran variedad de datos. Luego, puede generar estadísticas sobre estos conjuntos y utilizarlas para entrenar modelos con AutoML o el código personalizado de su modelo.

Paso 1: Crear un conjunto de datos

En el menú de Vertex de la consola, selecciona Conjuntos de datos:

Seleccionar conjuntos de datos

En este lab, crearemos un modelo de detección de fraudes para determinar si una transacción específica de una tarjeta de crédito debe clasificarse como fraudulenta.

En la página Conjuntos de datos, asigna un nombre al conjunto de datos, luego selecciona Tabulares y Regresión/clasificación. Luego, crea el conjunto de datos:

Crear conjunto de datos

Existen varias opciones para importar datos a conjuntos de datos administrados en Vertex:

  • Cómo subir un archivo local desde tu computadora
  • Selecciona archivos de Cloud Storage
  • Selecciona datos de BigQuery

En este paso, subiremos datos desde una tabla pública de BigQuery.

Paso 2: Importa datos desde BigQuery

Elige “Seleccionar una tabla o vista de BigQuery”. como tu método de importación y, luego, copia lo siguiente en el cuadro Tabla de BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Luego, selecciona Continuar:

Importa datos de BigQuery

Deberías ver un resultado similar al siguiente después de importar tu conjunto de datos:

Datos importados

Si quieres, puedes hacer clic en Generar estadísticas para ver información adicional sobre este conjunto de datos, pero no es necesario antes de continuar con el siguiente paso. Este conjunto de datos contiene transacciones de tarjetas de crédito reales. Se ocultaron la mayoría de los nombres de las columnas, por lo que se llaman V1, V2, etcétera.

5. Entrenar un modelo con AutoML

Con un conjunto de datos administrado subido, estamos listos para entrenar un modelo con estos datos. Entrenaremos un modelo de clasificación para predecir si una transacción específica es fraudulenta. Vertex AI proporciona las siguientes dos opciones para entrenar modelos:

  • AutoML: Entrena modelos de alta calidad con poco esfuerzo y experiencia en AA.
  • Entrenamiento personalizado: Ejecuta aplicaciones de entrenamiento personalizado en la nube con uno de los contenedores compilados previamente de Google Cloud o usa uno propio.

En este lab, usaremos AutoML para entrenarlos.

Paso 1: Inicia el trabajo de entrenamiento

En la página de detalles del conjunto de datos donde lo dejaste en el paso anterior, selecciona Entrenar un modelo nuevo en la parte superior derecha. Selecciona Clasificación como el objetivo, deja AutoML seleccionado para el entrenamiento del modelo y, luego, haz clic en Continuar:

Paso 1 del entrenamiento de modelos

Asígnale un nombre al modelo o usa el predeterminado. En Columna objetivo, selecciona Clase. Este es un número entero que indica si una transacción en particular fue fraudulenta o no (0 si no es fraude y 1 si se trata de fraude).

Luego, selecciona Continuar:

Paso 2 del entrenamiento de modelos

En este paso, desplázate hacia abajo y haz clic para expandir Opciones avanzadas. Dado que este conjunto de datos está muy desequilibrado (menos del 1% de los datos contiene transacciones fraudulentas), elige la opción AUC PRC que maximizará la precisión-recuperación para la clase menos común:

Opciones de capacitación avanzada

Selecciona Continuar y, luego, continúa con el último paso (Procesamiento y precios). Aquí, ingresa 1 como la cantidad de horas de procesamiento de nodo para tu presupuesto y deja habilitada la interrupción anticipada. Entrenar el modelo de AutoML durante 1 hora de procesamiento suele ser un buen comienzo para determinar si existe una relación entre los atributos y la etiqueta que seleccionaste. De este modo, puede modificar sus atributos y realizar un entrenamiento más prolongado para mejorar el rendimiento del modelo. Luego, selecciona Comenzar el entrenamiento.

Recibirás un correo electrónico cuando se complete el trabajo de entrenamiento. El entrenamiento tardará un poco más de una hora en iniciar y eliminar recursos.

6. Explorar las métricas de evaluación del modelo

En este paso, veremos el rendimiento de nuestro modelo.

Cuando se complete el trabajo de entrenamiento de modelos, navega a la pestaña Modelos en Vertex. Haz clic en el modelo que acabas de entrenar y revisa la pestaña Evaluar. Aquí hay muchas métricas de evaluación y nos enfocaremos en dos: la matriz de confusión y la importancia de los atributos.

Paso 1: Comprende la matriz de confusión

En una matriz de confusión, se indica el porcentaje de ejemplos de cada clase en el conjunto de prueba que nuestro modelo predijo correctamente. En el caso de un conjunto de datos desequilibrado como el que estamos ocupando, esta es una mejor medición del rendimiento de nuestro modelo que la exactitud general.

Recuerda que menos del 1% de los ejemplos de nuestro conjunto de datos eran transacciones fraudulentas, por lo que, si la exactitud de nuestro modelo es del 99%, es muy probable que adivine al azar la clase no fraudulenta el 99% de las veces. Por eso, en este caso la mejor métrica es analizar la exactitud de nuestro modelo para cada clase.

Si te desplazas hacia abajo en la pestaña Evaluar, deberías ver una matriz de confusión similar a la siguiente (los porcentajes exactos pueden variar):

Matriz de confusión

La matriz de confusión muestra que nuestro modelo inicial puede clasificar correctamente el 85% de los ejemplos fraudulentos de nuestro conjunto de prueba. Esto es bastante bueno, en especial si consideramos nuestro desequilibrio significativo del conjunto de datos. Luego, podríamos intentar entrenar nuestro modelo durante más horas de procesamiento para ver si podemos mejorar con este 85%.

Paso 2: Observa la importancia de los atributos

Debajo de la matriz de confusión, deberías ver un gráfico de importancia de los atributos como el siguiente:

Importancia de los atributos

Esto nos muestra los atributos que proporcionaron el mayor indicador a nuestro modelo cuando realizamos predicciones. La importancia de los atributos es un tipo de Explainable AI. Un campo que incluye varios métodos para obtener más información sobre un modelo de AA es hacer predicciones. El gráfico de importancia de los atributos que se ve aquí se calcula como un agregado mediante la revisión de todas las predicciones del modelo en el conjunto de prueba. Nos muestra las características más importantes en un lote de ejemplos.

Este gráfico sería más interesante si la mayoría de los atributos de nuestro conjunto de datos no se ocultaran. Podríamos descubrir, por ejemplo, que el tipo de transacción (transferencia, depósito, etc.) fue el mayor indicador de fraude.

En una situación real, estos valores de importancia de los atributos podrían usarse para mejorar nuestro modelo y tener más confianza en sus predicciones. Es posible que decidamos quitar los atributos menos importantes la próxima vez que entrenemos un modelo o que combinemos dos de nuestros atributos más significativos en una combinación de atributos para ver si esto mejora el rendimiento del modelo.

Analizamos la importancia de los atributos en un lote, pero también podemos obtener la importancia de los atributos para predicciones individuales en Vertex AI. Veremos cómo hacerlo después de implementar el modelo.

7. Implementar el modelo en un extremo

Ahora que tenemos un modelo entrenado, el siguiente paso es crear un extremo en Vertex. Un recurso de modelo en Vertex puede tener varios extremos asociados, y puedes dividir el tráfico entre varios extremos.

Paso 1: Crea un extremo

En la página de tu modelo, navega a la pestaña Implementar y probar y haz clic en Implementar en el extremo:

Implementación y prueba

Asígnale un nombre a tu extremo, como fraud_v1, deja el acceso configurado en Estándar y haz clic en Continuar.

Deja la división del tráfico y el tipo de máquina como la configuración predeterminada, haz clic en Listo y, luego, en Continuar.

No usaremos la supervisión de modelos para este extremo, por lo que puedes dejar eso sin seleccionar y hacer clic en Implementar. El extremo tardará unos minutos en implementarse. Cuando haya finalizado, verás una marca de verificación verde a su lado:

Extremo implementado

¡Estás cerca! Ahora está todo listo para obtener predicciones en el modelo implementado.

8. Obtener predicciones en nuestro modelo implementado

Estas son algunas de las opciones que existen para obtener predicciones del modelo:

  • La IU de Vertex AI
  • La API de Vertex AI

Mostraremos ambas aquí.

Paso 1: Obtén predicciones del modelo en la IU

En la página del modelo en la que se muestra el extremo (donde lo dejamos en el último paso), desplázate hacia abajo hasta la sección Prueba tu modelo:

Probar modelo

En este caso, Vertex AI eligió valores aleatorios para cada uno de los atributos de nuestro modelo, los cuales podemos usar para obtener una predicción de prueba. Puedes cambiar estos valores si lo deseas. Desplázate hasta el final de la página y selecciona Predecir.

En la sección Resultado de la predicción de la página, deberías ver el porcentaje previsto de tu modelo para cada clase. Por ejemplo, una puntuación de confianza de 0.99 para la clase 0 significa que tu modelo considera que este ejemplo tiene un 99% de no fraude.

Paso 2: Obtén predicciones del modelo con la API de Vertex AI

La IU es una excelente manera de asegurarse de que el extremo implementado funciona como se espera, pero es probable que quieras obtener predicciones de forma dinámica a través de una llamada a la API de REST. Para mostrarte cómo obtener predicciones del modelo aquí, usaremos la instancia de Vertex Workbench que creaste al comienzo de este lab.

A continuación, abre la instancia de notebook que creaste y abre un notebook de Python 3 desde el Selector:

Abrir notebook

En el notebook, ejecuta lo siguiente en una celda para instalar el SDK de Vertex:

!pip3 install google-cloud-aiplatform --upgrade --user

Luego, agrega una celda en el notebook para importar el SDK y crear una referencia al extremo que acabas de implementar:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Deberás reemplazar dos valores en la cadena endpoint_name anterior por el número y el extremo de tu proyecto. Para encontrar el número de tu proyecto, ve al panel del proyecto y obtén el valor del número de proyecto.

Puedes encontrar el ID de extremo en la sección de extremos de la consola aquí:

Busca el ID de extremo

Por último, realiza una predicción en el extremo; para ello, copia y ejecuta el código que figura a continuación en una celda nueva:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Deberías ver una predicción de alrededor de .67 para la clase 0, lo que significa que el modelo cree que hay un 67% de probabilidades de que esta transacción no sea fraudulenta.

🎉 ¡Felicitaciones! 🎉

Aprendiste a usar Vertex AI para hacer lo siguiente:

  • Sube un conjunto de datos administrado
  • Entrena y evalúa un modelo con datos tabulares mediante AutoML
  • Implemente un modelo en un extremo
  • Obtén predicciones en el extremo de un modelo con el SDK para Vertex

Si quieres obtener más información sobre los diferentes componentes de Vertex AI, consulta la documentación.

9. Limpieza

Si quieres continuar usando el notebook que creaste en este lab, te recomendamos que lo desactives cuando no lo utilices. En la IU de Workbench en la consola de Cloud, selecciona el notebook y, luego, Detener.

Si quieres borrar todo el {i>notebook<i}, haz clic en el botón Borrar de la parte superior derecha.

Para borrar el extremo que implementaste, navega a la sección Extremos de la consola de Vertex AI y anula la implementación del modelo en tu extremo:

Borrar extremo

Para borrar el bucket de almacenamiento, en el menú de navegación de la consola de Cloud, navega a Almacenamiento, selecciona tu bucket y haz clic en Borrar (Delete):

Borrar almacenamiento