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.

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.

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:

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

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

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:

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:

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:

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:

Luego, haz clic en el ícono + para crear un bucket 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:

Usa la clase de almacenamiento predeterminada y, en Control de acceso, asegúrate de que esté seleccionada la opción 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:

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:

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:

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:

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:

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:

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:

¡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:

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:

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

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:

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:

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):
