Otimização direta de preferências (pré-visualização) (clássico)

Atualmente a ver:versão do portal Foundry (clássica) - Trocar para a versão do novo portal Foundry

A otimização direta por preferências (DPO) é uma técnica de alinhamento para grandes modelos de linguagem, utilizada para ajustar os pesos dos modelos com base nas preferências humanas. Difere da aprendizagem por reforço a partir de feedback humano (RLHF) porque não requer ajustar um modelo de recompensa e utiliza preferências binárias de dados mais simples para treino. É computacionalmente mais leve e mais rápido do que o RLHF, sendo igualmente eficaz no alinhamento.

Porque é que a DPO é útil?

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

O DPO facilita a geração de conjuntos de dados de treino de alta qualidade. Embora muitas organizações tenham dificuldade em gerar conjuntos de dados suficientemente grandes para ajuste fino supervisionado, frequentemente já têm dados de preferência recolhidos com base em registos de utilizadores, testes A/B ou pequenos esforços manuais de anotação.

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

Os ficheiros de otimização direta por preferência têm um formato diferente do ajuste fino supervisionado. Fornece uma "conversa" contendo a mensagem do sistema e a mensagem inicial do utilizador, e depois "complementos" com dados de preferência associados. Só podes fornecer duas conclusãos.

O conjunto de dados utiliza três campos de topo:

Campo Obrigatório Descrição
input Sim Contém a mensagem do sistema e a mensagem inicial do utilizador
preferred_output Sim Deve conter pelo menos uma mensagem de assistente (funções: assistente, apenas ferramenta)
non_preferred_output Sim Deve conter pelo menos uma mensagem de assistente (funções: assistente, apenas 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 treino devem estar no 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 direta de preferências

Os seguintes modelos suportam o ajuste fino de otimização direta por preferência:

Modelo Apoio à DPO Disponibilidade regional
gpt-4o-2024-08-06 Sim Ver modelos de afinação
gpt-4.1-2025-04-14 Sim Ver modelos de afinação
gpt-4.1-mini-2025-04-14 Sim Ver modelos de afinação

Pode-se usar o ajuste fino por preferência com modelos base e com modelos já ajustados com ajuste fino supervisionado, desde que sejam modelos e versões suportados.

Como usar otimização direta de preferências finas

  1. Prepara jsonl conjuntos de dados no formato de preferências.
  2. Selecione o modelo e, em seguida, escolha o método de personalização Otimização Direta por Preferência.
  3. Carregar conjuntos de dados – treino e validação. Pré-visualiza conforme necessário.
  4. Selecione hiperparâmetros, recomendam-se os padrões para a experimentação inicial.
  5. Revise as seleções e faça uma tarefa de ajuste fino.

Otimização direta de preferências - 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óximos passos