Realiza predicciones con modelos remotos en Vertex AI

En este instructivo, registrarás un extremo de Vertex AI como modelo remoto en BigQuery. Luego, usas 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 a 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.

Es posible que los usuarios de Google Cloud nuevos cumplan con los requisitos para acceder a una prueba gratuita.

Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  5. Habilita las APIs de BigQuery, Vertex AI, Cloud Storage y BigQuery Connection.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

  6. Asegúrate de tener los permisos necesarios para realizar las tareas de este documento.

Roles obligatorios

Si creas un proyecto nuevo, serás el propietario y se te otorgarán todos los permisos de IAM necesarios para completar este instructivo.

Si usas un proyecto existente, haz lo siguiente.

Asegúrate de tener los siguientes roles en el proyecto:

Verifica los roles

  1. En la consola de Google Cloud , dirígete a la página IAM.

    Ir a IAM
  2. Selecciona el proyecto.
  3. En la columna Principal, busca todas las filas que te identifiquen a ti o a un grupo en el que se te incluya. Para saber en qué grupos estás incluido, comunícate con tu administrador.

  4. Para todas las filas en las que se te especifique o se te incluya, verifica la columna Rol para ver si la lista de roles incluye los roles necesarios.

Otorga los roles

  1. En la consola de Google Cloud , dirígete a la página IAM.

    Ir a IAM
  2. Selecciona el proyecto.
  3. Haz clic en Otorgar acceso.
  4. 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.

  5. Haz clic en Seleccionar un rol y, luego, busca el rol.
  6. Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega uno más.
  7. 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 reseñas de películas de IMDB en texto sin formato. El modelo usa la entrada de texto de las opiniones de películas y muestra puntuaciones de opiniones entre cero y uno. Cuando importas el modelo en el Registro de modelos, usas un contenedor de TensorFlow compilado previamente.

Sigue estos pasos para importar el modelo.

  1. En la Google Cloud consola, ve a la página Model Registry de Vertex AI.

    Ir al registro de modelos

  2. Haz clic en Importar.

  3. En Paso uno: Nombre y región, haz lo siguiente:

    1. Selecciona Importar como modelo nuevo.

    2. En Nombre, ingresa bert_sentiment.

    3. En Descripción, ingresa BQML tutorial model.

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

    5. Haz clic en Continuar.

  4. En Paso dos: Configuración del modelo, haz lo siguiente:

    1. Selecciona Importar artefactos del modelo en un contenedor precompilado nuevo.

    2. En la sección Configuración de contenedor compilado previamente, haz lo siguiente:

      1. En Framework del modelo, elige TensorFlow.

      2. En Versión del framework del modelo, elige 2.15.

      3. En Tipo de acelerador, elige GPU.

      4. En Ubicación del artefacto del modelo, ingresa gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/.

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

  1. En la consola de Google Cloud , ve a la página Model Registry de Vertex AI.

    Ir al registro de modelos

  2. En la columna Nombre, haz clic en bert_sentiment.

  3. Haz clic en la pestaña Implementar y probar.

  4. Haz clic en Implementar en el extremo.

  5. Para el paso uno, Define tu extremo, haz lo siguiente:

    1. Haz clic en Crear extremo nuevo.

    2. En Nombre del extremo, ingresa bert sentiment endpoint.

    3. Conserva los demás valores predeterminados y haz clic en Continuar.

  6. En el paso dos, Configuración del modelo, haz lo siguiente:

    1. En la sección Configuración de procesamiento, en 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.

    2. En la sección Opciones de ajuste avanzadas, en Tipo de máquina, elige Estándar (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 configuran automáticamente.

    3. Conserva los demás valores predeterminados y haz clic en Implementar.

      Cuando el modelo se implementa en el extremo, el estado cambia a Active.

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

  1. En la consola de Google Cloud , ve a la página 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.

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

    • 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 --dataset.

  1. Crea un conjunto de datos llamado bqml_tutorial con la ubicación de los datos establecida en US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 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 en BigQuery

Debes tener una conexión de recursos de Cloud para conectarte a un extremo de Vertex AI.

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar.

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

  3. En el panel Explorador, haz clic en Agregar datos.

    Se abrirá el diálogo Agregar datos.

  4. En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Bases de datos.

    También puedes ingresar Vertex AI en el campo Buscar fuentes de datos.

  5. En la sección Fuentes de datos destacadas, haz clic en Vertex AI.

  6. Haz clic en la tarjeta de solución Modelos de Vertex AI: Federación de BigQuery.

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

  8. En el campo ID de conexión, ingresa bqml_tutorial.

  9. Verifica que esté seleccionada la opción Multirregión: EE.UU..

  10. Haz clic en Crear conexión.

  11. En la parte inferior de la ventana, haz clic en Ir a la conexión. Como alternativa, en el panel Explorador, haz clic en Conexiones y, luego, en us.bqml_tutorial.

  12. En el panel Información de conexión, copia el ID de la cuenta de servicio. Necesitas este ID cuando configuras los permisos para 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

  1. Crear una conexión

    bq mk --connection --location=US --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE bqml_tutorial

    Reemplaza PROJECT_ID por el ID del proyecto deGoogle 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...
    
  2. 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 lo siguiente:

    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:

  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, ingresa el ID de la cuenta de servicio de la conexión de recursos en la nube que copiaste antes.

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

  5. 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 instrucción CREATE MODEL, consulta La instrucción CREATE MODEL para modelos remotos a través de 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 crees el modelo remoto, necesitarás el ID del extremo que se generó cuando implementaste el modelo en Vertex AI. Además, los nombres y tipos de los campos de entrada y salida deben ser exactamente los mismos que los de la entrada y salida del modelo de Vertex AI. En este ejemplo, la entrada es un STRING de texto y la salida es un ARRAY de tipo FLOAT64.

Console

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

    Ir a BigQuery

  2. En Crear nuevo, haz clic en Consulta en SQL.

  3. 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<FLOAT64>)
    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 aparece en el panel Recursos. Los modelos se indican con el ícono de modelo: í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

  1. Para crear el modelo remoto, ingresa la siguiente instrucció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<FLOAT64>)
    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.
  2. Después de crear el modelo, verifica que aparezca en el conjunto de datos:

    bq ls -m bqml_tutorial

    El resultado es similar a lo siguiente:

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

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

    Ir a BigQuery

  2. En la sección Crear nuevo, haz clic en Consulta en SQL.

  3. 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 búsqueda deberían ser similares a los siguientes:

    Resultados de la consulta

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

Realiza una limpieza

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

  1. En la Google Cloud consola, 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.

gcloud

    Borra un Google Cloud proyecto:

    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:

  1. Borra el modelo.

  2. Opcional: Borra el conjunto de datos.

  3. Anula la implementación del modelo y borra el extremo.

  4. Borra el modelo de Model Registry.

  5. Borra la conexión de recurso de Cloud.

¿Qué sigue?