43 · Proyecto final: de LLM a asistente
Un LLM crudo solo COMPLETA texto; un asistente SIGUE instrucciones. Dos etapas cierran la brecha: SFT (instruction tuning con demostraciones) y luego RLHF (un modelo de recompensa a partir de preferencias humanas, optimizado con PPO) — o el más simple DPO.
Un LLM pre-entrenado solo COMPLETA texto; convertirlo en un asistente útil e inofensivo requiere dos etapas: SFT (instruction tuning supervisado con demostraciones) y luego RLHF (entrenar un modelo de recompensa a partir de comparaciones de preferencia humana, luego optimizar la política contra él con PPO) — DPO es una alternativa más simple.
Sin esto:
El pre-entrenamiento solo da un motor de completado de texto, no ChatGPT ni Claude. SFT + RLHF es la receta de alineamiento que hace que un LLM crudo siga instrucciones y se comporte de forma útil y segura — el paso final desde el perceptrón de este bootcamp hasta un asistente real.
Un LLM pre-entrenado crudo (lección 38) tiene una sola habilidad: completar texto. Dale "La capital de Francia es" y continúa "París." Pero hazle una pregunta y podría continuar con MÁS preguntas — porque el texto de internet está lleno de listas de preguntas. No es un asistente; es un motor de autocompletado. Un asistente hace algo distinto: SIGUE instrucciones, y busca ser útil e inofensivo (helpful and harmless). Dos etapas convierten uno en el otro — esto es el alineamiento (alignment).
Etapa 1 — SFT (fine-tuning supervisado / instruction tuning). Recolecta un dataset de demostraciones (instrucción, respuesta ideal) escritas por humanos, y ajusta el modelo pre-entrenado sobre ellas (aprendizaje supervisado ordinario, lección 40). Ahora el modelo ha aprendido el FORMATO de ser útil: dada una instrucción, produce una respuesta directa y útil en lugar de divagar. Pero las "buenas demostraciones" son caras, y solo muestran UNA respuesta aceptable por prompt.
Etapa 2 — RLHF (aprendizaje por refuerzo a partir de retroalimentación humana). Es mucho más fácil para los humanos COMPARAR dos respuestas ("¿cuál es mejor?") que escribir una perfecta. Así que: recolecta muchas comparaciones de preferencia, y entrena un modelo de recompensa (reward model) que aprende a asignar una puntuación escalar que coincide con las preferencias humanas. Luego usa aprendizaje por refuerzo (PPO) para optimizar el modelo SFT — la política (policy) — para maximizar esa recompensa, mientras una penalización KL evita que se aleje demasiado del sensato modelo SFT.
DPO (Direct Preference Optimization, optimización directa de preferencias) es una alternativa más simple y cada vez más popular: omite el modelo de recompensa separado y el bucle de RL por completo, optimizando la política directamente sobre los pares de preferencia con una única pérdida estilo clasificación. La celda de abajo construye el corazón de la señal de recompensa — el modelo de Bradley-Terry que convierte dos recompensas escalares en "probabilidad de que un humano prefiera A sobre B."
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Pipeline RLHF: (1) SFT con demostraciones → (2) modelo de recompensa entrenado con la pérdida de ranking Bradley-Terry sobre pares de preferencia → (3) PPO maximizando la recompensa menos una penalización KL hacia la referencia SFT. DPO omite el modelo de recompensa y optimiza la política directamente sobre las preferencias.
¿Cuál es el papel del modelo de recompensa en RLHF?
- Un LLM pre-entrenado solo completa texto; el alineamiento lo convierte en un asistente que sigue instrucciones y es útil e inofensivo vía SFT y luego RLHF.
- SFT ajusta con demostraciones (instrucción, respuesta ideal); RLHF entrena un modelo de recompensa a partir de comparaciones de preferencia humana (Bradley-Terry: P(A>B)=sigmoid(r_A−r_B)) y optimiza la política contra él con PPO + una penalización KL.
- DPO es una alternativa más simple que omite el modelo de recompensa separado y el bucle de RL, optimizando la política directamente sobre los pares de preferencia — y las leyes de escalado (Chinchilla) + las habilidades emergentes explican por qué toda esta receta necesita escala para funcionar.
Todo asistente de chat que usas — ChatGPT, Claude, Gemini — es un LLM pre-entrenado alineado con SFT + RLHF (o DPO). Es la diferencia entre un autocompletado crudo y un modelo que sigue tus instrucciones de forma útil.
Si lo quitas: Sabrías cómo pre-entrenar un modelo de completado de texto pero no cómo se convierte en un asistente usable — perdiéndote el paso de alineamiento que define todo producto con el que la gente realmente chatea.