Pular para o conteúdo principal

Treinamento DPO

A Otimização Direta de Preferências alinha modelos com preferências humanas sem modelagem de recompensa.

O que é DPO?

DPO (Direct Preference Optimization) é uma alternativa mais simples ao RLHF. Em vez de treinar um modelo de recompensa separado, o DPO otimiza diretamente o modelo para preferir respostas escolhidas sobre rejeitadas.

Início Rápido

DPO requer --prompt-text-column e --rejected-text-column. O --text-column tem padrão "text", então especifique apenas se sua coluna escolhida tiver um nome diferente.

Python API

Formato dos Dados

DPO requer pares de preferência: um prompt com respostas escolhida e rejeitada.

Múltiplas Voltas

Parâmetros

Beta

O parâmetro beta controla o quanto o modelo pode se desviar da referência:
  • 0.01-0.05: Otimização agressiva (pode sobreajustar)
  • 0.1: Padrão (recomendado)
  • 0.5-1.0: Conservador (permanece próximo à referência)

Modelo de Referência

Quando model_ref é None (o padrão), o DPO usa o modelo inicial como referência. Você pode especificar um diferente:

Dicas de Treinamento

Use LoRA

DPO funciona bem com LoRA:

Taxa de Aprendizado Mais Baixa

DPO é sensível à taxa de aprendizado:

Menos Épocas

DPO tipicamente precisa de menos épocas:

Exemplo: Assistente Útil

Criar um assistente mais útil:

DPO vs ORPO

Coletando Dados de Preferência

Anotação Humana

  1. Gere múltiplas respostas por prompt
  2. Tenha anotadores classificando respostas
  3. Crie pares escolhido/rejeitado

LLM como Juiz

Próximos Passos

ORPO Training

SFT + alinhamento combinado

Reward Modeling

Treinar modelos de recompensa