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.
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 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:
Allí, selecciona Instancia nueva. Luego, selecciona el tipo de instancia TensorFlow Enterprise 2.3 without GPUs:
Usa las opciones predeterminadas y, luego, 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 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:
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:
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):
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:
Luego, haz clic en el ícono + para crear un bucket nuevo:
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:
Usa la clase de almacenamiento predeterminada y, en el 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 hayas creado el bucket nuevo, ingresa model-assets
(o el nombre que desees) 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 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
:
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:
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:
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:
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:
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:
¡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:
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:
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 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:
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:
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):