Usar ajustes e avaliações para melhorar o desempenho dos modelos

Neste tutorial, mostramos como ajustar um modelo que enriquece uma determinada frase fornecendo uma redação mais precisa ou adicionando qualificadores sem mudar o significado geral. Você cria um modelo remoto que faz referência a um modelo da Gemini Enterprise Agent Platform, usa o ajuste supervisionado e avalia o modelo ajustado com a função ML.EVALUATE.

O ajuste ajuda a personalizar o modelo hospedado da Agent Platform, como quando o comportamento esperado é difícil de definir em um comando ou quando os comandos não produzem os resultados esperados de forma consistente. 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 informações empíricas fornecido.

Objetivos

  • Crie um conjunto de dados.
  • Importe dados de treinamento e avaliação para tabelas.
  • Crie um modelo de referência.
  • Avalie o desempenho do modelo de referência.
  • Crie um modelo ajustado.
  • Avalie o desempenho do modelo ajustado.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Cloud de Confiance by S3NS:

  • 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.
  • Gemini Enterprise Agent Platform. You incur costs for calls to and supervised tuning of the Gemini model.

Para saber mais, acesse os recursos a seguir:

Antes de começar

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 conferir 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 e resourcemanager.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.

  1. No console do Cloud de Confiance , na página do seletor de projetos, selecione ou crie um projeto do Cloud de Confiance .

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.

    Acessar o seletor de projetos

  2. Verifique se o faturamento está ativado para o projeto do Cloud de Confiance .

  3. Ative as APIs BigQuery, BigQuery Connection, Agent Platform e Compute Engine, se alguma delas ainda não estiver ativada.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar as APIs

Criar um conjunto de dados

Para criar um conjunto de dados do BigQuery, selecione uma das seguintes opções:

Console

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

    Se o painel esquerdo não aparecer, clique em Expandir painel esquerdo para abrir.

  3. Em Explorer, expanda seu projeto e clique em Conjuntos de dados.

  4. Na página Conjuntos de dados, clique em Criar conjunto de dados.

  5. No painel Criar conjunto de dados, faça o seguinte:

    • Para o código do conjunto de dados, insira bqml_tutorial.

    • Em Local dos dados, selecione US.

    Não mude as outras configurações padrão.

  6. Clique em Criar conjunto de dados.

bq

Para criar um conjunto de dados, use o comando bq mk --dataset.

  1. Crie um conjunto de dados chamado bqml_tutorial com o local dos dados definido como US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 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"
  }
}

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.

  1. Abra o Cloud Shell.

  2. No Cloud Shell, crie 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 load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING
    
    bq load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
    

Conferir os dados de treinamento

Os dados de treinamento de entrada são um comando que pede ao modelo para elaborar uma frase sem mudar o significado geral dela. Cada comando inclui o mesmo conjunto de dois exemplos positivos e dois negativos, além de uma frase para reescrever. A saída é a frase mais detalhada produzida pelo modelo.

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução para ver um exemplo de dados de entrada e saída:

    SELECT * FROM bqml_tutorial.wiki_auto_style_transfer_train LIMIT 1;

    O resultado será semelhante ao seguinte:

    +-----------------------------------------------+-------------------------------------------------+
    | input                                         | output                                          |
    +-----------------------------------------------+-------------------------------------------------+
    | Definition: In this task, we ask you to       | Merton College ( in full : The House or College |
    | elaborate the sentence without changing its   | of Scholars of Merton in the University of      |
    | general meaning. You can do so by explaining  | Oxford ) is one of the constituent colleges of  |
    | further the input sentence, using more        | the University of Oxford in England .           |
    | precise wording, adding qualifiers and        |                                                 |
    | auxiliary information etc.                    |                                                 |
    |                                               |                                                 |
    | Positive Example 1 -                          |                                                 |
    | Input: The Inheritance Cycle is a series of   |                                                 |
    | fantasy books written by Christopher Paolini. |                                                 |
    | Output: The Inheritance Cycle is a tetralogy  |                                                 |
    | of young adult high fantasy novels written by |                                                 |
    | American author Christopher Paolini.          |                                                 |
    |                                               |                                                 |
    | Positive Example 2 -                          |                                                 |
    | Input: The Greco-Roman or Graeco-Roman world, |                                                 |
    | refers to geographical regions and countries  |                                                 |
    | who had the language , culture , government   |                                                 |
    | or religion of the ancient Greeks and Romans. |                                                 |
    | Output: The Greco-Roman world , Greco-Roman   |                                                 |
    | culture , or the term Greco-Roman (spelled    |                                                 |
    | Graeco-Roman in the United Kingdom and the    |                                                 |
    | Commonwealth), when used as an adjective , as |                                                 |
    | understood by modern scholars and writers ,   |                                                 |
    | refers to those geographical regions and      |                                                 |
    | countries that culturally ( and so            |                                                 |
    |  historically ) were directly , long-term ,   |                                                 |
    | and intimately influenced by the language ,   |                                                 |
    | culture , government and religion of the      |                                                 |
    | ancient Greeks and Romans.                    |                                                 |
    |                                               |                                                 |
    | Negative Example 1 -                          |                                                 |
    | Input: Boryla, an American football           |                                                 |
    | quarterback, did not participate in the 1952  |                                                 |
    | playoffs.                                     |                                                 |
    | Output: Boryla was not in the 1952 playoffs.  |                                                 |
    |                                               |                                                 |
    | Negative Example 2 -                          |                                                 |
    | Input: The wild population in China decreased |                                                 |
    | to around 2,000 in 2005.                      |                                                 |
    | Output: By 2005, the wild population          |                                                 |
    | decreased to about 2,000.                     |                                                 |
    |                                               |                                                 |
    | Now complete the following example -          |                                                 |
    | Input: Merton College is one of the colleges  |                                                 |
    | of the University of Oxford .                 |                                                 |
    | Output:                                       |                                                 |
    +-----------------------------------------------+-------------------------------------------------+
    

Criar um modelo de referência

Crie um modelo remoto em um modelo do Gemini:

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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.5-pro');

    A consulta leva alguns segundos para ser concluída. Depois disso, o modelo gemini_baseline aparece no conjunto de dados bqml_tutorial no painel Explorer. Como a consulta usa uma instrução CREATE MODEL para criar um modelo, não há resultados de consulta.

Verificar o desempenho do modelo de referência

Para ver como o modelo remoto é executado nos dados de avaliação sem nenhum ajuste, execute a função AI.GENERATE_TEXT:

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução:

    SELECT result, ground_truth
    FROM
      AI.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
        ));

    O resultado será semelhante ao seguinte:

    +-------------------------------------------------+-------------------------------------------------+
    | result                                          | ground_truth                                    |
    +-------------------------------------------------+-------------------------------------------------+
    | In mathematics, and more specifically in graph  | In mathematics , and more specifically in graph |
    | theory, a graph is an abstract structure that   | theory , a graph is a structure amounting to a  |
    | is used to model pairwise relationships between | set of objects in which some pairs of the       |
    | objects. A graph in this context is made up of  | objects are in some sense " related " .         |
    | vertices (also called nodes or points) and      |                                                 |
    | edges (also called links or lines) that connect |                                                 |
    | pairs of vertices.                              |                                                 |
    | ...                                             | ...                                             |
    +-------------------------------------------------+-------------------------------------------------+
    

    Embora o modelo de base gere texto que reflete com precisão os fatos fornecidos no conteúdo de verdade embasada, o estilo do texto às vezes é diferente. O modelo de referência tende a produzir elaborações mais longas do que as informações empíricas desejadas.

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.

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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));

    O resultado será semelhante ao seguinte:

    +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
    | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
    +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
    | 0.32571814014498979 | 0.45752569962901607 | 0.557224161991254   | 0.49205029983307907 | {                                          |
    |                     |                     |                     |                     |  "num_successful_rows": 176,               |
    |                     |                     |                     |                     |  "num_total_rows": 176                     |
    |                     |                     |                     |                     | }                                          |
    +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
    

Essas pontuações oferecem uma maneira quantitativa de medir a performance. As próximas seções mostram como criar um modelo ajustado e comparar a performance dele com o modelo de base.

Criar um modelo ajustado

Crie um modelo remoto semelhante ao criado em Criar um modelo, mas desta vez especifique a cláusula AS SELECT para fornecer os dados de treinamento e ajustar o modelo.

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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.5-pro',
        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 dados bqml_tutorial no painel Explorer. Como a consulta usa uma instrução CREATE MODEL para criar um modelo, não há resultados de consulta.

Verificar o desempenho do modelo ajustado

Para ver o desempenho do modelo ajustado nos dados de avaliação, execute a função AI.GENERATE_TEXT:

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, execute a seguinte instrução:

    SELECT result, ground_truth
    FROM
      AI.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
        ));

    O modelo ajustado produz um texto com estilo muito mais parecido com o conteúdo de informações empíricas.

Avaliar o modelo ajustado

Para ver como as respostas do modelo ajustado se comparam às respostas ideais, use a função ML.EVALUATE:

  1. No console do Cloud de Confiance , acesse a página BigQuery.

    Acessar o BigQuery

  2. 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));

    O resultado será semelhante ao seguinte:

    +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
    | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
    +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
    | 0.44878025403825506 | 0.57236062510796448 | 0.638794269320597   | 0.59591519400141835 | {                                          |
    |                     |                     |                     |                     |  "num_successful_rows": 176,               |
    |                     |                     |                     |                     |  "num_total_rows": 176                     |
    |                     |                     |                     |                     | }                                          |
    +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
    

O modelo ajustado mostra uma melhoria significativa na performance e supera o modelo de referência em todas as métricas de avaliação.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

    Excluir um projeto do Cloud de Confiance :

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Se você quiser reutilizar o projeto, exclua os recursos criados para este tutorial.

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. Exclua o conjunto de dados bqml_tutorial. A exclusão do conjunto de dados também exclui os modelos e as tabelas.

    1. No painel Explorer, expanda o projeto e clique em Conjuntos de dados.

    2. Na lista Conjuntos de dados, clique no conjunto bqml_tutorial.

    3. No painel de detalhes, clique em Excluir.

    4. Na caixa de diálogo Excluir conjunto de dados, clique em Excluir.

A seguir