Maneja errores de cuota mediante una llamada a ML.GENERATE_EMBEDDING de forma iterativa

En este instructivo, se muestra cómo usar el procedimiento almacenado público bqutil.procedure.bqml_generate_embeddings de BigQuery para iterar a través de llamadas a la función ML.GENERATE_EMBEDDING. Llamar a la función de forma iterativa te permite abordar cualquier error que se pueda reintentar que se produzca debido a que se superaron las cuotas y los límites que se aplican a la función.

Para revisar el código fuente del procedimiento almacenado bqutil.procedure.bqml_generate_embeddings en GitHub, consulta bqml_generate_embeddings.sqlx. Para obtener más información sobre los parámetros y el uso del procedimiento almacenado, consulta el archivo readme.

En este instructivo, se te guiará por las siguientes tareas:

  • Crear un modelo remoto sobre un modelo text-embedding-005.
  • Itera a través de llamadas a la función ML.GENERATE_EMBEDDING mediante el modelo remoto y la tabla de datos públicos bigquery-public-data.bbc_news.fulltext con el procedimiento almacenado bqutil.procedure.bqml_generate_embeddings.

Permisos necesarios

Para ejecutar este instructivo, necesitas los siguientes roles de Identity and Access Management (IAM):

  • Crear y usar conjuntos de datos, conexiones y modelos de BigQuery: Administrador de BigQuery (roles/bigquery.admin)
  • Otorga permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin).

Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

  • Crea un conjunto de datos: bigquery.datasets.create
  • Crea, delega y usa una conexión: bigquery.connections.*
  • Establece la conexión predeterminada: bigquery.config.*
  • Configura los permisos de la cuenta de servicio: resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy
  • Crea un modelo y ejecuta la inferencia:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Costos

En este documento, usarás los siguientes componentes facturables de Trusted Cloud by S3NS:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Vertex AI: You incur costs for calls to the Vertex AI model.

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios Trusted Cloud nuevos cumplan con los requisitos para obtener una prueba gratuita.

Si deseas obtener más información sobre los precios de BigQuery, consulta Precios de BigQuery.

Para obtener más información sobre los precios de Vertex AI, consulta Precios de Vertex AI.

Antes de comenzar

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

Crea un conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tus modelos y datos de muestra:

  1. En la consola de Trusted 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:

    1. En ID del conjunto de datos, ingresa target_dataset.

    2. En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).

    3. Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.

Crea el modelo de generación de embedding de texto

Crea un modelo remoto que represente un modelo text-embedding-005 de Vertex AI alojado:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CREATE OR REPLACE MODEL `target_dataset.embedding_model`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'text-embedding-005');

    La consulta tarda varios segundos en completarse, después de eso, el modelo embedding aparece en el conjunto de datos sample en el panel Explorador. Debido a que la consulta usa una declaración CREATE MODEL para crear un modelo, no hay resultados de consultas.

Ejecuta el procedimiento almacenado

Ejecuta el procedimiento almacenado bqutil.procedure.bqml_generate_embeddings, que itera a través de llamadas a la función ML.GENERATE_EMBEDDING mediante el modelo target_dataset.embedding_model y la tabla de datos públicos bigquery-public-data.bbc_news.fulltext:

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

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    CALL `bqutil.procedure.bqml_generate_embeddings`(
        "bigquery-public-data.bbc_news.fulltext",            -- source table
        "PROJECT_ID.target_dataset.news_body_embeddings",  -- destination table
        "PROJECT_ID.target_dataset.embedding_model",       -- model
        "body",                                              -- content column
        ["filename"],                                        -- key columns
        '{}'                                                 -- optional arguments encoded as a JSON string
    );

    Reemplaza PROJECT_ID por el ID del proyecto que estás usando para este instructivo.

    El procedimiento almacenado crea una tabla target_dataset.news_body_embeddings para contener el resultado de la función ML.GENERATE_EMBEDDING.

  3. Cuando la consulta termine de ejecutarse, confirma que no haya filas en la tabla target_dataset.news_body_embeddings que contengan un error que se pueda volver a intentar. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT *
    FROM `target_dataset.news_body_embeddings`
    WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';

    La consulta muestra el mensaje No data to display.

Limpia

  1. In the Trusted 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.