En este instructivo, registrarás un extremo de Vertex AI como un modelo remoto
en BigQuery. Luego, usa la función ML.PREDICT
para hacer predicciones con el modelo remoto.
Puedes usar modelos remotos cuando un modelo es demasiado grande para importarlo a BigQuery. También son útiles cuando deseas tener un solo punto de inferencia para casos de uso en línea, por lotes y de microlotes.
Objetivos
- Importa un modelo de TensorFlow previamente entrenado al Vertex AI Model Registry.
- Implementa el modelo en un extremo de Vertex AI.
- Crea una conexión de recursos de Cloud.
- Usa la sentencia
CREATE MODEL
para crear un modelo remoto en BigQuery. - Usa la función
ML.PREDICT
para hacer predicciones con el modelo remoto.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
- Asegúrate de tener los permisos necesarios para realizar las tareas de este documento.
Roles obligatorios
Si creas un proyecto nuevo, eres el propietario y se te otorgan todos los permisos de IAM necesarios para completar este instructivo.
Si usas un proyecto existente, haz lo siguiente.
Make sure that you have the following role or roles on the project:
- BigQuery Studio Admin (
roles/bigquery.studioAdmin
) - Vertex AI User (
roles/aiplatform.user
) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Para obtener más información sobre los permisos de IAM en BigQuery, consulta Permisos de BigQuery.
Importa el modelo a Vertex AI Model Registry
En este instructivo, usarás un modelo de TensorFlow previamente entrenado que está disponible en Cloud Storage en gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
. El
bucket de Cloud Storage se encuentra en la ubicación multirregional US
.
El modelo es un modelo de TensorFlow llamado saved_model.pb
. Es un modelo de análisis de opiniones personalizado que se creó ajustando un modelo BERT con opiniones sobre películas de IMDB de texto sin formato. El modelo usa la entrada de texto de las opiniones de las películas y muestra puntuaciones de opiniones entre cero y uno. Cuando importas el
modelo al Registro de modelos, usas un contenedor de
TensorFlow compilado previamente.
Sigue estos pasos para importar el modelo.
En la consola de Google Cloud, ve a la página Model Registry de Vertex AI.
Haz clic en Importar.
En el Paso uno: Nombre y región, haz lo siguiente:
Selecciona Importar como modelo nuevo.
En Nombre, ingresa
bert_sentiment
.En Descripción, ingresa
BQML tutorial model
.En Región, selecciona
us-central1
. Debes elegir una región de EE.UU. porque el bucket de Cloud Storage se encuentra en la ubicación multirregionalUS
.Haz clic en Continuar.
En el Paso dos: Configuración del modelo, haz lo siguiente:
Selecciona Importar artefactos del modelo en un contenedor precompilado nuevo.
En la sección Configuración de contenedor compilado previamente, haz lo siguiente:
En Framework de modelo, elige TensorFlow.
En Versión del framework del modelo, elige 2.15.
En Tipo de acelerador, elige GPU.
En Ubicación del artefacto del modelo, ingresa
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
.Deja los valores predeterminados para todas las opciones restantes y haz clic en Importar.
Una vez que se complete la importación, tu modelo aparecerá en la página Model Registry.
Implementa el modelo en un extremo de Vertex AI
Sigue estos pasos para implementar el modelo en un extremo.
En la consola de Google Cloud, ve a la página Model Registry de Vertex AI.
En la columna Nombre, haz clic en
bert_sentiment
.Haz clic en la pestaña Implementar y probar.
Haz clic en Implementar en el extremo.
Para el paso uno, Define tu extremo, haz lo siguiente:
Haz clic en Crear extremo nuevo.
En Nombre del extremo, ingresa
bert sentiment endpoint
.Conserva los demás valores predeterminados y haz clic en Continuar.
En el paso dos, Configuración del modelo, haz lo siguiente:
En la sección Configuración de procesamiento, para Cantidad mínima de nodos de procesamiento, ingresa
1
. Esta es la cantidad de nodos que deben estar disponibles para el modelo en todo momento.En la sección Advanced scaling options, en Machine type, elige Standard (n1-standard-2). Como elegiste GPU como el tipo de acelerador cuando importaste el modelo, después de elegir el tipo de máquina, el tipo de acelerador y el recuento de aceleradores se establecen automáticamente.
Conserva los valores predeterminados restantes y haz clic en Implementar.
Cuando el modelo se implementa en el extremo, el estado cambia a
Active
.Copia el ID de extremo numérico en la columna ID y el valor en la columna Región. Los necesitarás más tarde.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).
Los conjuntos de datos públicos se almacenan en la multirregión
US
. Para que sea más simple, almacena tu conjunto de datos en la misma ubicación.- Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el comando bq mk
con la marca --location
. Para obtener una lista completa de los parámetros posibles, consulta la
referencia del
comando bq mk --dataset
.
Crea un conjunto de datos llamado
bqml_tutorial
con la ubicación de los datos establecida enUS
y una descripción deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
En lugar de usar la marca
--dataset
, el comando usa el acceso directo-d
. Si omites-d
y--dataset
, el comando crea un conjunto de datos de manera predeterminada.Confirma que se haya creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert
con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea una conexión de recurso de Cloud de BigQuery
Debes tener una conexión de recursos de Cloud para conectarte a un extremo de Vertex AI.
Console
Ve a la página de BigQuery.
Para crear una conexión, haz clic en
Agregar y, luego, en Conexiones a fuentes de datos externas.En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, ingresa
bqml_tutorial
.Verifica que esté seleccionada la opción Multirregión: EE.UU..
Haz clic en Crear conexión (Create connection).
En la parte inferior de la ventana, haz clic en Ir a la conexión. Como alternativa, en el panel Explorador, expande Conexiones externas y, luego, haz clic en
us.bqml_tutorial
.En el panel Información de conexión, copia el ID de la cuenta de servicio. Necesitas este ID cuando configures los permisos de la conexión. Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.
bq
Crear una conexión
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
Reemplaza
PROJECT_ID
con tu ID del proyecto de Google Cloud. El parámetro--project_id
anula el proyecto predeterminado.Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.
Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.us.bqml_tutorial
El resultado es similar a este:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Configura el acceso a la conexión
Otorga el rol de usuario de Vertex AI a la cuenta de servicio de la conexión de recursos de Cloud. Debes otorgar este rol en el mismo proyecto en el que creaste el extremo del modelo remoto.
Para otorgar el rol, sigue estos pasos:
Ir a la página IAM y administración
Haz clic en
Otorgar acceso.En el campo Principales nuevas, ingresa el ID de la cuenta de servicio de la conexión de recursos de Cloud que copiaste antes.
En el campo Selecciona un rol, elige Vertex AI y, luego, selecciona Usuario de Vertex AI.
Haz clic en Guardar.
Crea un modelo remoto de BigQuery ML
Para crear un modelo remoto de BigQuery ML, usa la sentencia CREATE MODEL
con la cláusula REMOTE WITH CONNECTION
. Para obtener más información sobre la sentencia CREATE MODEL
, consulta La sentencia CREATE MODEL para modelos remotos en modelos personalizados.
Creas tu modelo en la ubicación multirregión US
. En un conjunto de datos multirregión de BigQuery (US
, EU
), solo puedes crear un modelo remoto que se conecte a un extremo implementado en una región dentro de la misma ubicación multirregión (US
, EU
).
Cuando creas el modelo remoto, necesitas el ID del extremo que se generó cuando implementaste el modelo en Vertex AI. Además, los nombres y tipos de campos de entrada y salida deben ser exactamente los mismos que los de Vertex AI. En este ejemplo, la entrada es un STRING
de texto y el resultado es un ARRAY
de tipo FLOAT64
.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En Crear, haz clic en Consulta en SQL.
En el editor de consultas, ingresa esta sentencia
CREATE MODEL
y, luego, haz clic en Ejecutar:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID') Reemplaza lo siguiente:
- PROJECT_ID: Es el nombre de tu proyecto.
- ENDPOINT_ID: Es el ID del extremo que copiaste antes.
Cuando se complete la operación, verás un mensaje similar a
Successfully created model named bert_sentiment
.Tu nuevo modelo aparecerá en el panel Recursos. Los modelos se indican con el ícono del modelo:
.
Si seleccionas el modelo nuevo en el panel Recursos, la información sobre el modelo aparece debajo del Editor de consultas.
bq
Para crear el modelo remoto, ingresa la siguiente declaración
CREATE MODEL
:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY
) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')" Reemplaza lo siguiente:
- PROJECT_ID: Es el nombre de tu proyecto.
- ENDPOINT_ID: Es el ID del extremo que copiaste antes.
Después de crear el modelo, verifica que aparezca en el conjunto de datos:
bq ls -m bqml_tutorial
El resultado es similar a este:
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
Obtén predicciones con ML.PREDICT
Usas la función ML.PREDICT
para obtener predicciones de sentimiento del modelo remoto. La entrada es una columna de texto (review
) que contiene opiniones de películas de la tabla bigquery-public-data.imdb.reviews
.
En este ejemplo, se seleccionan 10,000 registros y se envían para la predicción. El modelo remoto tiene un tamaño de lote de 128 instancias para las solicitudes de forma predeterminada.
Console
En la consola de Google Cloud, ve a la página de BigQuery.
En la sección Crear, haz clic en Consulta en SQL.
En el editor de consultas, ingresa esta consulta que usa la función
ML.PREDICT
y, luego, haz clic en Ejecutar.SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
Los resultados de la consulta deberían ser similares a los siguientes:
bq
Ingresa este comando para ejecutar la consulta que usa ML.PREDICT
.
bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
Console
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Borra los recursos individuales
Como alternativa, para quitar los recursos individuales que se usan en este instructivo, sigue estos pasos:
¿Qué sigue?
- Para obtener una descripción general de BigQuery ML, consulta Introducción a la IA y el aprendizaje automático en BigQuery ML.
- Para obtener más información sobre el uso de la sentencia
CREATE MODEL
para modelos remotos, consulta La sentencia CREATE MODEL para modelos remotos sobre modelos personalizados. - Para obtener más información sobre el uso de un notebook de BigQuery, consulta Introducción a los notebooks.
- Para obtener más información sobre regiones y multirregiones de BigQuery, consulta la página Ubicaciones compatibles.
- Para obtener más información sobre la importación de modelos en Vertex AI Model Registry, consulta Cómo importar modelos a Vertex AI.
- Para obtener más información sobre el control de versiones de modelos en Vertex AI Model Registry, consulta Control de versiones de modelos con Model Registry.
- Para obtener información sobre el uso de los Controles del servicio de VPC de Vertex AI, consulta Controles del servicio de VPC con Vertex AI.