Processar erros de cota chamando ML.GENERATE_EMBEDDING de maneira iterativa
Este tutorial mostra como usar o procedimento armazenado público bqutil.procedure.bqml_generate_embeddings
do BigQuery para iterar
chamadas para a
função ML.GENERATE_EMBEDDING
.
Chamar a função de forma iterativa permite resolver erros que podem ser repetidos
devido ao excesso de
cotas e limites aplicáveis à
a função.
Para revisar o código-fonte da
procedura armazenada bqutil.procedure.bqml_generate_embeddings
no GitHub, consulte
bqml_generate_embeddings.sqlx
.
Para mais informações sobre o uso e os parâmetros de procedimentos armazenados, consulte a
Arquivo README.
Este tutorial vai orientar você nas tarefas a seguir:
- Criar um
modelo remoto em um modelo
text-embedding-005
. - Iterar por chamadas para a função
ML.GENERATE_EMBEDDING
, usando o modelo remoto e a tabela de dados públicosbigquery-public-data.bbc_news.fulltext
com o procedimento armazenadobqutil.procedure.bqml_generate_embeddings
.
Permissões necessárias
Para seguir este tutorial, você precisa dos seguintes papéis do Identity and Access Management (IAM):
- Criar e usar conjuntos de dados, conexões e modelos do BigQuery: administrador do BigQuery (
roles/bigquery.admin
). - Conceda permissões à conta de serviço da conexão: administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
).
Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
- Criar um conjunto de dados:
bigquery.datasets.create
- Criar, delegar e usar uma conexão:
bigquery.connections.*
- Defina a conexão padrão:
bigquery.config.*
- Defina as permissões da conta de serviço:
resourcemanager.projects.getIamPolicy
eresourcemanager.projects.setIamPolicy
- Crie um modelo e execute a inferência:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do 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 gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações sobre os preços do BigQuery, consulte Preços do BigQuery.
Para mais informações sobre os preços da Vertex AI, consulte Preços da Vertex AI.
Antes de começar
-
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.
Criar um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar modelos e dados de amostra:
No console Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em > Criar conjunto de dados.
Conferir açõesNa página Criar conjunto de dados, faça o seguinte:
Para o código do conjunto de dados, insira
target_dataset
.Em Tipo de local, selecione Multirregião e EUA (várias regiões nos Estados Unidos).
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
Criar o modelo de geração de embedding de texto
Crie um modelo remoto que represente um modelo text-embedding-005
da
Vertex AI:
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte instrução:
CREATE OR REPLACE MODEL `target_dataset.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
A consulta leva alguns segundos para ser concluída. Depois disso, o modelo
embedding
aparece no conjunto de dadossample
no painel Explorer. Como a consulta usa uma instruçãoCREATE MODEL
para criar um modelo, não há resultados de consulta.
Execute o procedimento armazenado
Execute o procedimento armazenado bqutil.procedure.bqml_generate_embeddings
, que
faz a iteração por chamadas para a função ML.GENERATE_EMBEDDING
usando o modelo target_dataset.embedding_model
e a
Tabela de dados públicos bigquery-public-data.bbc_news.fulltext
:
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte instrução:
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 );
Substitua
PROJECT_ID
pelo ID do projeto do que você está usando neste tutorial.O procedimento armazenado cria uma tabela
target_dataset.news_body_embeddings
para conter a saída da funçãoML.GENERATE_EMBEDDING
.Quando a execução da consulta terminar, verifique se não há linhas na tabela
target_dataset.news_body_embeddings
que contêm um erro que permite uma nova tentativa. No editor de consultas, execute a seguinte instrução:SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
A consulta retorna a mensagem
No data to display
.
Limpar
- 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.