Vertex AI: Exporta e implementa un modelo de aprendizaje automático de BigQuery para la predicción

1. Descripción general

En este lab, entrenarás un modelo con BigQuery Machine Learning y, luego, exportarás e implementarás ese modelo en Vertex AI. Esta es la oferta de productos de IA más reciente de Google Cloud.

Qué aprenderá

Aprenderás a hacer lo siguiente:

  • Entrena un modelo con BigQuery Machine Learning (BQML)
  • Exporta tu modelo de BQML a Cloud Storage
  • Implementa tu BQML entrenado en Vertex AI
  • Genere predicciones en el modelo implementado

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

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: Prediction y Notebooks.

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 AI

Paso 3: Crea una instancia de Notebooks

Usaremos notebooks para obtener predicciones después de implementar nuestro modelo. En la sección Vertex AI de la consola de Cloud, haz clic en Notebooks:

Menú Vertex AI

Allí, selecciona Instancia nueva. Luego, selecciona el tipo de instancia TensorFlow Enterprise 2.3 without GPUs:

Instancia de TFE

Usa las opciones predeterminadas y, luego, haz clic en Crear. Una vez que se crea la instancia, selecciona Abrir JupyterLab:

Abrir notebook de CAIP

4. Entrena un modelo de BigQuery ML

BigQuery ML te permite entrenar modelos de aprendizaje automático personalizados con datos almacenados en BigQuery. Puedes entrenar y obtener predicciones de todos los modelos en SQL. En este lab, utilizaremos un conjunto de datos disponible públicamente en BigQuery para predecir la probabilidad de incumplimiento de un pago con tarjeta de crédito.

Paso 1: Crea un conjunto de datos de BigQuery en tu proyecto

Para entrenar un modelo en BigQuery ML, tendrás que crear un conjunto de datos dentro de tu proyecto para almacenar este modelo. Haz clic en tu proyecto en la barra de menú de la izquierda y, luego, selecciona Crear conjunto de datos:

Crear conjunto de datos de BigQuery

En el campo ID de conjunto de datos, ingresa cc_default. Deja el resto de los campos como están y haz clic en Crear conjunto de datos.

Paso 2: Ejecuta una consulta CREATE MODEL

En el Editor de consultas de BigQuery, ejecuta la siguiente consulta CREATE MODEL para crear y entrenar un modelo de BigQuery ML en el conjunto de datos públicos que usaremos. Asegúrate de reemplazar your-project por el nombre de tu proyecto de Cloud:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

Esto creará un modelo de regresión logística que da como resultado un valor numérico de 0 a 1, lo que indica que tarda alrededor de un minuto en ejecutarse. Cuando se complete, verás el modelo debajo de tu conjunto de datos:

Detalles del modelo de BQML

Puedes hacer clic en el modelo para ver sus métricas de entrenamiento y evaluación.

5. Exporta tu modelo de BigQuery ML

Con un modelo de BQML entrenado, podemos usar la sintaxis SQL de BQML para obtener predicciones o exportar el modelo a fin de implementarlo en otro lugar. Aquí exportaremos el modelo para implementarlo en Vertex AI y entregarlo de forma escalable y obtener predicciones.

Paso 1: Crea un bucket de Cloud Storage para tu modelo

En los detalles del modelo, haz clic en Exportar modelo (Export Model):

Exportar el modelo de BQML

Se te pedirá que ingreses la ubicación de Google Cloud Storage (GCS) en la que quieres que se exporten los recursos de tu modelo. Si aún no tienes un bucket de GCS, no te preocupes. Estamos a punto de crear una. Primero, haz clic en Explorar:

Explora buckets de GCS

Luego, haz clic en el ícono + para crear un bucket nuevo:

Nuevo bucket de GCS

Asígnale un nombre único (los nombres de los buckets de almacenamiento deben ser únicos a nivel global). Haz clic en Continuar. En el siguiente paso, en Tipo de ubicación, selecciona Región y elige cualquiera de las regiones del menú desplegable:

Ubicación del bucket

Usa la clase de almacenamiento predeterminada y, en el control de acceso, asegúrate de que esté seleccionada la opción Uniforme:

Control de acceso uniforme

Haz clic en Continuar y usa los valores predeterminados para el resto de las opciones. Luego, haga clic en Crear.

Paso 2: Exporta el modelo de BQML

Una vez que hayas creado el bucket nuevo, ingresa model-assets (o el nombre que desees) en el campo Nombre y, luego, haz clic en Seleccionar:

Ruta de exportación del modelo

Luego, haz clic en Exportar. Esto creará un trabajo en BigQuery para exportar tu modelo en formato de modelo guardado de TensorFlow al bucket de GCS recién creado que especificaste. La exportación tardará aproximadamente un minuto.

Mientras se exporta el modelo, navega a la sección Storage de la consola de Cloud. Cuando se complete el trabajo, deberías ver los recursos del modelo exportados al bucket que acabas de crear en un subdirectorio model-assets:

Recursos del modelo exportados

6. Importa el modelo a Vertex AI

En este paso, haremos referencia a la ubicación de almacenamiento de GCS donde acabamos de exportar nuestros recursos del modelo para crearlo y, luego, importarlo a Vertex AI.

Paso 1: Importa el modelo

En la consola de Cloud, navega a la sección Modelos de Vertex AI. Allí, selecciona Importar:

Importar modelo

En el primer paso, asigna a tu modelo el nombre predict_default. Selecciona la misma región donde creaste tu bucket (ya sea us-central1, europe-west4 o asia-east1). Luego, haz clic en Continuar. En Configuración del modelo, mantén “Importar artefactos de modelo en un contenedor precompilado nuevo”. seleccionado.

En el menú desplegable Framework de modelo, selecciona TensorFlow. Luego, selecciona 2.3 como la versión del framework.

En el campo Ubicación del artefacto del modelo, haz clic en Explorar. Luego, haz clic en el bucket de GCS que acabas de crear y, luego, en el directorio model-assets:

Ruta de acceso de los recursos del modelo

Luego, haz clic en Importar. Importar tu modelo tardará unos minutos. Una vez que se haya creado, lo verás en la sección de modelos de la consola de Cloud:

Sección Modelos

7. Implemente un modelo en un extremo

Ahora que ya subimos el modelo, 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 al extremo, como default_pred_v1, deja la configuración de división del tráfico tal como está y, luego, selecciona un tipo de máquina para implementar tu modelo. Aquí usamos un n1-highcpu-2, pero puedes elegir el tipo de máquina que desees.

Luego, selecciona Listo y haz clic en Continuar. Deja la configuración de ubicación seleccionada tal como está y, luego, haz 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

Aquí te mostraremos cómo obtener predicciones a través de la API

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

Para mostrarte cómo obtener predicciones del modelo aquí, usaremos la instancia de notebook de Vertex 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 escribir un ejemplo de prueba en un archivo JSON llamado default-pred.json. Enviaremos este ejemplo a nuestro modelo para una predicción:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

A continuación, en la IU de Vertex, haz clic en Solicitud de muestra en el extremo que acabas de implementar:

Solicitud de muestra

Copia el código del Paso 4 de la pestaña REST en tu notebook y ejecuta la celda:

Variables de solicitud

Luego, agrega una variable para la región en la que creaste el bucket y el modelo. Reemplaza your-region en la siguiente cadena:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

Por último, copia el siguiente código en tu notebook para realizar una solicitud de predicción en tu extremo con curl:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

Deberías ver una tabla similar a la siguiente (los valores de predicción exactos varían un poco):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

Los valores en default_payment_next_month_probs muestran la probabilidad de cada clase. Para este ejemplo, nuestro modelo predice que hay una probabilidad del 81% de que esta persona no realice la configuración de forma predeterminada en su próximo pago. El valor .819 corresponde a la clase 0 (no predeterminada).

🎉 ¡Felicitaciones! 🎉

Aprendió a hacer lo siguiente:

  • Entrena un modelo en BQML
  • Exporta tu modelo de BQML a Cloud Storage
  • Importa el modelo de BQML a Vertex AI para la predicción
  • Crea un modelo de Vertex AI y, luego, impleméntalo en un extremo
  • Obtén predicciones en el extremo implementado mediante Notebooks de Vertex y curl

Para obtener más información sobre las distintas partes 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 Notebooks de la consola de Cloud, selecciona el notebook y, luego, haz clic en Detener:

Detener instancias

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 haz clic en el ícono de borrar:

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