Resolva erros de quota chamando ML.GENERATE_EMBEDDING iterativamente
Este tutorial mostra como usar o procedimento armazenado público do BigQuery
bqutil.procedure.bqml_generate_embeddings
para iterar
através de chamadas à função
ML.GENERATE_EMBEDDING
.
A chamada iterativa da função permite-lhe resolver quaisquer erros repetíveis que ocorram devido à ultrapassagem das quotas e dos limites aplicáveis à função.
Para rever o código fonte do procedimento armazenado no GitHub, consulte bqml_generate_embeddings.sqlx
.bqutil.procedure.bqml_generate_embeddings
Para mais informações sobre os parâmetros e a utilização do procedimento armazenado, consulte o ficheiro README.
Este tutorial orienta-o nas seguintes tarefas:
- Criar um
modelo remoto sobre um modelo
text-embedding-005
. - Iterar através de chamadas à 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
.
Autorizações necessárias
Para executar este tutorial, precisa das seguintes funções de gestão de identidade e de acesso (IAM):
- Criar e usar conjuntos de dados, ligações e modelos do BigQuery:
Administrador do BigQuery (
roles/bigquery.admin
). - Conceda autorizações à conta de serviço da associação: administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin
).
Estas funções predefinidas contêm as autorizações necessárias para realizar as tarefas descritas neste documento. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
- Crie um conjunto de dados:
bigquery.datasets.create
- Crie, delegue e use uma associação:
bigquery.connections.*
- Defina a ligação predefinida:
bigquery.config.*
- Defina as autorizaçõ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
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Custos
Neste documento, usa 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 custos com base na sua utilização projetada,
use a calculadora de preços.
Para mais informações acerca dos preços do BigQuery, consulte o artigo Preços do BigQuery.
Para mais informações sobre os preços do Vertex AI, consulte a página Preços do Vertex AI.
Antes de começar
-
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.
Crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar os seus modelos e dados de exemplo:
Na Google Cloud consola, aceda à página BigQuery.
No painel Explorador, clique no nome do projeto.
Clique em > Criar conjunto de dados.
Ver açõesNa página Criar conjunto de dados, faça o seguinte:
Para o ID do conjunto de dados, introduza
target_dataset
.Em Tipo de localização, selecione Várias regiões e, de seguida, selecione EUA (várias regiões nos Estados Unidos).
Deixe as restantes predefinições como estão e clique em Criar conjunto de dados.
Crie o modelo de geração de incorporações de texto
Crie um modelo remoto que represente um modelo do Vertex AI alojado:text-embedding-005
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, execute a seguinte declaração:
CREATE OR REPLACE MODEL `target_dataset.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');
A consulta demora vários segundos a ser concluída. Depois disso, o modelo
embedding
aparece no conjunto de dadossample
no painel Explorador. Uma vez que a consulta usa uma declaraçãoCREATE MODEL
para criar um modelo, não existem resultados da consulta.
Execute o procedimento armazenado
Execute o procedimento armazenado bqutil.procedure.bqml_generate_embeddings
, que
itera as chamadas à 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
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, execute a seguinte declaraçã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 que está a usar para este tutorial.O procedimento armazenado cria uma tabela
target_dataset.news_body_embeddings
para conter a saída da funçãoML.GENERATE_EMBEDDING
.Quando a consulta terminar de ser executada, confirme que não existem linhas na tabela
target_dataset.news_body_embeddings
que contenham um erro repetível. No editor de consultas, execute a seguinte declaração:SELECT * FROM `target_dataset.news_body_embeddings` WHERE ml_generate_embedding_status LIKE '%A retryable error occurred%';
A consulta devolve 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.