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

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

  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. Haz clic en Crear conexión (Create connection).

  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 a este:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Usa el recurso google_bigquery_connection.

.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

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:

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.