Python Data Science Program
📓 Abrir notebook en GitHub

Clase 150 — DPO y RLHF: alineamiento de LLMs

Parte: 2 — Deep Learning · Fuente: Ouyang et al. (2022) InstructGPT/RLHF + Rafailov et al. (2023) DPO + papers IPO/KTO/ORPO. ⏱️ Duración estimada: 95 min.

🎯 Objetivo

Alinear LLMs con preferencias humanas (helpful, harmless, honest). Cubrir RLHF clásico (SFT → Reward Model → PPO, complejo) y DPO (Direct Preference Optimization, moderno y simple). Conocer variantes 2023-2024: IPO, KTO, ORPO.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Dataset de preferencias: cargar Anthropic/hh-rlhf. Inspeccionar chosen y rejected.
  2. DPO con TRL: DPOTrainer(model, ref_model, ...) con LoRA encima. Train 1 época.
  3. Eval pre/post: generar respuestas a 20 prompts antes y después; comparar manualmente.
  4. β sensitivity: probar β ∈ {0.1, 0.3, 1.0}. β alto → menos cambio; β bajo → más agresivo.
  5. KTO: dataset con solo chosen (no pairs). Aplicar KTOTrainer.

📝 Homework verificable

DPO sobre un dominio propio:

  1. Dataset de 200-500 pares (puede ser sintético con LLM como judge).
  2. Base: modelo SFT propio (de 128a).
  3. DPO con LoRA, β=0.1.
  4. Comparar 20 respuestas pre/post; evaluar con LLM-as-judge (e.g., Claude).

Criterio de aceptación: ≥ 60 % de los outputs post-DPO son juzgados mejores que pre.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
DPO degrada calidad β muy bajo o demasiadas épocas. Fix: β=0.1-0.5, 1-2 épocas.
Reward hacking en RLHF Modelo aprende a hacer trampas al RM. Fix: DPO no tiene este problema.
ref_model consume mucha VRAM Copia frozen del modelo. Fix: usar ref_model=None y el adapter LoRA — TRL infere ref desde base.
Dataset de pairs muy ruidoso Annotators inconsistentes. Fix: filtering, quality control.
Resultados malos sin SFT previo DPO asume modelo razonable. Fix: SFT primero, después DPO.

❓ Preguntas frecuentes

❓ DPO o RLHF clásico?

DPO por default 2024+ — más simple, casi igual calidad. RLHF si tenés team y reward model bueno (e.g., GPT-4 / Claude para producción).

❓ ¿IPO, KTO, ORPO cuál?

DPO sigue siendo default. IPO si DPO inestable. KTO si solo tenés chosen. ORPO combina SFT+pref → más eficiente, en alza.

❓ ¿Dataset de cuántos pairs?

10k-50k para alineamiento serio. 500-2000 para experimentos.

❓ Evaluación cómo?

LLM-as-judge (GPT-4/Claude evalúa pares), MT-Bench, AlpacaEval. Human eval para gold standard.

❓ ¿DPO en LLMs > 70B?

Sí, con FSDP / DeepSpeed. Trabajo "expensive" pero factible.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 151 — vLLM y TGI: serving de LLMs en producción