Usar ajustes e avaliações para melhorar o desempenho dos modelos
Neste tutorial, mostramos como criar um
modelo remoto
do BigQuery ML
que faz referência ao modelo gemini-2.0-flash-001 da Vertex AI.
Em seguida, use o
ajuste supervisionado
para ajustar o modelo com novos dados de treinamento, depois avalie o modelo com a
função ML.EVALUATE.
O ajuste pode ajudar você a lidar com cenários em que é necessário personalizar o modelo hospedado da Vertex AI, como quando o comportamento esperado do modelo é difícil de definir de forma concisa em um comando ou quando os comandos não produzem os resultados esperados com consistência suficiente. O ajuste supervisionado também influencia o modelo das seguintes maneiras:
- Orienta o modelo a retornar estilos de resposta específicos, por exemplo, sendo mais conciso ou detalhado.
- Ensina novos comportamentos ao modelo, por exemplo, respondendo a comandos como uma persona específica.
- Faz com que o modelo se atualize com novas informações.
Neste tutorial, o objetivo é fazer com que o modelo gere um texto cujo estilo e conteúdo estejam o mais próximo possível do conteúdo de verdade fundamental fornecido.
Funções exigidas
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 uma tabela: bigquery.tables.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.getIamPolicyeresourcemanager.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.
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.createpermission. Learn how to grant roles.
 
- 
  
   
   
  
   
   
  
 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
   
   
  
   
   
  
 
 
  
  
    
      Enable the BigQuery, BigQuery Connection, Vertex AI, and Compute Engine APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
- Vertex AI: You incur costs for calls to and
  supervised tuning of the gemini-1.0-flash-002model.
 
 
 
  Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
  
Para saber mais, acesse os recursos a seguir:
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
- No console do Google Cloud , acesse a página BigQuery. 
- No painel Explorer, clique no nome do seu projeto. 
- Clique em Conferir ações > Criar conjunto de dados. 
- Na página Criar conjunto de dados, faça o seguinte: - Para o código do conjunto de dados, insira - bqml_tutorial.
- 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. 
 
bq
Para criar um novo conjunto de dados, utilize o
comando bq mk
com a sinalização --location. Para obter uma lista completa de parâmetros, consulte a
referência
comando bq mk --dataset.
- Crie um conjunto de dados chamado - bqml_tutorialcom o local dos dados definido como- USe uma descrição de- BigQuery ML tutorial dataset:- bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial - Em vez de usar a flag - --dataset, o comando usa o atalho- -d. Se você omitir- -de- --dataset, o comando vai criar um conjunto de dados por padrão.
- Confirme se o conjunto de dados foi criado: - bq ls
API
Chame o método datasets.insert com um recurso de conjunto de dados definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Criar tabelas de teste
Crie tabelas de dados de treinamento e avaliação com base no conjunto de dados público task955_wiki_auto_style_transfer da Hugging Face.
- Abra o Cloud Shell. 
- No Cloud Shell, execute os seguintes comandos para criar tabelas de dados de teste e avaliação: - python3 -m pip install pandas pyarrow fsspec huggingface_hub python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);" python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);" bq rm -t bqml_tutorial.wiki_auto_style_transfer_train bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
Criar um modelo de referência
Crie um
modelo remoto
no modelo gemini-1.0-flash-002 da Vertex AI.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução para criar um modelo remoto: - CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT ='gemini-2.0-flash-001'); - A consulta leva alguns segundos para ser concluída. Depois disso, o modelo - gemini_baselineaparece no conjunto de dados- bqml_tutorialno painel Explorer. Como a consulta usa uma instrução- CREATE MODELpara criar um modelo, não há resultados de consulta.
Verificar o desempenho do modelo de referência
Execute a
função ML.GENERATE_TEXT
com o modelo remoto para ver como ele é executado nos dados de avaliação sem nenhum
ajuste.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução: - SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output)); - Se você examinar os dados de saída e comparar os valores - ml_generate_text_llm_resulte- ground_truth, verá que, embora o modelo de referência gere texto que reflita com precisão os fatos fornecidos no conteúdo de verdade absoluta, o estilo do texto é bastante diferente.
Avaliar o modelo de referência
Para realizar uma avaliação mais detalhada do desempenho do modelo, use a
função ML.EVALUATE.
Essa função calcula métricas do modelo que medem a acurácia e a qualidade do texto gerado para ver como as respostas do modelo se comparam às respostas ideais.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução: - SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS input_text, output AS output_text FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type)); 
A saída será assim:
   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   O desempenho do modelo de referência não é ruim, mas a similaridade do texto gerado com as informações empíricas é baixa, com base nas métricas de avaliação. Isso indica que vale a pena realizar o ajuste supervisionado para saber se é possível melhorar o desempenho do modelo para este caso de uso.
Criar um modelo ajustado
Crie um modelo remoto semelhante ao criado em
Criar um modelo, mas desta vez especificando a
cláusula AS SELECT
para fornecer os dados de treinamento para ajustar o modelo.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução para criar um modelo remoto: - CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned` REMOTE WITH CONNECTION DEFAULT OPTIONS ( endpoint = 'gemini-2.0-flash-001', max_iterations = 500, data_split_method = 'no_split') AS SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_train`; - A consulta leva alguns minutos para ser concluída. Depois disso, o modelo - gemini_tunedaparece no conjunto de dados- bqml_tutorialno painel Explorer. Como a consulta usa uma instrução- CREATE MODELpara criar um modelo, não há resultados de consulta.
Verificar o desempenho do modelo ajustado
Execute a função ML.GENERATE_TEXT para ver o desempenho do modelo ajustado nos
dados de avaliação.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução: - SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output)); - Se você examinar os dados de saída, verá que o modelo ajustado produz um texto muito mais semelhante em estilo ao conteúdo de verdade. 
Avaliar o modelo ajustado
Use a função ML.EVALUATE para ver como as respostas do modelo ajustado se comparam
às respostas ideais.
- No console do Google Cloud , acesse a página BigQuery. 
- No editor de consultas, execute a seguinte instrução: - SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type)); 
A saída será assim:
   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.416868792119966   | 0.642001000843349   | 0.55910008048151372 | 0.5907226262084847  | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   Você pode notar que, embora o conjunto de dados de treinamento tenha usado apenas 1.408 exemplos, há uma melhoria acentuada no desempenho, conforme indicado pelas métricas de avaliação mais altas.
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.