Gestionar errores de cuota llamando a ML.GENERATE_TEXT de forma iterativa
En este tutorial se muestra cómo usar el procedimiento almacenado público bqutil.procedure.bqml_generate_text
de BigQuery para iterar las llamadas a la función ML.GENERATE_TEXT
.
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_text
en GitHub, consulta bqml_generate_text.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
gemini-2.0-flash
modelo. - Iterar las llamadas a la función
ML.GENERATE_TEXT
usando el modelo remoto y la tabla de datos públicosbigquery-public-data.bbc_news.fulltext
con el procedimiento almacenadobqutil.procedure.bqml_generate_text
.
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
sample
.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 texto
Crea un modelo remoto que represente un modelo de Vertex AI
gemini-2.0-flash
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 `sample.generate_text` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.0-flash');
La consulta tarda varios segundos en completarse. Después, el
generate_text
modelo 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 consulta.
Ejecutar el procedimiento almacenado
Ejecuta el procedimiento almacenado bqutil.procedure.bqml_generate_text
, que itera a través de las llamadas a la función ML.GENERATE_TEXT
mediante el modelo sample.generate_text
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_text`( "bigquery-public-data.bbc_news.fulltext", -- source table "PROJECT_ID.sample.news_generated_text", -- destination table "PROJECT_ID.sample.generate_text", -- model "body", -- content column ["filename"], -- key columns '{}' -- optional arguments );
Sustituye
PROJECT_ID
por el ID del proyecto que vas a usar en este tutorial.El procedimiento almacenado crea una tabla
sample.news_generated_text
para contener el resultado de la funciónML.GENERATE_TEXT
.Cuando la consulta termine de ejecutarse, comprueba que no haya filas en la tabla
sample.news_generated_text
que contengan un error que se pueda volver a intentar. En el editor de consultas, ejecuta la siguiente instrucción:SELECT * FROM `sample.news_generated_text` WHERE ml_generate_text_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.