Otimização de preferência direta (versão prévia) (clássico)

Exibição no momento:Versão do portal Foundry (clássico) - Alternar para a versão do novo portal Foundry

A DPO (otimização de preferência direta) é uma técnica de alinhamento para modelos de linguagem grandes, usada para ajustar os pesos do modelo com base nas preferências humanas. Ela difere do aprendizado por reforço com feedback humano (RLHF) porque não requer o ajuste de um modelo de recompensa e utiliza preferências de dados binárias mais simples para treinamento. Ele é computacionalmente mais leve e mais rápido que RLHF, enquanto é igualmente eficaz no alinhamento.

Por que o DPO é útil?

O DPO é especialmente útil em cenários em que não há resposta correta clara e elementos subjetivos como tom, estilo ou preferências de conteúdo específicas são importantes. Essa abordagem também permite que o modelo aprenda com exemplos positivos (o que é considerado correto ou ideal) e exemplos negativos (o que é menos desejado ou incorreto).

O DPO facilita a geração de conjuntos de dados de treinamento de alta qualidade. Embora muitas organizações tenham dificuldades para gerar conjuntos de dados suficientemente grandes para ajuste fino supervisionado, elas geralmente têm dados de preferência já coletados com base em logs de usuário, testes A/B ou esforços de anotação manuais menores.

Formato do conjunto de dados de otimização de preferência direta

O formato dos arquivos de otimização de preferência direta é diferente do ajuste fino supervisionado. Você fornece uma "conversa" que contém a mensagem do sistema e a mensagem inicial do usuário e, em seguida, "conclusões" com dados de preferência emparelhados. Você só pode fornecer duas conclusões.

O conjunto de dados usa três campos de nível superior:

Campo Necessário Descrição
input Sim Contém a mensagem do sistema e a mensagem inicial do usuário
preferred_output Sim Deve conter pelo menos uma mensagem de assistente (funções: assistente, somente ferramenta)
non_preferred_output Sim Deve conter pelo menos uma mensagem de assistente (funções: assistente, somente ferramenta)
{  
  "input": {  
    "messages": [{"role": "system", "content": ...}],  
    "tools": [...],  
    "parallel_tool_calls": true  
  },  
  "preferred_output": [{"role": "assistant", "content": ...}],  
  "non_preferred_output": [{"role": "assistant", "content": ...}]  
}  

Os conjuntos de dados de treinamento devem estar em jsonl formato:

{{"input": {"messages": [{"role": "system", "content": "You are a chatbot assistant. Given a user question with multiple choice answers, provide the correct answer."}, {"role": "user", "content": "Question: Janette conducts an investigation to see which foods make her feel more fatigued. She eats one of four different foods each day at the same time for four days and then records how she feels. She asks her friend Carmen to do the same investigation to see if she gets similar results. Which would make the investigation most difficult to replicate? Answer choices: A: measuring the amount of fatigue, B: making sure the same foods are eaten, C: recording observations in the same chart, D: making sure the foods are at the same temperature"}]}, "preferred_output": [{"role": "assistant", "content": "A: Measuring The Amount Of Fatigue"}], "non_preferred_output": [{"role": "assistant", "content": "D: making sure the foods are at the same temperature"}]}
}

Suporte ao modelo de otimização de preferência direta

Os seguintes modelos dão suporte ao ajuste de otimização de preferência direta:

Modelo Suporte ao DPO Disponibilidade da região
gpt-4o-2024-08-06 Sim Ver modelos de ajuste fino
gpt-4.1-2025-04-14 Sim Ver modelos de ajuste fino
gpt-4.1-mini-2025-04-14 Sim Ver modelos de ajuste fino

Você pode usar o ajuste fino de preferência com modelos base e modelos já ajustados usando o ajuste fino supervisionado, desde que sejam um modelo e uma versão com suporte.

Como usar o ajuste fino da otimização de preferências diretas

  1. Prepare jsonl conjuntos de dados no formato de preferência.
  2. Selecione o modelo e, em seguida, selecione o método de otimização de preferência direta de personalização.
  3. Carregar conjuntos de dados – treinamento e validação. Visualização conforme necessário.
  4. Selecione hiperparâmetros, os padrões são recomendados para experimentação inicial.
  5. Examine as seleções e crie um trabalho de ajuste fino.

Otimização de preferência direta – API REST

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs'
-H "api-key: $AZURE_OPENAI_API_KEY" 
-H 'Content-Type: application/json' 
-H 'task_type: chat' 
--data '{ "model": "gpt-4.1-mini-2025-04-14", "training_file": "file-d02c607351994d29987aece550ac81c0", "validation_file": "file-d02c607351994d29987aece550ac81c0", "prompt_loss_weight": 0.1, "suffix": "Pause_Resume", "method":{ "type":"dpo", "dpo":{ "beta":0.1, "l2_multiplier":0.1 }}}'

Próximas etapas