Pular para o conteúdo principal

Ajuste fino de preferências da OpenAI: Um guia com exemplos

Saiba como alinhar grandes modelos de linguagem com as preferências do usuário usando o ajuste fino de preferências da OpenAI e a otimização direta de preferências.
Actualizado 7 de jan. de 2025  · 8 min de leitura

O ajuste fino de preferências (PFT) é uma técnica usada há muito tempo para ajustar os LLMs. A OpenAI o apresentou recentemente como parte de seus 12 dias de lançamento de recursos.

Juntamente com o ajuste fino supervisionado (SFT) e o ajuste fino de reforço (RFT)o PFT é outra maneira de alinhar grandes modelos de linguagem com as preferências do usuário.

Neste artigo, explicarei rapidamente o ajuste fino de preferências e mostrarei a você como usá-lo com o mínimo de esforço no painel do desenvolvedor da OpenAI.

O que é o ajuste fino de preferências da OpenAI?

Enquanto o objetivo do ajuste fino supervisionado padrão é fazer com que o modelo retorne determinados resultados com determinadas entradas, o foco do ajuste fino de preferências (PFT) é direcionar o modelo para produzir as respostas de que gostamos e ficar longe das respostas que não gostamos.

Otimização direta de preferências (DPO) é a técnica padrão em PFT e ganhou popularidade como uma técnica de alinhamento forte por sua simplicidade e eficácia.

Diferente de aprendizado por reforço a partir de feedback humano (RLHF)o DPO não exige um modelo de recompensa complexo para alinhar o modelo de linguagem grande (LLM), mas, em vez disso, trata o problema de alinhamento como uma otimização "direta" de uma função de perda. Isso torna o DPO mais fácil de implementar e mais eficiente do ponto de vista computacional.

O conjunto de dados necessário para o OPD, assim como outros métodos de alinhamento, inclui um par de respostas "preferidas" e "não preferidas" para um determinado prompt. No caso do PFT da OpenAI, semelhante a outros métodos de ajuste fino, o conjunto de dados deve estar noformato JSONL e ter a seguinte estrutura:

{
  "input": {
    "messages": [
      {
        "role": "user",
        "content": "Hello, can you tell me how cold San Francisco is today?"
      }
    ],
    "tools": [],
    "parallel_tool_calls": true
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": "Today in San Francisco, it is not quite cold as expected. Morning clouds will give away to sunshine, with a high near 68°F (20°C) and a low around 57°F (14°C)."
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": "It is not particularly cold in San Francisco today."
    }
  ]
}

A documentação oficial da OpenAI oficial da OpenAI para o PFT recomenda que você combine o SFT e o PFT para obter um melhor alinhamento. As técnicas de alinhamento, como o PFT, são comumente usadas após o ajuste fino do modelo em um conjunto de dados supervisionado. A combinação de SFT com PFT é considerada um padrão do setor e também é defendida pela OpenAI.

Como formatar o conjunto de dados para ajuste fino de preferências

Antes de qualquer coisa, precisamos garantir que nosso conjunto de dados esteja no formato necessário para o ajuste fino das preferências da OpenAI.

Há várias maneiras de criar um conjunto de dados de preferências. Um método é recuperar pares de saídas do LLM com diferentes temperaturas, top_k ou solicitações do sistema e, em seguida, usar outro LLM, de preferência um mais capaz, para escolher uma saída como "preferida" e a outra como "não preferida".

Para a demonstração deste tutorial, farei o download de um conjunto de dados de preferências do Hugging Face e o reestruturarei. Eu usarei argilla/ultrafeedback-binarized-preferencesque é um conjunto de dados de preferências, mas obterei apenas as primeiras 50 linhas.

Um exemplo de um conjunto de dados de preferências do Hugging Face.

Um exemplo de um conjunto de dados de preferências do Hugging Face.

Um script Python seria suficiente para converter a estrutura do conjunto de dados para os requisitos de ajuste fino da OpenAI, mas você pode decidir seguir outra abordagem com base no seu aplicativo.

import datasets
import copy 
import json

instance_structure = {
  "input": {
    "messages": [
      {
        "role": "user",
        "content": ""
      }
    ],
    "tools": [],
    "parallel_tool_calls": True
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ]
}

ds = datasets.load_dataset("argilla/ultrafeedback-binarized-preferences", trust_remote_code=True, split="train")
ds_sample = ds.select(range(50)) #select the first 50 rows
ds_list = []
for sample in ds_sample:
  instance = copy.deepcopy(instance_structure)
  instance["input"]["messages"][0]["content"] = sample["instruction"]
  instance["preferred_output"][0]["content"] = sample["chosen_response"]
  instance["non_preferred_output"][0]["content"] = sample["rejected_response"]
  ds_list.append(instance)
  
with open("preference_dataset.jsonl", 'w') as out:
  for json_line in ds_list:
      jout = json.dumps(json_line) + '\\n'
      out.write(jout)

Certifique-se de que o formato do seu conjunto de dados seja jsonl e não json. Você provavelmente terá uma linha vazia no final do arquivo, portanto, certifique-se de removê-la.

Como executar o ajuste fino de preferências da OpenAI

Com o conjunto de dados preparado, você pode seguir estas etapas para executar o ajuste fino de preferências:

  1. Acesse o painel de controle da OpenAI.
  2. Procure a seção de ajuste fino e selecione Criar para criar um novo trabalho de ajuste fino.
  3. Escolha a otimização de preferência direta como seu método de ajuste fino.
  4. Carregue seus dados de treinamento e validação (se você tiver um).

Captura de tela de ajuste fino do painel da OpenAI.

O OpenAI permite que você especifique hiperparâmetros, mas também pode deixá-los vazios, e o sistema decidirá automaticamente. Dependendo do tamanho do conjunto de dados, o treinamento pode demorar um pouco.

Conclusão

A otimização direta de preferências é um novo recurso útil na caixa de ferramentas de ajuste fino da OpenAI que permite que você controle explicitamente o tom e o estilo da resposta do seu modelo e o torne mais alinhado com a preferência do usuário.

Assim como acontece com a destilação, o ajuste fino de reforço e o ajuste fino supervisionado da OpenAI, sua principal contribuição no ajuste fino de preferência seria preparar o conjunto de dados de acordo com o formato e a estrutura da OpenAI, e as ferramentas deles cuidarão do resto:

Para saber mais, recomendo estes recursos:


Photo of Hesam Sheikh Hassani
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Estudante de mestrado em Inteligência Artificial e redatora técnica de IA. Compartilho insights sobre a mais recente tecnologia de IA, tornando a pesquisa de ML acessível e simplificando tópicos complexos de IA necessários para manter você na vanguarda.

Temas

Aprenda IA com estes cursos!

Certificação disponível

curso

Desenvolvimento de sistemas de IA com a API OpenAI

3 hr
4.6K
Aproveite a API OpenAI para deixar seus aplicativos de IA prontos para produção.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Como fazer o ajuste fino do GPT 3.5: Liberando todo o potencial da IA

Explore o GPT-3.5 Turbo e descubra o potencial transformador do ajuste fino. Saiba como personalizar esse modelo de linguagem avançado para aplicativos de nicho, aprimorar seu desempenho e entender os custos associados, a segurança e as considerações de privacidade.
Moez Ali's photo

Moez Ali

11 min

tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

Guia para iniciantes do LlaMA-Factory WebUI: Ajuste fino dos LLMs

Saiba como fazer o ajuste fino dos LLMs em conjuntos de dados personalizados, avaliar o desempenho e exportar e servir modelos com facilidade usando a estrutura com pouco ou nenhum código do LLaMA-Factory.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Ajuste fino do Llama 3.1 para classificação de textos

Comece a usar os novos modelos Llama e personalize o Llama-3.1-8B-It para prever vários distúrbios de saúde mental a partir do texto.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

DCLM-7B da Apple: Configuração, exemplo de uso, ajuste fino

Comece a usar o modelo de linguagem grande DCLM-7B da Apple e saiba como configurá-lo, usá-lo e ajustá-lo para tarefas específicas.
Dimitri Didmanidze's photo

Dimitri Didmanidze

9 min

See MoreSee More