Ajustar modelos de texto usando o ajuste de RLHF

O aprendizado por reforço com feedback humano (RLHF, na sigla em inglês) usa o feedback coletado de humanos para ajustar um modelo. O RLHF é recomendado quando a saída do modelo é complexa e difícil de descrever. O feedback humano está na forma de escolhas entre diferentes opções de saída. Essas escolhas fornecem dados melhores do que as solicitações rotuladas, usadas pelo ajuste supervisionado, para ajustar um modelo que produz uma saída difícil de descrever. Se não for difícil definir a saída do modelo, ajuste o modelo de texto usando o ajuste supervisionado.

Nesta página, fornecemos informações detalhadas sobre como ajustar um modelo de texto usando o ajuste RLHF. Você vai aprender quais modelos de texto são compatíveis com o ajuste de RLHF, como criar um conjunto de dados e como ajustar um modelo de texto usando o ajuste de RLHF. Você também aprenderá a visualizar e carregar modelos ajustados usando o ajuste de RLHF. Para mais detalhes sobre o ajuste de RLHF na Vertex AI, consulte Ajuste de modelo de RLHF.

Fluxo de trabalho para ajuste de modelos de RLHF

O fluxo de trabalho de ajuste de modelos de RLHF na Vertex AI inclui as seguintes etapas:

  1. Prepare seu conjunto de dados de preferências humanas.
  2. Prepare o conjunto de dados de prompts.
  3. Faça o upload dos conjuntos de dados para o bucket do Cloud Storage. Eles não precisam estar no mesmo bucket do Cloud Storage.
  4. Crie um job de ajuste de modelo de RLHF.

Depois que o ajuste do modelo é concluído, o modelo ajustado é implantado em um endpoint da Vertex AI. O nome do endpoint é igual ao nome do modelo ajustado. Os modelos ajustados estão disponíveis para seleção no Vertex AI Studio quando você quiser criar um novo comando.

Modelos compatíveis

Os modelos de texto a seguir são compatíveis com o ajuste usando o aprendizado por reforço com feedback humano na Vertex AI:

  • O modelo de fundação da geração de texto, text-bison@002. Para mais informações, consulte Modelo de geração de texto.
  • Modelo de base de geração de chat, chat-bison@001. Para mais informações, consulte Modelo de geração de chat.
  • Os modelos de transferência de texto para texto Flan (Flan-T5) t5-small, t5-large, t5-xl e t5-xxl. Os modelos Flan-T5 podem ser ajustados para executar tarefas como classificação de texto, tradução de idiomas e resposta a perguntas. Para mais informações, consulte Checkpoints Flan-T5.

Os modelos de texto a seguir são compatíveis com o ajuste de RLHF como um job do Vertex AI Pipelines autoadministrado.

Os modelos de código não oferecem suporte ao ajuste de RLHF.

Preparar conjuntos de dados de ajuste de RLHF

O ajuste de RLHF requer a preparação de dois conjuntos de dados e um conjunto opcional. Todos os conjuntos de dados estão no formato linhas JSON (JSONL) e precisam ser enviados a um bucket do Cloud Storage. O formato do conjunto de dados usado para ajustar um modelo de geração de texto é diferente do formato do conjunto de dados usado para ajustar um modelo de chat de texto.

Conjunto de dados do comando

Um conjunto de dados que contém solicitações sem rótulo. As solicitações podem ser as mesmas do conjunto de dados de preferências ou diferentes. Cada linha no conjunto de dados do prompt contém os seguintes campos:

Conjunto de dados text-bison

O conjunto de dados de geração de texto inclui um campo:

  • input_text: campo obrigatório que contém a solicitação.

Exemplo

{
  "input_text": "Create a description for Plantation Palms."
}

Conjunto de dados chat-bison

O conjunto de dados de geração de chat inclui dois campos:

  • messages: uma matriz de pares de autor-conteúdo. O campo author se refere ao autor da mensagem e alterna entre user e assistant. O campo content é o conteúdo da mensagem. O content não pode estar vazio, e o primeiro e o último author precisam ser definidos como user.

  • context: (opcional) contexto extra para o modelo usar quando responder a um prompt.

Exemplo

{
  "context": "You are a pirate dog named Captain Barktholomew.",
  "messages": [
    {
      "author": "user",
      "content": "Hi"
    },
    {
      "author": "assistant",
      "content": "Argh! What brings ye to my ship?"
    },
    {
      "author": "user",
      "content": "What's your name?"
    },
  ]
}

Para saber mais, faça o download e visualize este conjunto de dados de prompt de amostra.

Conjunto de dados de preferência humana

O conjunto de dados de preferências humanas contém preferências de pessoas. Cada linha no conjunto de dados de preferência humana registra a preferência entre duas opções que foram apresentadas a um ser humano. Recomendamos que o conjunto de dados de preferências humanas inclua de 5 mil a 10 mil exemplos. Cada linha no conjunto de dados de preferências humanas contém um exemplo de preferência que inclui os campos do conjunto de dados de prompt para o modelo que está sendo ajustado, além dos seguintes campos:

  • candidate_0 e candidate_1: cada um desses campos contém duas respostas. O humano ajuda a ajustar o modelo escolhendo qual das duas respostas prefere.
  • choice: contém um número inteiro, 0 ou 1, que indica qual candidato é o preferido pelos humanos. Um 0 indica que a pessoa escolheu candidate_0, e um 1 indica que a pessoa escolheu candidate_1.

Este é um exemplo de linha no conjunto de dados de preferências humanas:

{"input_text": "Create a description for Plantation Palms.", "candidate_0": "Enjoy some fun in the sun at Gulf Shores.", "candidate_1": "A Tranquil Oasis of Natural Beauty.", "choice": 0}

Para saber mais, faça o download e visualize este exemplo de conjunto de dados de preferência humana.

Conjunto de dados de avaliação (opcional)

Um conjunto de dados que inclui solicitações sem rótulos de previsão após o ajuste do modelo. Se o conjunto de dados de avaliação for fornecido, a inferência será realizada nele após a conclusão do job de ajuste. O formato do conjunto de dados de avaliação é igual ao formato do conjunto de dados do prompt. No entanto, os prompts em um conjunto de dados de avaliação precisam ser diferentes daqueles no conjunto de dados de prompt.

Para saber mais, faça o download e veja este conjunto de dados de avaliação de amostra.

Modelo de recompensa

O conjunto de dados de preferências humanas é usado para treinar um modelo de recompensa. A Vertex AI cria e usa o modelo de recompensa durante o ajuste de RLHF. Os modelos de prêmio são criados em um bucket particular do Cloud Storage em um projeto de locatário do cliente. Um projeto de locatário do cliente é um projeto interno exclusivo de um cliente. Não é possível acessar um modelo de recompensa, e ele é excluído após a conclusão do job de ajuste. Para mais informações, consulte Projeto de locatário.

Manter a consistência com os dados de produção

Os exemplos nos seus conjunto de dados precisam corresponder ao tráfego de produção esperado. Se o conjunto de dados contiver formatação, palavras-chave, instruções ou informações específicas, os dados de produção deverão ser formatados da mesma maneira e conter as mesmas instruções.

Por exemplo, se os exemplos no seu conjunto de dados incluem um "question:" e um "context:", o tráfego de produção também deve ser formatado para incluir um "question:" e um "context:" na mesma ordem em que aparece no exemplos de conjuntos de dados. Se você excluir o contexto, o modelo não reconhecerá o padrão, mesmo que a pergunta exata esteja em um exemplo no conjunto de dados.

Fazer upload de conjuntos de dados de ajuste para o Cloud Storage

Para executar um job de ajuste, é preciso fazer upload de um ou mais conjuntos de dados para um bucket do Cloud Storage. É possível criar um novo bucket do Cloud Storage ou usar um existente para armazenar arquivos de conjuntos de dados. A região do bucket não importa, mas recomendamos que você use um bucket que esteja no mesmo projeto do Google Cloud em que planeja executar o ajuste do modelo.

Quando o bucket estiver pronto, faça o upload do arquivo do conjunto de dados para o bucket.

Criar um job de ajuste de RLHF

É possível realizar o ajuste de RLHF usando o console do Google Cloud ou o SDK da Vertex AI para Python.

SDK da Vertex AI para Python

Para saber como usar o SDK da Vertex AI para Python para ajustar os modelos com o RLHF, abra e execute o seguinte notebook com o Colab, GitHub ou Vertex AI Workbench:

Console do Google Cloud

Para ajustar um modelo de texto no console do Google Cloud usando o ajuste RLHF, siga estas etapas:

  1. Na seção "Vertex AI" do console do Google Cloud, acesse a página do Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Clique na guia Ajustar e destilar.
  3. Clique em Criar modelo ajustado.
  4. Selecione Aprendizado por reforço com feedback humano (RLHF).
  5. Configure os detalhes do modelo:
    • Nome do modelo: insira um nome para o modelo ajustado.
    • Modelo base: selecione o modelo base que você quer ajustar.
    • Região: insira a região em que ocorre o ajuste do modelo. Supported regions are:
      • us-central1: usa oito GPUs Nvidia A100 de 80 GB.
      • europe-west4: usa 64 núcleos do pod da TPU v3.
    • Diretório de trabalho: insira o local do Cloud Storage em que os artefatos são armazenados quando o modelo é ajustado.
  6. Expanda Opções avançadas para definir configurações avançadas.
    • Etapas do treinamento de recompensa: insira o número de etapas a serem usadas ao treinar o modelo de recompensa. O modelo de recompensa é usado para ajustar seu modelo. O valor padrão é 1000.
    • Multiplicador de taxa de aprendizado de recompensa: insira um valor flutuante que afeta a taxa de aprendizado ao treinar o modelo de recompensa. Para aumentar a taxa de aprendizado padrão, insira um valor mais alto. Para diminuir a taxa de aprendizado padrão, insira um valor menor. O valor padrão é 1,0.
    • Etapas do treinamento por reforço: insira o número de etapas a serem executadas ao ajustar o modelo base usando o aprendizado por reforço. O valor padrão é 1000.
    • Multiplicador de taxa de aprendizado por reforço Insira um valor flutuante que afeta a taxa de aprendizado ao treinar um modelo de reforço. Para aumentar a taxa de aprendizado padrão, insira um valor mais alto. Para diminuir a taxa de aprendizado padrão, insira um valor menor. O valor padrão é 1,0.
  7. Clique em Continuar.
  8. Em um Conjunto de dados de preferências humanas, faça upload ou escolha um conjunto de dados de preferências humanas usado para criar um modelo de prêmios. Se você quiser fazer upload do arquivo do conjunto de dados, selecione  Fazer upload do arquivo JSONL no Cloud Storage. Se o arquivo do conjunto de dados já estiver em um bucket do Cloud Storage, selecione  Arquivo JSONL no Cloud Storage.

    Fazer upload de um arquivo JSONL

    • Em Selecionar arquivo JSONL, clique em Procurar e selecione o arquivo do conjunto de dados.
    • Em Local do conjunto de dados, clique em Procurar e selecione o bucket do Cloud Storage em que você quer armazenar o arquivo do conjunto de dados.

    Usar um arquivo JSONL

    Em Caminho do arquivo do Cloud Storage, clique em Procurar e selecione o bucket do Cloud Storage em que o arquivo do conjunto de dados está localizado.

  9. Em Conjunto de dados do comando, se você quiser fazer upload do arquivo do conjunto de dados, selecione  Fazer upload do arquivo JSONL para o Cloud Storage. Caso contrário, se o arquivo do conjunto de dados de comando já estiver em um bucket do Cloud Storage, selecione  Arquivo JSONL atual no Cloud Storage.

    Fazer upload de um arquivo JSONL

    • Em Selecionar arquivo JSONL, clique em Procurar e selecione o arquivo do conjunto de dados.
    • Em Local do conjunto de dados, clique em Procurar e selecione o bucket do Cloud Storage em que você quer armazenar o arquivo do conjunto de dados.

    Usar um arquivo JSONL

    Em Caminho do arquivo do Cloud Storage, clique em Procurar e selecione o bucket do Cloud Storage em que o arquivo do conjunto de dados está localizado.

  10. (Opcional) Para avaliar o modelo ajustado, faça o seguinte:
    1. Clique em Ativar avaliação do modelo.
    2. Em Conjunto de dados de avaliação, clique em Procurar.
    3. Navegue até o bucket do Cloud Storage que contém o conjunto de dados de avaliação e selecione o conjunto de avaliação.
    Para mais informações, consulte Conjunto de dados de avaliação.
  11. Clique em Iniciar ajuste.

Verificar o status de funcionamento do ajuste

Para verificar o status do job de ajuste do modelo, acesse a página Vertex AI Pipelines no Console do Google Cloud. Nesta página, mostramos o status dos jobs de ajuste de modelos de texto e código.

Acessar "Pipelines"

Como alternativa, é possível configurar notificações por e-mail para o Vertex AI Pipelines para que você seja notificado por e-mail quando o job de ajuste do modelo for concluído ou falhar.

A seguir