Saltar al contenido principal

Entrenamiento DPO

La Optimización Directa de Preferencias alinea modelos con preferencias humanas sin modelado de recompensas.

¿Qué es DPO?

DPO (Direct Preference Optimization) es una alternativa más simple a RLHF. En lugar de entrenar un modelo de recompensa separado, DPO optimiza directamente el modelo para preferir respuestas elegidas sobre rechazadas.

Inicio Rápido

DPO requiere --prompt-text-column y --rejected-text-column. El --text-column tiene por defecto "text", así que solo especifícalo si tu columna elegida tiene un nombre diferente.

Python API

Formato de Datos

DPO requiere pares de preferencia: un prompt con respuestas elegida y rechazada.

Múltiples Turnos

Parámetros

Beta

El parámetro beta controla cuánto puede desviarse el modelo de la referencia:
  • 0.01-0.05: Optimización agresiva (puede sobreajustar)
  • 0.1: Estándar (recomendado)
  • 0.5-1.0: Conservador (permanece cerca de la referencia)

Modelo de Referencia

Cuando model_ref es None (el defecto), DPO usa el modelo inicial como referencia. Puedes especificar uno diferente:

Consejos de Entrenamiento

Usa LoRA

DPO funciona bien con LoRA:

Tasa de Aprendizaje Más Baja

DPO es sensible a la tasa de aprendizaje:

Menos Épocas

DPO típicamente necesita menos épocas:

Ejemplo: Asistente Útil

Crear un asistente más útil:

DPO vs ORPO

Recolectando Datos de Preferencia

Anotación Humana

  1. Genera múltiples respuestas por prompt
  2. Ten anotadores clasificando respuestas
  3. Crea pares elegido/rechazado

LLM como Juez

Próximos Pasos

ORPO Training

SFT + alineación combinado

Reward Modeling

Entrenar modelos de recompensa