Maneja errores de cuota mediante una llamada a ML.GENERATE_TEXT de forma iterativa
En este instructivo, se muestra cómo usar una secuencia de comandos de inferencia remota de BigQuery para iterar a través de llamadas a la función ML.GENERATE_TEXT
.
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 límites que se aplican a la función.
Para obtener más información sobre las secuencias de comandos de inferencia remota de BigQuery, como qué parámetros toman y con qué funciones, consulta el archivo readme.
En este instructivo, se te guiará por las siguientes tareas:
- Crear un modelo remoto sobre un modelo
gemini-1.5-flash-001
. - Crear una tabla de datos de muestra basada en el conjunto de datos públicos
bigquery-public-data.hacker_news.full
. - Iterar a través de llamadas a la función
ML.GENERATE_TEXT
mediante el modelo remoto y los datos de muestra con la secuencia de comandos de ejemplostructured_table_inference_loop_generate_text_example
.
Permisos necesarios
- Para crear el conjunto de datos, necesitas el permiso
bigquery.datasets.create
de Identity and Access Management (IAM). Para crear el recurso de conexión, necesitas los siguientes permisos de IAM:
bigquery.connections.create
bigquery.connections.get
Para otorgar permisos a la cuenta de servicio de la conexión, necesitas el siguiente permiso:
resourcemanager.projects.setIamPolicy
Para crear el modelo, necesitas los siguientes permisos:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.models.getData
bigquery.jobs.create
Costos
En este documento, usarás 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 costos en función del uso previsto, usa la calculadora de precios.
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
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tus modelos y datos de muestra:
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorer, haz clic en el nombre de tu proyecto.
Haz clic en > Crear conjunto de datos.
Ver accionesEn la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
sample
.En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).
Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
Crear una conexión
Crea una conexión de recurso de Cloud y obtén el ID de la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación que el conjunto de datos que creaste en el paso anterior.
Selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
Para crear una conexión, haz clic en
Agregar y, luego, en Conexiones a fuentes de datos externas.En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, escribe un nombre para tu conexión.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
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ónPROJECT_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...
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 al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Agrega la siguiente sección a tu archivo main.tf
.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: Es un ID para tu conexión.PROJECT_ID
: El ID del proyecto de Google Cloud.REGION
: tu región de conexión
Otorga permisos a la cuenta de servicio de las conexiones
Para otorgar a la cuenta de servicio de la conexión los roles adecuados para acceder a los servicios de Cloud Storage y Vertex AI, sigue estos pasos:
Ir a la página IAM y administración
Haz clic en
Grant access.En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el menú Selecciona un rol, elige Vertex AI > Usuario de Vertex AI.
Haz clic en Guardar.
Crea el modelo de generación de texto
Crea un modelo remoto que represente un modelo gemini-1.5-flash-001
de Vertex AI alojado:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
CREATE OR REPLACE MODEL `sample.generate_text` REMOTE WITH CONNECTION `LOCATION.CONNECTION_ID` OPTIONS (ENDPOINT = 'gemini-1.5-flash-001');
Reemplaza lo siguiente:
LOCATION
: la ubicación de la conexión.CONNECTION_ID
: el ID de la conexión de BigQuery.Cuando ves los detalles de conexión en la consola de Google Cloud, este es el valor en la última sección del ID de conexión completamente calificado que se muestra en Conexión ID, por ejemplo,
projects/myproject/locations/connection_location/connections/myconnection
.
La consulta tarda varios segundos en completarse, después de eso, el modelo
generate_text
aparece en el conjunto de datossample
en el panel Explorer. Debido a que la consulta usa una declaraciónCREATE MODEL
para crear un modelo, no hay resultados de consultas.
Crea la tabla de datos de muestra
Crea la tabla de datos de muestra sample.hacker
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
CREATE OR REPLACE TABLE sample.hacker AS SELECT * FROM `bigquery-public-data.hacker_news.full` WHERE type = 'story' AND text IS NOT NULL;
Ejecuta la secuencia de comandos de ejemplo
Ejecuta la secuencia de comandos de ejemplo structured_table_inference_loop_generate_text_example
, que itera a través de llamadas a la función ML.GENERATE_TEXT
mediante el modelo sample.generate_text
y la tabla sample.hacker
:
- Ve a la secuencia de comandos de ejemplo
structured_table_inference_loop_generate_text_example
para iterar a través de llamadas a la funciónML.GENERATE_TEXT
. - Copia el contenido de la secuencia de comandos.
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, pega el contenido de la secuencia de comandos y haz clic en Ejecutar. La secuencia de comandos crea una tabla
sample.hacker_generated_text
para contener el resultado de la funciónML.GENERATE_TEXT
.Cuando la consulta termine de ejecutarse, confirma que no haya filas en la tabla
sample.hacker_generated_text
que contengan un error que se pueda volver a intentar. En el editor de consultas, ejecuta la siguiente declaración:SELECT * FROM `sample.hacker_generated_text` WHERE ml_generate_text_status LIKE '%A retryable error occurred%';
La consulta muestra el mensaje
No data to display
.
Limpia
- 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.