Gestionar errores de cuota llamando a ML.GENERATE_EMBEDDING de forma iterativa
En este tutorial se muestra cómo usar el procedimiento almacenado público bqutil.procedure.bqml_generate_embeddings
de BigQuery para iterar las llamadas a la función ML.GENERATE_EMBEDDING
.
Si llamas a la función de forma iterativa, podrás solucionar los errores que se puedan volver a intentar y que se produzcan por superar las cuotas y los límites que se aplican a la función.
Para consultar 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 tutorial se explican las siguientes tareas:
- Crear un modelo remoto a partir de un
text-embedding-005
modelo. - Iterar las llamadas a la función
ML.GENERATE_EMBEDDING
usando el modelo remoto y la tabla de datos públicosbigquery-public-data.bbc_news.fulltext
con el procedimiento almacenadobqutil.procedure.bqml_generate_embeddings
.
Permisos obligatorios
Para completar este tutorial, necesitas los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Crear y usar conjuntos de datos, conexiones y modelos de BigQuery:
Administrador de BigQuery (
roles/bigquery.admin
). - Concede permisos a la cuenta de servicio de la conexión: administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin
).
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas descritas en este documento. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
- Crea un conjunto de datos:
bigquery.datasets.create
- Crear, delegar y usar una conexión:
bigquery.connections.*
- Definir la conexión predeterminada:
bigquery.config.*
- Define los permisos de la cuenta de servicio:
resourcemanager.projects.getIamPolicy
yresourcemanager.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 u otros roles predefinidos.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
- 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 costes basada en el uso previsto,
utiliza la calculadora de precios.
Para obtener más información sobre los precios de BigQuery, consulta la página Precios de BigQuery.
Para obtener más información sobre los precios de Vertex AI, consulta los precios de Vertex AI.
Antes de empezar
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tus modelos y datos de muestra:
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haga clic en > Crear conjunto de datos.
Ver accionesEn la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, introduce
target_dataset
.En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).
Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
Crear el modelo de generación de inserciones de texto
Crea un modelo remoto que represente un modelo de Vertex AI
text-embedding-005
alojado:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente instrucció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, el modelo
embedding
aparece en el conjunto de datossample
del panel Explorador. Como la consulta usa una instrucciónCREATE MODEL
para crear un modelo, no hay resultados de la consulta.
Ejecutar el procedimiento almacenado
Ejecuta el procedimiento almacenado bqutil.procedure.bqml_generate_embeddings
, que
itera las llamadas a la función ML.GENERATE_EMBEDDING
con el modelo target_dataset.embedding_model
y la
tabla de datos públicos bigquery-public-data.bbc_news.fulltext
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente instrucció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 );
Sustituye
PROJECT_ID
por el ID del proyecto que vas a usar en este tutorial.El procedimiento almacenado crea una tabla
target_dataset.news_body_embeddings
para contener el resultado de la funciónML.GENERATE_EMBEDDING
.Cuando la consulta termine de ejecutarse, comprueba 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 instrucción:SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
La consulta devuelve el mensaje
No data to display
.
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.