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 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 $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, predicción y Workbench.
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.
Paso 3: Crea una instancia de Vertex AI Workbench
En la sección Vertex AI de Cloud Console, haz clic en Workbench:
Allí, en Notebooks administrados por el usuario, haz clic en Nuevo notebook:
Luego, selecciona la versión más reciente del tipo de instancia TensorFlow Enterprise (with LTS) without GPUs:
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:
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 para el público 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ú Vertex de la consola, 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 debe clasificarse como fraudulenta o no.
En la página Conjuntos de datos, asigna un nombre al conjunto de datos y, luego, selecciona Tabulares y Regresión/clasificación. Luego, crea el conjunto de datos:
Existen algunas opciones para importar datos a conjuntos de datos administrados en Vertex:
- Subir un archivo local desde tu computadora
- Selecciona archivos de Cloud Storage
- Cómo seleccionar datos de BigQuery
Aquí subiremos datos de 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:
Deberías ver algo similar a lo siguiente después de importar tu conjunto de datos:
Si lo deseas, 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, está todo listo para entrenar un modelo con estos datos. 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 aplicaciones de entrenamiento personalizado en la nube con tu propio contenedor o uno de los creados previamente de Google Cloud.
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 seleccionado AutoML para el entrenamiento del modelo y, luego, haz clic en Continuar:
Asigna un nombre a tu 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:
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 corresponde a transacciones fraudulentas), elige la opción AUC PRC, que maximizará la precisión-recuperación de la clase menos común:
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 Iniciar 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.
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
Una matriz de confusión nos indica el porcentaje de ejemplos de cada clase en nuestro 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 corresponden a transacciones fraudulentas, así que, si la exactitud de nuestro modelo es del 99%, es 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 de nuestro modelo respecto a cada clase.
Si te desplazas hacia abajo en la pestaña Evaluar, deberías ver una matriz de confusión similar a la siguiente (es posible que los porcentajes exactos varíen):
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 prueba. Esto es bastante bueno, especialmente si consideramos el 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: Analiza la importancia de los atributos
Debajo de la matriz de confusión, deberías ver un gráfico de importancia de los atributos que se ve de la siguiente manera:
Esto nos muestra 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 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 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 saber 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 combinar dos de nuestros atributos más significativos en una combinación de atributos para comprobar si esto mejora el rendimiento del modelo.
Aquí, analizamos la importancia de los atributos en un lote, pero también podemos consultar la importancia de los atributos de predicciones individuales en Vertex AI. Veremos cómo hacerlo una vez que hayamos implementado nuestro 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:
Asigna 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 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 eso sin seleccionar y hacer clic en Implementar. El extremo tardará unos minutos en implementarse. Cuando esté listo, verás una marca de verificación verde junto a él:
¡Estás cada vez má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
Aquí te mostraremos ambas.
Paso 1: Obtén predicciones del modelo en la IU
En la página del modelo donde se muestra tu extremo (donde nos quedamos en el último paso), desplázate hacia abajo hasta la sección Prueba tu 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. Si lo deseas, puedes cambiar estos valores. 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 no es fraudulento.
Paso 2: Obtén predicciones del modelo con la API de Vertex AI
La IU es una gran forma de asegurarte de que el extremo implementado funcione como se espera, pero es probable que quieras obtener predicciones de forma dinámica mediante 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:
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 Extremos de la consola aquí:
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 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 en AutoML
- Implemente un modelo en un extremo
- Cómo 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 por completo, haz clic en el botón Borrar en 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 desde el 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):