Realiza predicciones con modelos remotos en Vertex AI
Puedes registrar un extremo de Vertex AI como modelo remoto y llamarlo directamente desde BigQuery con ML.PREDICT
.
Esto puede ser útil cuando un modelo es demasiado grande para importar a BigQuery o cuando deseas usar un solo punto de inferencia para casos de uso en línea, por lotes y de microlotes.
En este instructivo, se usa un modelo de análisis de opiniones personalizado mediante el ajuste de un modelo BERT con reseñas de películas de IMDB de texto sin formato. El modelo resultante usa la entrada de texto (opiniones de películas) y muestra puntuaciones de opiniones entre (0, 1). El modelo se registra en Vertex AI Model Registry y se entrega en un extremo de Vertex AI. Desde allí, el modelo se agrega a BigQuery como modelo remoto. Puedes usar el modelo remoto en BigQuery a fin de obtener predicciones de opiniones para una columna de texto (reseñas de películas en la tabla bigquery-public-data.imdb.reviews
de 100,000 filas).
Consulta el Instructivo del modelo remoto de BQML para ver un instructivo de GitHub de la versión de Python.
Descripción general del flujo de trabajo
- Configuración del instructivo
- Cree un modelo de AA
- Implementa el modelo en Vertex AI
- Crea un modelo remoto de BigQuery ML
- Limpieza
Configuración del instructivo
En este instructivo, se usan los siguientes componentes facturables de Google Cloud: Cloud Storage, Vertex AI y BigQuery. Al final del instructivo, quitarás los componentes facturables.
- Haz clic aquí para habilitar las APIs de Vertex AI, Cloud Storage y conexiones de recursos en la nube de BigQuery.
- Cloud Storage: para crear un bucket en la multirregión
US
predeterminada sigue estas instrucciones.
Cree un modelo de AA
Crea un modelo con el Instructivo de modelo remoto de BQML, que incluye un modelo de predicción de análisis de opiniones creado mediante la optimización de un modelo BERT mientras agregas una capa de clasificación.
Ya entrenamos un modelo de muestra y lo subiste a gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
para que lo uses directamente.
Implementa el modelo en Vertex AI
Sigue las instructions para registrar el modelo en Vertex AI Model Registry.
Sigue las instrucciones para implementar el modelo de Vertex AI Model Registry en un extremo de Vertex AI.
Recomendamos configurar la cantidad máxima de nodos de procesamiento. Esto activa la capacidad de ajuste de escala automático en Vertex AI y ayuda al extremo a procesar más solicitudes cuando tu tabla de datos de BigQuery tiene una gran cantidad de filas.
Modelo remoto de BigQuery ML
La creación de un modelo remoto de BigQuery ML tiene dos componentes: una conexión de recurso de la nube de BigQuery y un modelo remoto de BigQuery que usa la conexión.
Crea una conexión de recurso de Cloud de BigQuery
Debes tener una conexión de recursos de Cloud para conectarte a Vertex AI.
Selecciona una de las opciones siguientes:
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, escribe un nombre para tu conexión.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, crea una conexión:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
El parámetro
--project_id
anula el proyecto predeterminado.Reemplaza lo siguiente:
REGION
: tu región de conexiónPROJECT_ID
: El ID del proyecto de Google Cloud.CONNECTION_ID
: Es un ID para tu 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.
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.REGION.CONNECTION_ID
El resultado es similar al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Agrega la siguiente sección a tu archivo main.tf
.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: Es un ID para tu conexión.PROJECT_ID
: El ID del proyecto de Google Cloud.REGION
: tu región de conexión
Configura el acceso
Otorga a la cuenta de servicio de la conexión el rol de usuario de Vertex AI. Debes otorgar este rol en el mismo proyecto que planeas especificar en la URL del extremo del modelo remoto (o tu proyecto del modelo si usas el extremo de la versión corta) en la sección Crea un modelo remoto de BigQuery ML. Si otorgas el rol en un proyecto diferente, se produce el error bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
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, escribe el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona un rol, elige Vertex AI y, luego, selecciona Rol del usuario de Vertex AI.
Haz clic en Guardar.
Crea el conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:
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.
Crea un modelo remoto de BigQuery ML
Para ver el esquema de entrada y salida del modelo de TensorFlow mediante el envío de una solicitud al extremo, haz lo siguiente:
Ejemplo de una solicitud:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:predict -d "{'instances': [{ 'text': 'This is an amazing movie'}, { 'text': 'The movie was terrible'}]}"
Ejemplo de una respuesta:
{
"predictions": [
[
[ 0.999410391 ]
],
[
[ 0.000628352049 ]
]
]
}
Cuando creas un modelo remoto, los nombres y tipos de campos de entrada y salida deben ser los mismos que los de Vertex AI.
Para el modelo con una sola salida, Vertex AI no mostrará el nombre del campo. En CREATE MODEL
, puedes especificar cualquier nombre de campo.
En el siguiente ejemplo, se muestra cómo crear un modelo remoto con una conexión:
CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`
INPUT (text STRING)
OUTPUT(scores ARRAY<FLOAT64>)
REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
OPTIONS(endpoint = 'ENDPOINT_URL')
Obtén predicciones con ML.PREDICT
Obtén predicciones del modelo remoto dentro de BigQuery con la función ML.PREDICT
. Aquí 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 sus solicitudes de forma predeterminada.
SELECT *
FROM ML.PREDICT (
MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`,
(
SELECT review as text
FROM `bigquery-public-data.imdb.reviews`
LIMIT 10000
)
)
Regiones admitidas
Hay dos tipos de ubicaciones en BigQuery:
- Una región es un lugar geográfico específico, como Londres.
- Una multirregión es un área geográfica grande, como Estados Unidos, que contiene dos o más lugares geográficos.
Unirregional
En un conjunto de datos de una sola región de BigQuery, solo puedes crear un modelo remoto que use un extremo de Vertex AI implementado en la misma región.
Un modelo remoto en la región individual us-central1 de BigQuery solo puede usar un Vertex AI en us-central1
.
Por lo tanto, para regiones individuales, los modelos remotos solo son compatibles en regiones que admiten Vertex AI y BigQuery.
Multirregiones
En una multirregión de BigQuery (US
, EU
) solo puedes crear un modelo remoto que use un modelo remoto implementado en una región dentro de la misma área geográfica grandeUS
, EU
). Por ejemplo: un modelo remoto en la multirregión US de BigQuery solo puede usar un extremo de Vertex AI implementado en cualquier región individual en el área geográfica de US, como us-central1
, us-east4
, us-west2
, etcétera.
Un modelo remoto en la multirregional EU de BigQuery solo puede usar un extremo de Vertex AI implementado en cualquier región individual de los estados miembros de la Unión Europea, como europe-north1
, europe-west3
, etcétera.
Para obtener más información sobre regiones y multirregiones de BigQuery, consulta la página Ubicaciones de conjuntos de datos. Para obtener más información sobre las regiones de Vertex AI, consulta Ubicaciones de Vertex AI.
Usa los Controles del servicio de VPC
Controles del servicio de VPC es una función de Google Cloud que te permite configurar un perímetro seguro para protegerte del robo de datos. Si deseas usar los Controles del servicio de VPC con modelos remotos para obtener seguridad adicional, sigue la guía de Controles del servicio de VPC para crear un perímetro de servicio.
Agrega el proyecto de BigQuery de la consulta con el modelo remoto en el perímetro. Agrega el proyecto de extremo al perímetro y configura la API de Vertex AI en los servicios restringidos según el tipo de extremo. Para obtener más detalles, consulta los Controles del servicio de VPC de Vertex AI.
Limpieza
- 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.