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 sejam o mais parecidos possível com o conteúdo de verdade 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.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.
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, Vertex AI, and Compute Engine APIs.
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-002
model.
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 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_tutorial
com o local dos dados definido comoUS
e uma descrição deBigQuery 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-d
e--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 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_baseline
aparece no conjunto de dadosbqml_tutorial
no painel Explorer. Como a consulta usa uma instruçãoCREATE MODEL
para 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 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_result
eground_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 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 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_tuned
aparece no conjunto de dadosbqml_tutorial
no painel Explorer. Como a consulta usa uma instruçãoCREATE MODEL
para 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 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 da verdade fundamental.
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 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.