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, lo exportarás y lo implementarás 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 modelo de 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. 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 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

Desde allí, selecciona Instancia nueva. Luego, selecciona el tipo de instancia TensorFlow Enterprise 2.3 sin GPUs:

Instancia de TFE

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

Abre el notebook de CAIP

4. Entrena un modelo de BigQuery ML

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

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

Para entrenar un modelo en BigQuery ML, deberás 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:

Crea un 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 generará un valor numérico entre 0 y 1, lo que indica que tardará aproximadamente un minuto en ejecutarse. Cuando se complete, verás el modelo en 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 de SQL de BQML para obtener predicciones o exportar el modelo para implementarlo en otro lugar. Aquí exportaremos nuestro modelo para poder implementarlo en Vertex AI y entregar el modelo 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:

Exporta el modelo de BQML

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

Explora los buckets de GCS

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

Bucket de GCS nuevo

Asigna 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 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 creaste tu bucket nuevo, ingresa model-assets (o lo que quieras) en el campo Nombre y, luego, haz clic en Seleccionar:

Ruta de acceso de exportación del modelo

Luego, haz clic en Exportar. Esto creará un trabajo en BigQuery para exportar tu modelo en el 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 tu 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 exportado

6. Importa el modelo a Vertex AI

En este paso, haremos referencia a la ubicación de almacenamiento de GCS en la que acabamos de exportar los recursos del modelo para crear e importar el modelo a Vertex AI.

Paso 1: Importa el modelo

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

Importar modelo

En el primer paso, asígnale el nombre predict_default a tu modelo. Selecciona la misma región en la que creaste tu bucket (us-central1, europe-west4 o asia-east1). Luego, haz clic en Continuar. En Configuración del modelo, mantén seleccionada la opción "Importar artefactos del modelo en un contenedor precompilado nuevo".

En el menú desplegable Framework del 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, ingresa al bucket de GCS que acabas de crear y haz clic en el directorio model-assets:

Ruta de acceso a los recursos del modelo

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

Sección Modelos

7. Implemente un modelo en un extremo

Ahora que subimos nuestro modelo, 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 default_pred_v1, no modifiques los parámetros de división del tráfico y 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 quieras.

Luego, selecciona Listo y haz clic en Continuar. Deje la configuración de ubicación como está y haga 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í 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 en el selector:

Abrir notebook

En tu 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 obtener 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 Sample Request para 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 tu bucket y tu modelo. Reemplaza your-region en la siguiente cadena:

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

Por último, realiza una solicitud de predicción a tu extremo con curl. Para ello, copia el siguiente código en tu notebook:

!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 un resultado similar al siguiente (los valores de predicción exactos variarán ligeramente):

{
  "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. En este ejemplo, nuestro modelo predice que hay un 81% de probabilidades de que esta persona no incumpla 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 tu extremo implementado a través de Vertex Notebooks y curl

Para 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 Notebooks de la consola de Cloud, selecciona el notebook y, luego, haz clic en Detener:

Detener instancias

Si quieres borrar el notebook, 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 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