Concepto clave
El fine-tuning con RLHF (Reinforcement Learning from Human Feedback) y DPO (Direct Preference Optimization) representa la evolución de cómo ajustamos modelos de lenguaje grandes para alinearlos con preferencias humanas específicas. Imagina que estás entrenando a un asistente personal: primero aprendió el idioma y conocimientos generales (pre-entrenamiento), luego le enseñaste tareas específicas (fine-tuning tradicional), y ahora lo refinas para que tome decisiones que coincidan con tus valores y estilo de comunicación (RLHF/DPO).
La diferencia fundamental entre RLHF y DPO radica en su enfoque: RLHF utiliza un modelo de recompensa como intermediario para guiar el aprendizaje, mientras que DPO optimiza directamente las preferencias sin necesidad de este modelo adicional. En términos prácticos, es como comparar dos métodos para enseñar a alguien a cocinar: RLHF sería darle puntuaciones a cada plato que prepara, mientras que DPO sería mostrarle directamente ejemplos de "buenos" versus "malos" platos y pedirle que aprenda la diferencia.
Cómo funciona en la práctica
Implementar un sistema completo de fine-tuning con RLHF/DPO sigue estos pasos:
- Preparación de datos: Recopilar pares de preferencias donde humanos hayan evaluado respuestas del modelo. Por ejemplo, para un asistente de código, podrías tener:
- Prompt: "Escribe una función Python para ordenar una lista"
- Respuesta preferida: Función eficiente con comentarios claros
- Respuesta no preferida: Función que funciona pero sin optimizar
- Entrenamiento del modelo de recompensa (solo para RLHF): Entrenar un modelo separado que aprenda a puntuar respuestas según preferencias humanas.
- Fine-tuning con RLHF: Usar PPO (Proximal Policy Optimization) para ajustar el modelo base maximizando las recompensas predichas.
- Fine-tuning con DPO: Optimizar directamente la probabilidad de respuestas preferidas sobre no preferidas usando una función de pérdida específica.
- Evaluación iterativa: Medir el rendimiento con métricas como:
Métrica RLHF DPO Tiempo entrenamiento Alto (2 modelos) Moderado (1 modelo) Estabilidad Requiere ajuste fino Más estable Calidad alineación Excelente con datos suficientes Muy buena con menos datos
Caso de estudio
Una startup fintech necesitaba ajustar Llama-3 para generar respuestas de servicio al cliente que fueran precisas, útiles y regulatoriamente conformes. El proceso incluyó:
"Recolectamos 5,000 pares de preferencias de agentes humanos evaluando respuestas a consultas comunes sobre productos de inversión. Cada par incluía una puntuación del 1 al 5 y comentarios específicos sobre qué hacía una respuesta mejor que otra."
Implementaron ambos enfoques en paralelo:
- RLHF: Entrenaron un modelo de recompensa basado en BERT que alcanzó 89% de precisión en predecir preferencias humanas. El fine-tuning con PPO tomó 72 horas en 4 GPUs A100.
- DPO: Usaron los mismos datos pero optimizaron directamente, reduciendo el tiempo de entrenamiento a 24 horas con resultados comparables en evaluaciones ciegas.
Errores comunes
- Sesgo en datos de preferencia: Si los evaluadores humanos tienen sesgos consistentes, el modelo los aprenderá. Solución: Diversificar los evaluadores y usar guías de evaluación claras.
- Overfitting al modelo de recompensa (RLHF): El modelo puede aprender a "engañar" al modelo de recompensa en lugar de mejorar realmente. Solución: Validar con evaluaciones humanas periódicas durante el entrenamiento.
- Ignorar el trade-off ayuda/seguridad: Optimizar solo para respuestas útiles puede llevar a respuestas no seguras. Solución: Incluir preferencias explícitas sobre seguridad en los datos de entrenamiento.
- Escala incorrecta de recursos: Subestimar los requerimientos computacionales. Solución: Empezar con un subconjunto de datos para estimar tiempos antes del entrenamiento completo.
Checklist de dominio
- Puedo explicar la diferencia matemática entre la función de pérdida de RLHF vs DPO
- He preparado al menos 1,000 pares de preferencias de calidad para un dominio específico
- Sé cómo balancear el dataset para evitar sesgos sistemáticos
- Puedo implementar tanto el pipeline de RLHF como el de DPO desde cero
- He evaluado modelos ajustados con métricas automatizadas y humanas
- Entiendo cuándo usar RLHF (datos abundantes) vs DPO (recursos limitados)
- Puedo debuggear problemas comunes de estabilidad durante el entrenamiento
Implementación comparativa RLHF vs DPO en dataset real
En este ejercicio, implementarás ambos enfoques de fine-tuning en un dataset de preferencias real y compararás resultados.
- Prepara el entorno:
- Instala transformers, trl, y datasets de Hugging Face
- Configura acceso a al menos 16GB de GPU (puede ser Colab Pro o instancia cloud)
- Carga y explora datos:
- Descarga el dataset "Anthropic/hh-rlhf" que contiene conversaciones con preferencias humanas
- Analiza la distribución de preferencias y identifica posibles sesgos
- Preprocesa para tener formato: prompt, respuesta_chosen, respuesta_rejected
- Implementa RLHF:
- Entrena un modelo de recompensa usando 70% de los datos
- Ajusta el modelo base (ej: GPT-2 small) usando PPO con el modelo de recompensa
- Configura los hiperparámetros: learning_rate=1e-6, batch_size=4
- Implementa DPO:
- Usa el mismo modelo base inicial
- Entrena con la función de pérdida DPO en los mismos datos
- Mantén hiperparámetros comparables para comparación justa
- Evalúa y compara:
- Genera respuestas para 100 prompts de test con ambos modelos
- Calcula métricas: coherencia (perplexity), utilidad (evaluación con GPT-4 como juez), y alineación (porcentaje que coincide con preferencias humanas)
- Documenta tiempos de entrenamiento y uso de recursos
- Comienza con un subconjunto pequeño de datos (500 ejemplos) para debuggear el pipeline antes de escalar
- Para el modelo de recompensa en RLHF, un BERT-base suele ser suficiente y más rápido de entrenar
- Monitoriza la pérdida de política en RLHF - si diverge, reduce el learning rate o ajusta el clipping
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.