Realiza predicciones con modelos remotos en Vertex AI

Descripción general

Puedes registrar un extremo de Vertex AI como un 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 entradas de texto (reseñas 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 de modelo remoto de BQML para ver un instructivo de GitHub de versión de Python.

Descripción general del flujo de trabajo

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.

  1. Haz clic aquí para habilitar las APIs de Vertex AI, Cloud Storage y conexiones de recursos en la nube de BigQuery.
  2. 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 de BERT mientras se agrega 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 instructions para implementar el modelo desde 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

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Para crear una conexión, haz clic en Agregar y, luego, en Conexiones a fuentes de datos externas.

  3. En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).

  4. En el campo ID de conexión, escribe un nombre para tu conexión.

  5. Haga clic en Crear conexión.

  6. Haz clic en Ir a la conexión.

  7. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

bq

  1. 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ón
    • PROJECT_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...
    
  2. 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 {}
}        
Reemplaza lo siguiente:

  • 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

A fin de otorgar a la cuenta de servicio de la conexión un rol adecuado para acceder al servicio de Vertex AI, sigue estos pasos:

  1. Ir a la página IAM y administración

    Ir a IAM y administración

  2. Haz clic en Otorgar acceso.

  3. En el campo Principales nuevas, escribe el ID de la cuenta de servicio que copiaste antes.

  4. En el campo Selecciona un rol, elige Vertex AI y, luego, selecciona Rol del usuario de Vertex AI.

  5. Haz clic en Guardar.

Crea el conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haz clic en Ver acciones > Crear conjunto de datos.

    Crea un conjunto de datos.

  4. 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.

      Página Crear un conjunto de datos

Crea un modelo remoto de BigQuery ML

Para ver el esquema de entrada y salida del modelo de TensorFlow, envía una solicitud al extremo:

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 los campos de entrada y salida deben ser exactamente los mismos que los de entrada y salida de Vertex AI.

Para el modelo con un solo resultado, 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 mediante 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 en BigQuery mediante 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 una 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 multirregión 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 las 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

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.