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 está 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 tu modelo entrenado de AutoML en un extremo y usar ese extremo para obtener predicciones

El costo total de la ejecución de este lab en Google Cloud es de aproximadamente USD 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 centrará en los productos que se destacan a continuación: AutoML para datos tabulares, Prediction y Workbench.

Descripción general del producto Vertex

3. Configura 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

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

Crear cuaderno nuevo

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

Instancia de TFE

Usa las opciones predeterminadas y 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 con 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:

Selecciona Conjuntos de datos.

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

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

Crear conjunto de datos

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

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

Aquí subiremos datos desde una tabla pública de BigQuery.

Paso 2: Importa datos de BigQuery

Elige "Seleccionar una tabla o una vista de BigQuery" como 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

Después de importar tu conjunto de datos, deberías ver algo similar a lo siguiente:

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 que lo hagas antes de continuar con el siguiente paso. Este conjunto de datos contiene transacciones reales con tarjetas de crédito. 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

Como ya subimos un conjunto de datos administrados, está todo listo para entrenar un modelo con ellos. Entrenaremos un modelo de clasificación para predecir si una transacción específica es fraudulenta o no. 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 tus 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 el entrenamiento.

Paso 1: Inicia el trabajo de entrenamiento

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

Paso 1 del entrenamiento del modelo

Asigna un nombre a tu modelo o usa el predeterminado. En Columna objetivo, selecciona Clase. Es un número entero que indica si una transacción específica fue fraudulenta (0 si no lo es y 1 si lo es).

Luego, selecciona Continuar:

Paso 2 del entrenamiento del modelo

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

Opciones de entrenamiento avanzadas

Selecciona Continuar y, luego, avanza al ú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. A continuación, selecciona Comenzar entrenamiento.

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

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

En este paso, veremos el rendimiento de nuestro modelo.

Una vez que se complete el trabajo de entrenamiento del modelo, 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. 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 analizando, esta es una mejor medida del rendimiento de nuestro modelo que la precisión general.

Recuerda que menos del 1% de los ejemplos de nuestro conjunto de datos eran transacciones fraudulentas, por lo que, si la precisión de nuestro modelo es del 99%, es muy probable que solo esté adivinando al azar la clase no fraudulenta el 99% del tiempo. Por eso, en este caso, la mejor métrica es la de precisión del modelo respecto a cada clase.

Si te desplazas hacia abajo en la pestaña Evaluar, verás una matriz de confusión similar a la siguiente (es posible que los porcentajes exactos varíen):

Matriz de confusión

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

Paso 2: Analiza la importancia de los atributos

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

Importancia de los atributos

Aquí se muestran los atributos que proporcionaron el mayor indicador a nuestro modelo cuando se realizaban predicciones. La importancia de los atributos es un tipo de IA explicable, un campo que incluye varios métodos para obtener más información sobre un modelo de AA que realiza predicciones. El gráfico de importancia de los atributos que vemos aquí se calcula como un agregado mediante la revisión de todas las predicciones del modelo realizadas en el conjunto de prueba. Nos muestra los atributos más importantes en un lote de ejemplos.

Este gráfico sería más interesante si no se ocultara la mayoría de los atributos de nuestro conjunto de datos. Por ejemplo, podríamos descubrir 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 el 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 crear una combinación de atributos con los dos más significativos para comprobar si esto mejora el rendimiento del modelo.

Aquí estamos viendo 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 una vez que implementemos nuestro modelo.

7. Implementar el modelo en un extremo

Ahora que tenemos un modelo entrenado, el próximo 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 del modelo, navega a la pestaña Implementar y probar y haz clic en Implementar en el extremo:

Implementación y prueba

Asigna un nombre al extremo, como fraud_v1, deja el acceso establecido en Estándar y haz clic en Continuar.

Deja la división del tráfico y el tipo de máquina con 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 esa opción sin seleccionar y hacer clic en Implementar. El extremo tardará unos minutos en implementarse. Cuando se complete, verás una marca de verificación verde junto a él:

Extremo implementado

¡Ya casi lo logras! 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

Aquí mostraremos ambas.

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

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

Probar modelo

Aquí, Vertex AI eligió valores aleatorios para cada uno de los atributos del modelo, que 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 predicho para cada clase del modelo. Por ejemplo, una puntuación de confianza de 0.99 para la clase 0 significa que el modelo cree que este ejemplo tiene un 99% de probabilidades de no ser fraudulento.

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

La IU es una excelente manera de asegurarte de que el extremo implementado funcione como se espera, pero es probable que desees 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 en 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í:

Cómo encontrar el ID del 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:

  • Cómo subir un conjunto de datos administrado
  • Entrena y evalúa un modelo con datos tabulares usando AutoML
  • Implemente un modelo en un extremo
  • Obtener predicciones en el extremo de un modelo con el SDK de 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 de la consola de Cloud, selecciona el notebook y, luego, haz clic en Detener.

Si quieres borrar el notebook, haz clic en el botón Borrar en la parte superior derecha.

Para borrar el extremo que implementaste, ve a la sección Extremos de la consola de Vertex AI y anula la implementación del modelo en el 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