Saltar al contenido principal

Capítulo 2: Optimización Directa de Preferencias

Alternativa más simple a RLHF​

DPO optimiza directamente para las preferencias humanas sin necesidad de un modelo de recompensa separado.


DPO vs RLHF​

AspectoRLHFDPO
Modelo de recompensaRequeridoNo necesario
Entrenamiento RLPPO/similarOptimización directa
ComplejidadAltaMenor
EstabilidadPuede ser inestableMás estable

Formato de datos de preferencias​

{
"prompt": "Explain quantum computing",
"chosen": "Quantum computing uses qubits...",
"rejected": "Quantum computers are just faster..."
}

Implementación de DPO​

from trl import DPOTrainer, DPOConfig

dpo_config = DPOConfig(
beta=0.1, # KL penalty weight
learning_rate=5e-7,
num_train_epochs=1,
gradient_accumulation_steps=4,
bf16=True,
)

trainer = DPOTrainer(
model=model,
ref_model=ref_model, # Reference model for KL
args=dpo_config,
train_dataset=preference_dataset,
tokenizer=tokenizer,
)

trainer.train()

Parámetro clave: Beta​

  • Beta baja (0.01-0.05): Optimización más fuerte
  • Beta alta (0.5-1.0): Se mantiene cerca del modelo de referencia
  • Por defecto (0.1): Buen equilibrio

Continuar al Capítulo 3 →