las ecuaciones de esta slide
TCO12 = Cfijo + 12·cq·Q + ce·n(modelo de coste)
coste total de propiedad a 12 meses: Cfijo = puesta en marcha (indexar el corpus, horas de prompt engineering, GPU del fine-tune); cq = coste marginal por consulta (en RAG ≈ 0,02 € por embeddings + tokens extra de contexto, cifra de la nota técnica); Q = consultas/mes; ce = euros por ejemplo etiquetado; n = ejemplos. Cada técnica activa unos términos y apaga otros.
prompt < RAG < LoRA < SFT total < DPO < RLHF(escalera de cómputo)
la escalera del deck ordena el cómputo. Con el etiquetado dentro (TCO), SFT total (50 000 ejemplos × 2 €) llega a superar a DPO. La regla de la nota técnica: sube de peldaño solo cuando el inferior se quede corto.
TécnicaDatosTCO 12 m
guion paso a paso
  1. Sube Q hasta 100 000 consultas/mes. El TCO de RAG escala lineal hasta ≈24 200 €/año y cruza la línea plana de LoRA: el punto dorado del panel inferior marca el cruce Q*.
  2. Baja n a 100 ejemplos. LoRA cae a 250 € y el cruce Q* se desploma a ≈200 consultas/mes: con pocos datos que etiquetar, LoRA amortiza casi desde el primer día.
  3. Mira la tabla: SFT total y RLHF no se mueven con tus sliders. Su coste lo domina el etiquetado masivo (100 k€ / 30 k€), no la GPU: por eso casi nadie los hace en producción.
  4. Busca la pareja (Q, n) donde RAG y LoRA empatan exactamente. La frontera es la recta Q* = (2n − 150)/0,24: la decisión RAG vs LoRA es aritmética, no fe.
Comprueba que entiendes: si el prompt engineering tiene el TCO más bajo, ¿por qué no gana siempre?
Porque el eje de coste no captura la calidad: el prompting no cambia θ y no puede aprender un tono o formato fino, ni meter en contexto un conocimiento que no cabe. La escalera se sube cuando la calidad del peldaño inferior se queda corta, nunca por gusto: esa es la regla práctica de la nota técnica, y el resto del día explica qué compra exactamente cada peldaño.

Setup. Un banco tipo BBVA quiere un asistente interno sobre su normativa y con su tono. Sobre el LLM base fθ₀ hay cinco vías de adaptación (tabla de la nota técnica): prompting/few-shot y RAG no tocan θ; LoRA entrena adaptadores diminutos; SFT total y RLHF/DPO tocan muchos más pesos y muchos más euros. Arriba: cada técnica como un punto en el cuadrante datos × coste (ambos ejes log), con los puntos de RAG y LoRA moviéndose con tus sliders. Abajo: el TCO anual de RAG (crece con Q) contra el de LoRA (plano en Q), con su cruce Q* calculado en vivo.

Juega. El caso Telefónica del deck vive aquí: LoRA con 1 000 ejemplos son ≈2 050 € todo incluido (50 € de GPU, el resto datos) frente a los 10 000 € de GPU del full fine-tuning sin contar sus 50 000 ejemplos. Mueve Q y n y observa qué técnicas se mueven contigo y cuáles son rocas.

Lee así. El cuadrante es el mapa del día: hoy bajaremos a la matemática de LoRA (por qué 50 € bastan), de SFT (qué compra cada ejemplo), y de RLHF/DPO (qué pasa cuando la calidad es una preferencia y no una etiqueta).

Mensaje. Para el 90 % de los casos corporativos, la respuesta es RAG + LoRA. El resto del deck te da los números para defender esa frase delante de un comité de inversión.

Términos. TCO: coste total de propiedad (fijo + por consulta + etiquetado). RAG: recuperar documentos e inyectarlos en el prompt, sin tocar pesos. LoRA: adaptadores de rango bajo sobre el modelo congelado. Q*: volumen de consultas donde dos técnicas empatan en coste.

las ecuaciones de esta slide
W′ = W + ΔW,    ΔW = αr B A(Ec. LoRA)
la matriz original W ∈ Rd×d queda congelada; lo único entrenable es la perturbación ΔW, factorizada como producto de B ∈ Rd×r (up-projection, inicializada a cero) por A ∈ Rr×d (down-projection, inicializada gaussiana), con r ≪ d y un factor de escala α/r (típicamente α = r o 2r).
#params: d·d  →  r·(d+d) = 2rd,    2rd = 2rd(ahorro)
de los parámetros del full fine-tuning a los 2rd de LoRA: el cociente 2r/d es la fracción entrenable. Con d = 4096 y r = 8 sale 0,39 %: el factor ∼1000× de la nota técnica (en general, de mn a r(m+n)).
guion paso a paso
  1. Deja los valores por defecto (d = 4096, r = 8). El readout da 16.777.216 parámetros congelados frente a 65.536 entrenables, el 0,39 %: los números exactos de la slide del deck.
  2. Sube r a 64. La fracción entrenable sube solo al 3,1 % y el factor de ahorro d/(2r) sigue siendo 32×: incluso el rango "grande" es ridículo al lado de W.
  3. Con r = 8, sube d a 8192. La fracción entrenable BAJA al 0,20 %: cuanto más grande el modelo, más barato es LoRA en términos relativos (el ahorro escala con d).
  4. Pon r = 1. B y A son hilos de un píxel en el dibujo a escala, y aun así mueven la salida de la capa entera en una dirección: la slide del forward pass te enseña cuál.
Comprueba que entiendes: ¿por qué B se inicializa a cero y A gaussiana?
Porque así ΔW = BA = 0 en el paso 0: el modelo adaptado arranca siendo exactamente el modelo base, sin romper nada de lo aprendido. Y el gradiente no se atasca: como A es gaussiana (no nula), ∂L/∂B ∝ (…)AT ≠ 0 desde el primer paso, y B empieza a crecer desde cero solo en las direcciones que los datos piden. Si ambas fueran cero, el producto tendría gradiente nulo y nada aprendería.

Setup. Una capa lineal de un LLM tipo Llama es una matriz W de 4096×4096. El full fine-tuning actualiza sus 16,7 millones de entradas (y hay cientos de capas). LoRA congela W y añade el rodeo B·A: comprimir la entrada de d dimensiones a r (matriz A), volver a expandir de r a d (matriz B). Arriba: las tres matrices dibujadas a escala real; el área de cada rectángulo es proporcional a su número de parámetros. Abajo: las mismas áreas como barras en escala logarítmica.

Juega. El dibujo a escala es el argumento de venta completo: con r = 8 y d = 4096, B y A juntas son una franja casi invisible pegada a un continente. Es la "gafa graduada" del deck: el cerebro (W) no se toca; la lente (BA) corrige la salida. Y como W no cambia, puedes tener N lentes (legal, riesgos, marketing) y cambiarlas en segundos sobre el mismo modelo base.

Lee así. El readout da los tres números que gobiernan el coste: parámetros congelados (d²), entrenables (2rd) y su cociente. La GPU solo necesita gradientes y estados de optimizador para los segundos: de ahí saldrá la slide de memoria.

Mensaje. LoRA no es un truco de compresión del modelo: es una parametrización del cambio. La pregunta de por qué un cambio de rango 8 basta para adaptar una matriz de rango 4096 la responde la slide siguiente, con una SVD de verdad.

Términos. rango r: número de direcciones independientes del cambio ΔW. down/up-projection: A comprime (r×d), B expande (d×r). α: escala fija de la corrección, no se aprende. congelar: excluir de gradientes y optimizador.

las ecuaciones de esta slide
M = Σk=1..d σk ukvkT,    Mr = Σk=1..r σk ukvkT(SVD truncada)
toda matriz es una suma de capas de rango 1, ordenadas por importancia σ1 ≥ σ2 ≥ … (valores singulares). Quedarse con las r primeras capas es la SVD truncada: una matriz de rango r, igual que el producto BA de LoRA.
E(r) = ‖M−MrF‖M‖F = (Σk>r σk²Σk σk²)1/2(Eckart–Young)
el teorema de Eckart–Young: ninguna matriz de rango r aproxima mejor a M que su SVD truncada, y el error que pagas es exactamente la energía de los valores singulares descartados. Si el espectro se hunde rápido, r pequeño casi no pierde: la razón geométrica de que LoRA funcione.
guion paso a paso
  1. Pon r = 1. El heatmap reconstruido ya recuerda a M: una sola capa de rango 1 captura la mayor parte de la energía (míralo en el readout).
  2. Sube a r = 4. El error relativo cae por debajo del ≈15 % y la curva inferior se aplana: las 18 dimensiones restantes son casi puro ruido.
  3. Lleva r a 22. Error exactamente 0: con rango completo la SVD reproduce M… pero almacenas 484 números en vez de los 180 de r = 4.
  4. Pulsa "otra matriz" varias veces con r = 4. El codo de la curva se queda siempre en r ≈ 4: no era suerte de una semilla; es la estructura (rango efectivo) de la matriz la que manda.
Comprueba que entiendes: ¿qué tiene que ver Eckart–Young con que r = 8 baste en LoRA?
Eckart–Young dice que la mejor aproximación de rango r es la SVD truncada y que su error es la energía de las σ descartadas. Hu et al. midieron que el ΔW que produce el fine-tuning completo tiene un espectro que se hunde rápido: la actualización útil vive en un subespacio de dimensión pequeña, como nuestra M de juguete. Parametrizar el cambio directamente como BA de rango 8 descarta casi solo ruido. Ojo: el teorema habla de aproximar una matriz dada; LoRA aprende su BA por gradiente, pero la garantía de que el objetivo es alcanzable con rango bajo viene de aquí.

Setup. Genero una matriz M de 22×22 con estructura (cuatro patrones suaves de pesos 10, 4, 2 y 1) más ruido pequeño: el mismo aspecto que tiene el ΔW de un fine-tuning real. El JS calcula su SVD de verdad: diagonaliza MTM con rotaciones de Jacobi (un algoritmo clásico de álgebra numérica, ejecutado en tu navegador ahora mismo), extrae los 22 valores singulares y reconstruye Mr con las r capas más importantes. Arriba: M original y su reconstrucción lado a lado. Abajo: el espectro σk (barras, doradas las retenidas) y la curva de error E(r) con tu r marcado.

Juega. El espectro es la radiografía: cuatro barras grandes y un suelo plano de ruido. El error cae a plomo mientras recorres las barras grandes y se arrastra después: cada rango extra a partir del codo compra casi nada. Ese codo es el "r" que eliges en LoRA.

Lee así. El readout traduce a almacenamiento: M completa son 484 números; el formato factorizado son 45r (las uk, vk y σk). En la capa real de la slide anterior la misma cuenta es d² contra 2rd.

Mensaje. LoRA funciona porque los cambios que pide una adaptación (tono BBVA, formato de factura) son de rango efectivo bajo. No es un milagro de deep learning: es Eckart–Young aplicado al fine-tuning.

Términos. σk: valores singulares, la "importancia" de cada capa de rango 1. ‖·‖F: norma de Frobenius (raíz de la suma de cuadrados). Jacobi: método iterativo que anula entradas fuera de la diagonal con rotaciones 2×2. rango efectivo: cuántas σ sobresalen del ruido.

las ecuaciones de esta slide
W′x = Wx + αr B(Ax)(forward LoRA)
en inferencia nunca se forma ΔW: se calcula Ax (un vector de r números: cuánto "activa" x cada dirección del adaptador), se reexpande con B y se suma a la salida original. La corrección es aditiva y de rango r.
W = (1 2; 3 4), A = (0.1, 0.2), B = (0.5, 0.3)T, x = (1,1)T  ⇒  W′x = (3.15, 7.09)T(ejemplo del deck)
con α = r = 1: Wx = (3, 7)T; Ax = 0.1·1 + 0.2·1 = 0.3 (un escalar, porque r = 1); B·0.3 = (0.15, 0.09)T; suma: (3.15, 7.09)T. Los sliders de esta slide reproducen exactamente esta cuenta.
guion paso a paso
  1. Deja los valores por defecto (x = (1,1), α = 1). El readout reproduce el deck dígito a dígito: Wx = (3, 7), BAx = (0.15, 0.09), W′x = (3.15, 7.09).
  2. Sube α a 4. La flecha dorada se estira exactamente ×4: α/r es el volumen de la corrección, un hiperparámetro que tú fijas, no algo aprendido.
  3. Pon x = (2, −1). Ax = 0.1·2 − 0.2 = 0: la corrección desaparece por completo. LoRA solo actúa sobre la componente de x en la dirección que A "mira"; lo ortogonal pasa intacto.
  4. Mueve x₂ de −2 a 2. La flecha dorada cambia de tamaño y de signo pero SIEMPRE apunta según B = (0.5, 0.3): con r = 1 solo existe una dirección de salida posible.
Comprueba que entiendes: si B(Ax) solo puede apuntar en la dirección de B, ¿cómo adapta nada útil?
Esta demo es el átomo del mecanismo: una capa, r = 1. En el modelo real hay una pareja (B, A) por cada matriz adaptada (Wq y Wv de cada bloque de atención) y r > 1 da r direcciones de entrada y r de salida por matriz. Decenas de capas × 2 matrices × r direcciones, compuestas a través de no-linealidades, generan un cambio de comportamiento rico — aunque cada átomo sea tan rígido como el que tienes delante.

Setup. Esta es la slide del deck "LoRA forward pass" hecha manipulable. W = (1 2; 3 4) congelada, el adaptador con los valores exactos del deck (A = (0.1, 0.2), B = (0.5, 0.3)T) y tú controlas la entrada x y la escala α. Arriba: el plano de salida con la flecha tinta Wx (lo que decía el modelo base), la flecha dorada (α/r)B(Ax) colgada de su punta (la corrección del adaptador) y la flecha profunda W′x (lo que dice el modelo adaptado). Abajo: las mismas cantidades por componente, como barras.

Juega. La geometría cuenta la historia entera: Ax proyecta la entrada sobre la dirección que el adaptador vigila (un solo número con r = 1) y B decide hacia dónde empujar la salida con esa intensidad. Hay entradas invisibles para el adaptador (las ortogonales a A) y una única dirección de empuje (la de B).

Lee así. En producción hay dos opciones que el deck menciona: fusionar (W′ = W + (α/r)BA una sola vez, coste de inferencia idéntico al base) o mantener el rodeo separado para conmutar adaptadores por departamento sin recargar los 7B de parámetros.

Mensaje. El forward de LoRA es una perturbación aditiva de rango bajo sobre la salida original: nada más, y por eso es tan barato y tan seguro (apagar el adaptador devuelve el modelo base exacto).

Términos. Ax: proyección de la entrada en las r direcciones del adaptador. fusionar: sumar BA a W tras entrenar, para servir sin coste extra. conmutar adaptadores: cambiar de BA en caliente, mismo W base.

las ecuaciones de esta slide
q(r) = q − (q−q0) e−r/r₀(saturación empírica)
modelo de la curva calidad–rango con las cifras del deck: q = 91 (la calidad del full fine-tuning, que LoRA iguala), q0 = 62 (prompting sin adaptar) y r₀ = 3. Cada duplicación de r compra la mitad que la anterior: rendimiento decreciente puro.
Mfull ≈ 16·Nθ,   MLoRA ≈ 2·Nθ + 16·Nad,   MQLoRA ≈ 0.55·Nθ + 16·Nad(bytes de GPU)
full fine-tuning: 16 bytes por parámetro (peso fp16 + gradiente fp16 + momentos de Adam m, v en fp32 + copia maestra fp32). LoRA: el 99,6 % congelado solo paga sus 2 bytes de peso; los 16 van solo a Nad = 4·r·d·L (adaptadores en Wq y Wv de las L capas). QLoRA: el base cuantizado a 4 bits NF4 (≈0,55 bytes/parámetro con overhead).
guion paso a paso
  1. Con el modelo 8B, sube r de 1 a 8. La calidad pasa de ≈70 a ≈89 puntos; lee Δq en el readout: cada duplicación compra menos que la anterior.
  2. Sigue hasta r = 64. Apenas +0,1 puntos sobre r = 16 pagando 4× más parámetros: pasado el punto dulce (marcado en oro), el rango es vanidad.
  3. Cambia al modelo 70B y mira las barras. Full FT: ≈1.043 GB (más de 13 A100); LoRA: ≈131 GB (tampoco cabe en una GPU); QLoRA: ≈36 GB — cabe en una A6000 de 48 GB, la promesa literal de la nota técnica.
  4. Cambia al modelo 1B. Hasta el full fine-tuning cabe en una RTX 4090 de 24 GB: con modelos pequeños el debate LoRA vs full es de coste y comodidad, no de posibilidad física.
Comprueba que entiendes: si el peso fp16 ocupa 2 bytes, ¿de dónde salen los 16 del full fine-tuning?
Del optimizador: gradiente fp16 (2) + momento m de Adam en fp32 (4) + momento v en fp32 (4) + copia maestra del peso en fp32 (4) = 14, más los 2 del peso: 16 bytes por parámetro. El optimizador pesa 7 veces más que el modelo. Congelar un parámetro elimina TODO eso y deja solo los 2 bytes de su peso (0,5 si además lo cuantizas a NF4): por eso LoRA divide la memoria entre ≈8 y QLoRA entre ≈29.

Setup. Dos preguntas de negocio en una slide. Primera: ¿cuánta calidad compra cada punto de rango? La curva superior es el modelo de saturación q(r) anclado en las cifras del deck (prompting 62, full FT 91, LoRA r = 8 ≈ 89). Segunda: ¿qué GPU necesito? Las barras inferiores calculan los bytes reales de full FT, LoRA y QLoRA para el modelo elegido (con sus L capas y dimensión d reales), contra las líneas de 24, 48 y 80 GB de las GPUs típicas.

Juega. El punto dulce del rango (el mínimo r que se queda a menos de 1 punto del techo) se marca solo: con estas cifras es r = 16, y r = 8 se queda a 2 puntos por 2× menos parámetros — por eso 8 y 16 son los valores por defecto en la industria. La memoria, en cambio, casi no depende de r: los adaptadores son ruido al lado del modelo base.

Lee así. Los badges del readout dicen si cada método cabe en cada GPU. La frase para el comité: "QLoRA convierte un clúster de 13 A100 en una sola tarjeta de estación de trabajo".

Mensaje. El rango se elige por la curva de calidad (codo en 8–16) y la técnica por la memoria (QLoRA si el modelo no cabe). Las dos decisiones son independientes y las dos están en esta pantalla.

Términos. Nθ: parámetros del modelo base. Nad: parámetros de los adaptadores, 4rdL. NF4: NormalFloat de 4 bits, la cuantización de QLoRA. punto dulce: mínimo r con q(r) ≥ q − 1.

las ecuaciones de esta slide
LSFT(θ) = −1NΣi=1..N log pθ(yi | xi)(pérdida de imitación)
el fine-tuning supervisado minimiza la misma pérdida de next-token del pre-entrenamiento, pero sobre tus pares (instrucción xi, respuesta yi): imitación pura de demostraciones humanas. Nada de recompensas: el dato dice exactamente qué producir.
p̂(y|x) = cxynx+λV,    CE(n) = −Σx p(x)Σy p*(y|x) log p̂(y|x)  ≥  H*(el juguete)
nuestro "LLM" de juguete es el estimador de máxima verosimilitud suavizado (cxy = veces que viste la respuesta y para el prompt x; λ = 0.5): el mejor imitador posible con n ejemplos. Su pérdida de test se calcula exacta contra la verdad p* y nunca baja de H*, la entropía condicional verdadera: el suelo irreducible.
guion paso a paso
  1. Pon n = 20. La CE de test queda lejos del suelo H* y la nube de 24 réplicas está dispersa: con 20 ejemplos, cada dataset cuenta una historia distinta.
  2. Sube n hasta 640. La CE casi toca H* y la calidad relativa supera el 98 %: la curva ha saturado; los datasets ya cuentan todos la misma historia.
  3. Con c = 2 €, mira el punto dorado del panel inferior. Marca el n a partir del cual 100 € más compran menos de medio punto de calidad: el punto de rendimiento decreciente, calculado de la propia curva.
  4. Sube c a 10 € (anotador experto legal). La curva calidad–gasto se estira horizontalmente y el punto de parada se adelanta en n: el óptimo económico depende del precio del dato, no solo de la curva de aprendizaje.
Comprueba que entiendes: la CE de test nunca baja de H*. ¿Es un defecto del modelo?
No: H* es la entropía condicional de la verdad p*(y|x). Aunque tengas infinitos ejemplos y el imitador clave p̂ = p*, las respuestas tienen aleatoriedad intrínseca (un mismo prompt admite varias respuestas válidas) y esa incertidumbre no se puede imitar hasta desaparecer. En LLMs reales es la "pérdida irreducible" de los scaling laws. La consecuencia de negocio: presupuestar datos para perforar H* es tirar el dinero; el punto dorado existe siempre.

Setup. Un contact center tipo Telefónica quiere que el modelo responda con sus plantillas. El juguete: 4 tipos de prompt (saldo, queja, baja, oferta) y 6 plantillas de respuesta, con una verdad p*(y|x) fijada (la plantilla correcta sale con prob. 0,78; la genérica educada 0,12; el resto, ruido). El JS muestrea n pares (x, y) de esa verdad, ajusta el imitador p̂ por máxima verosimilitud y evalúa su cross-entropy de test exacta — y repite todo 24 veces por cada n para que veas la varianza. Arriba: CE(n) con su nube de réplicas y el suelo H*. Abajo: calidad relativa (eH*−CE; 100 % = imitador en el techo teórico) contra euros gastados (n × c), con el punto de rendimiento decreciente en oro.

Juega. La curva de arriba es la curva de aprendizaje más honesta que verás: sin trucos, es el MLE contra la verdad. Decae rápido, satura contra H*, y la nube de réplicas se estrecha como 1/√n.

Lee así. El deck dice "LoRA: 1K–10K ejemplos; SFT total: 50K+". Esta slide es el porqué económico: el valor marginal del ejemplo n-ésimo cae exponencialmente, así que el presupuesto de etiquetado óptimo se corta donde la curva del panel inferior se dobla, no donde se acaba el dinero.

Mensaje. SFT es imitación con saturación: compra mucho al principio y casi nada después. Cuando lo que falla ya no es qué responder sino cuál de dos respuestas válidas es mejor, el dato (x, y) se queda corto: hacen falta preferencias — siguiente slide.

Términos. p*(y|x): la verdad generadora del juguete. cxy, nx: conteos de entrenamiento. λ: suavizado de Laplace (evita log 0). H*: entropía condicional verdadera, suelo de la CE. CE: cross-entropy de test. calidad relativa: eH*−CE ∈ (0, 1]; 100 % cuando el imitador alcanza el techo.

las ecuaciones de esta slide
P(A ≻ B) = σ(rA − rB) = 11+e−(rA−rB)(Bradley–Terry)
cada respuesta tiene un reward latente r; la probabilidad de preferir A sobre B solo depende de la diferencia rA − rB pasada por la sigmoide. Diferencia 0 = moneda al aire; +2 ≈ 88 %; +4 ≈ 98 %.
LRM(φ) = −E[log σ(rφ(x,yw) − rφ(x,yl))],    ∂L∂rw = −σ(rl−rw)(Ec. RM del deck)
el reward model se entrena maximizando la verosimilitud de los votos observados (yw = preferida, yl = rechazada). El gradiente sube el reward del ganador y baja el del perdedor en proporción a lo sorprendente que fue el voto: un resultado esperado casi no mueve nada. Esta página ejecuta ese ascenso por gradiente con cada voto tuyo (con una regularización ℓ₂ pequeña, porque con pocos votos la verosimilitud pura divergiría).
Par — el cliente escribe: "Llevo dos meses con cargos duplicados y nadie me responde." ¿Qué respuesta prefieres?
Respuesta 1
Respuesta 2
guion paso a paso
  1. Vota los 5 primeros pares según tu criterio. Las barras de reward se reajustan con CADA voto: estás viendo el ascenso por gradiente de LRM ejecutarse en vivo sobre tus datos.
  2. Tras tus 5 votos, mira el heatmap. El modelo ya predice P(i ≻ j) para pares que NUNCA le enseñaste: si A ganó a B y B a D, P(A ≻ D) sale alta sola — transitividad emergente de la escala común.
  3. Pulsa "+20 votos simulados". Las barras se estabilizan y la log-verosimilitud por voto mejora: con pocos votos el ajuste era nervioso; con 25, las posiciones se asientan.
  4. Reinicia y vota 5 veces seguidas la respuesta más seca. El reward de la seca despega: el RM aprende TU preferencia, no "la verdad". Un reward model es un espejo de sus anotadores — el germen del sesgo en RLHF.
Comprueba que entiendes: ¿por qué comparaciones binarias y no notas de 1 a 10?
Porque las notas absolutas son inconsistentes entre anotadores (mi 7 es tu 5, y mi 7 de hoy no es mi 7 de mañana), mientras que el orden dentro de una pareja es mucho más estable y rápido de emitir. Bradley–Terry hace el resto: convierte muchos órdenes locales y ruidosos en una escala continua global ri, que es exactamente lo que la Ec. LRM del deck necesita para entrenar el reward model de RLHF.

Setup. El problema de la preferencia, con tus manos: cuatro estilos de respuesta de un asistente bancario (formal y resolutiva, seca, coloquial, burocrática evasiva) y un cliente enfadado. Tú votas pares A/B; cada voto entra como (yw, yl) en la verosimilitud de Bradley–Terry y el JS la maximiza por ascenso de gradiente (600 pasos, en milisegundos) tras cada clic. Arriba: los rewards aprendidos ri como barras. Abajo: la matriz completa de predicciones P(i ≻ j) que esos rewards implican.

Juega. Fíjate en lo que NO hay: ninguna nota, ninguna etiqueta correcta, ninguna respuesta de referencia. Solo "prefiero esta". Y de ese material tan pobre emerge una escala numérica continua que ordena los cuatro estilos y cuantifica las distancias.

Lee así. En OpenAI/Anthropic esto mismo se hace con rφ(x, y) = una red sobre el texto, decenas de miles de pares y anotadores profesionales. La matemática del ajuste es idéntica a la de esta página; solo cambia el tamaño.

Mensaje. Cuando la calidad es "cuál prefieres", el dato natural es el par de preferencia y el modelo natural es Bradley–Terry. Con el reward model en la mano, la pregunta siguiente es cómo usarlo para mover el LLM sin romperlo: RLHF, siguiente slide.

Términos. yw, yl: respuesta preferida (winner) y rechazada (loser). ri: reward latente de la respuesta i (centrados a media 0). σ: sigmoide. log-verosimilitud/voto: métrica de ajuste; log 0.5 = −0.69 es "no sé nada".

las ecuaciones de esta slide
máxθ Ey∼πθ[rφ(y)] − β·KL(πθ ‖ πSFT)(objetivo RLHF del deck)
sube la recompensa que el RM asigna a tus respuestas, pero paga una multa β por cada nat de divergencia KL = Σy π(y) log(π(y)/π₀(y)) respecto del modelo SFT de partida. β grande = pegado a casa; β pequeño = libertad total para perseguir el reward.
πβ(y) ∝ π₀(y)·er(y)/β(solución exacta)
ese objetivo tiene óptimo en forma cerrada: reponderar la referencia exponencialmente. Es un softmax con temperatura β: cuando β→∞ queda π₀; cuando β→0 colapsa al argmax del reward — incluido cualquier error del reward model. Esta slide dibuja πβ calculada exactamente así; PPO es solo la manera aproximada de llegar ahí cuando y son secuencias de tokens.
guion paso a paso
  1. Pon β = 5 (slider a la derecha). πβ se pega a π₀ (KL ≈ 0): el freno gana y el modelo no aprende nada del reward.
  2. Baja a β ≈ 0.6. La masa se desplaza hacia calidad alta: E[r real] sube casi tanto como E[r̂]; las dos curvas del panel inferior van juntas. Zona sana.
  3. Baja a β = 0.05 con el fallo del RM activo. La distribución colapsa al pico falso de calidad baja: E[r̂] (proxy) es máximo mientras E[r real] se hunde. Eso es reward hacking, y en el panel inferior es el punto donde las curvas se separan.
  4. Apaga el fallo del RM y repite β = 0.05. Ya no hay hackeo (colapsa donde debe), pero el KL se dispara y la diversidad muere: todas las respuestas iguales. β bajo es peligroso incluso con un RM perfecto.
Comprueba que entiendes: ¿de dónde sale πβ ∝ π₀er/β?
Maximizar Σπr − βΣπlog(π/π₀) con la restricción Σπ = 1 es un problema cóncavo en π; poniendo el multiplicador de Lagrange y derivando: r − β(log(π/π₀)+1) − μ = 0, de donde log π = log π₀ + r/β + cte. Es la misma matemática del softmax con temperatura: β ES una temperatura aplicada al reward. DPO explota exactamente esta fórmula, despejando r en función de π — lo verás en la siguiente slide.

Setup. Simplifico el espacio de respuestas a una recta de "calidad latente" y (60 valores): π₀ es el modelo SFT (campana centrada en calidad media), rreal(y) es la calidad verdadera (sube y satura) y el reward model r̂(y) la estima bien… salvo un pico falso en la zona de respuestas burocráticas cortas, donde sobrevalora (el checkbox lo controla: así son los fallos reales de un RM entrenado con pocos pares). El JS calcula exactamente πβ ∝ π₀er̂/β, su KL contra π₀, y los dos rewards esperados. Arriba: π₀ (gris) y πβ (oro). Abajo: E[r̂] y E[rreal] como funciones de β, con tu β marcada.

Juega. El slider de β recorre el dilema central del alineamiento: a un lado, no aprender nada; al otro, optimizar tan fuerte el proxy que explotas sus errores. El panel inferior es la imagen que deberías recordar: las curvas proxy y real van juntas hasta una β crítica y luego divergen.

Lee así. En producción no puedes dibujar la curva real (no la conoces: por eso el RM existe). Se vigila el KL: si crece mucho, el modelo está explotando; InstructGPT usó exactamente este término β·KL para contenerlo, y es la receta detrás de ChatGPT.

Mensaje. RLHF = perseguir un proxy con un freno KL. El freno no es un detalle de implementación: es lo único que separa "alinear" de "hackear el reward".

Términos. π₀ = πSFT: política de referencia. r̂ = rφ: reward model (proxy). KL: nats de divergencia; 0 = idénticas. reward hacking: E[r̂] sube mientras E[rreal] baja. PPO: el algoritmo de RL que aproxima esta solución en el espacio real de secuencias.

las ecuaciones de esta slide
LDPO(θ) = −E[log σ(β logπθ(yw|x)πref(yw|x) − β logπθ(yl|x)πref(yl|x))](Ec. DPO del deck)
Bradley–Terry donde el reward se ha sustituido por el reward implícitoθ(y) = β log(πθ(y)/πref(y)) — el despeje exacto de la solución cerrada de RLHF de la slide anterior. Mismo óptimo, pero ahora es clasificación supervisada de pares: sin reward model que entrenar y sin PPO.
s = β[(zw−zl) − (zrefw−zrefl)],    ∇zL = −σ(−s)·β·(ew−el)(gradiente exacto del juguete)
con 6 respuestas y logíts z, los log-softmax se cancelan en la diferencia y el gradiente queda limpio: sube el logít del ganador y baja el del perdedor, con fuerza σ(−s) = cuánto le queda al par por aprender. El botón "100 pasos" ejecuta exactamente esta fórmula.
guion paso a paso
  1. Pulsa "100 pasos" tres veces. La pérdida baja monótona, π(formal) y π(disculpas+solución) suben, π(alucina) se hunde, y el % de pares bien ordenados llega al 100 %: descenso por gradiente de verdad, sobre la LDPO de verdad.
  2. Reinicia, pon β = 2 y repite. Cada paso mueve más (el gradiente lleva β dentro) y la política final se aleja más de πref: β en DPO juega el papel del freno KL en RLHF.
  3. Reinicia, pon β = 0.1. Tras 300 pasos πθ apenas se despega de πref: alineamiento suave, conservador.
  4. Mira el panel de rewards implícitos tras entrenar. Nunca entrenamos un reward model y sin embargo ahí hay rewards: salen de la propia política, r̂ = β log(πθref). Compara su orden con tus barras de Bradley–Terry de hace dos slides.
Comprueba que entiendes: ¿dónde está escondido el reward model en DPO?
En la propia política. La solución cerrada de RLHF dice π* ∝ πrefer/β; despejando, r(y) = β log(π*(y)/πref(y)) + cte. Rafailov et al. sustituyen ese r en la verosimilitud de Bradley–Terry (la LRM del deck) y la constante se cancela en la diferencia w−l: queda LDPO, que se optimiza directamente en θ. "Your language model is secretly a reward model": el cambio respecto a la referencia ES la recompensa.

Setup. El mismo banco, 6 respuestas candidatas al cliente enfadado: formal+resolutiva, seca, coloquial, burocrática, disculpas+solución, y una que alucina una política inexistente. πref es el modelo SFT (asigna probabilidad decente a casi todas, incluida la alucinación). El dataset de preferencias: 8 pares (yw, yl) donde las resolutivas ganan y la alucinación siempre pierde. El JS optimiza LDPO con descenso por gradiente explícito sobre los logíts. Arriba: πref (contorno gris) contra πθ (oro) tras tus pasos. Abajo: la curva de pérdida y los rewards implícitos resultantes.

Juega. Esto es todo el pipeline de alineamiento moderno en tres botones: sin RM explícito, sin rollouts, sin PPO; gradientes estables de una pérdida supervisada. Compara mentalmente con la slide RLHF: el objetivo es el mismo y β significa lo mismo; ha desaparecido la maquinaria, no la matemática.

Lee así. El deck lo resume: RLHF necesita 3 modelos (SFT → RM → PPO); DPO necesita 1 (SFT → DPO). Por eso DPO es el default 2026 y por eso su fila en la tabla de costes baja un orden de magnitud en infraestructura (los pares de preferencia siguen costando lo mismo).

Mensaje. DPO = el objetivo de RLHF resuelto en cerrado y convertido en clasificación de pares. Cuando alguien te proponga "hacer RLHF" en la empresa, la pregunta correcta es: ¿y por qué no DPO?

Términos. z, zref: logíts de la política y de la referencia (π = softmax(z)). s: margen del par en unidades de reward implícito. σ(−s): "cuánto queda por aprender" del par. ew, el: vectores indicadores del ganador y el perdedor.

las ecuaciones de esta slide
técnica* = mín{peldaño de la escalera : calidad(peldaño) ≥ calidad exigida}(la regla)
la decisión óptima es el peldaño más bajo que alcanza la calidad exigida: nunca se sube por prestigio. Las cuatro preguntas del panel implementan esa búsqueda: conocimiento cambiante → RAG; tono/formato → LoRA; comportamiento por preferencias → DPO.
stack típico 90 % ≈ RAG + LoRA,    TCO = Σcomponentes TCOi(deck, tabla final)
las técnicas se apilan, no compiten: RAG aporta el conocimiento fresco, LoRA el tono, DPO el comportamiento. El coste del stack es la suma de sus componentes, y la tabla de abajo lo calcula en vivo para tus respuestas.
ComponenteCoste año 1¿En tu stack?
guion paso a paso
  1. Apaga las cuatro preguntas. Recomendación = prompting + few-shot, 300 €: el suelo de la escalera. En el árbol, el camino entero baja por los "no".
  2. Activa "el conocimiento cambia a diario". RAG se enciende y entra al stack; fíjate en que NO sustituye al prompt: se apila encima.
  3. Activa "tono/formato" y conmuta la pregunta de la GPU. Con GPU el árbol enciende LoRA (≈2.050 €); sin GPU degrada a plantillas few-shot: la misma necesidad cae a un peldaño distinto según el presupuesto.
  4. Activa "pares de preferencia". Solo si además hay GPU aparece DPO y el TCO salta un orden de magnitud (≈30.500 €): el alineamiento por preferencias es el peldaño caro, resérvalo para cuando el comportamiento sea el producto.
Comprueba que entiendes: ¿por qué el árbol nunca recomienda RLHF?
Porque para una empresa el peldaño RLHF (3 modelos en memoria, PPO delicado, ≈80.000 €) está dominado por DPO, que consume exactamente los mismos datos (pares de preferencia) y alcanza la misma calidad con un solo modelo y gradientes estables. La nota técnica lo dice sin rodeos: en 2026 RLHF lo hacen los laboratorios (Anthropic, OpenAI, Meta); la empresa consume modelos ya alineados vía API o pesos abiertos y, como mucho, hace LoRA/DPO encima.

Setup. El árbol de decisión del deck, hecho circuito: cuatro preguntas de negocio (sin jerga de ML) y un camino que se ilumina en oro según tus respuestas, de la raíz a la recomendación. La tabla en vivo suma el TCO del stack resultante con los costes de la primera slide, cerrando el círculo del día.

Juega. Prueba los 16 caminos posibles (son 4 bits). Verás que solo uno de ellos — preferencias + GPU — activa el peldaño caro, y que la GPU actúa de llave: sin ella, las necesidades de tono caen a few-shot y las de comportamiento a "consumir un modelo ya alineado por API".

Lee así. Caso Inditex: el stock cambia a diario (RAG) y el tono de marca importa (LoRA): stack RAG + LoRA. Caso Netflix moderando contenido: el comportamiento ES el producto: pares de preferencia + DPO. Caso consultoría pequeña: prompting + few-shot y a correr.

Mensaje. La adaptación corporativa no es una elección de técnica favorita: es un recorrido por la escalera de coste con cuatro preguntas de negocio. Empieza en RAG y sube solo cuando el negocio lo exige.

Términos. stack: combinación de técnicas apiladas sobre el mismo modelo base. llave GPU: sin cómputo de entrenamiento, todo lo que toque θ queda fuera. API gestionada: fine-tuning de pago por uso cuando no hay GPU propia.

La escalera de coste — cuándo adaptar
Slides: Escalera · Decisión
"Prompting → RAG → LoRA → SFT → DPO/RLHF: cada peldaño cuesta un orden de magnitud más en datos y cómputo. Se sube solo cuando la calidad del peldaño inferior se queda corta, y la frontera entre peldaños es aritmética de TCO (Q*, n), no fe."
LoRA — cómo adaptar barato
Slides: LoRA idea · Rango y SVD · Forward · Memoria GPU
"ΔW = (α/r)BA con r ≪ d: 0,4 % de parámetros entrenables, porque las actualizaciones útiles tienen rango efectivo bajo (Eckart–Young en vivo). El optimizador pesa 7× más que el modelo: congelar W elimina ese coste, y QLoRA cuantiza el base a 4 bits y mete un 70B en una GPU de 48 GB."
De la imitación a la preferencia
Slides: SFT · Preferencias
"SFT imita pares (x, y) con la misma pérdida del pre-entrenamiento y satura contra el suelo H*: cada euro de etiquetado compra menos que el anterior. Cuando la calidad es 'cuál prefieres', el dato natural es el par de preferencia y Bradley–Terry convierte votos binarios en recompensas continuas: nace el reward model."
Alinear sin romper — RLHF y DPO
Slides: RLHF · DPO
"Maximizar r − β·KL tiene solución exacta π ∝ π₀er/β: β gobierna el dilema entre no aprender nada y hackear el reward. DPO despeja esa solución y la convierte en clasificación supervisada de pares, sin reward model ni PPO: mismo óptimo, sin maquinaria. El default 2026."

En una frase. Adaptar un LLM corporativo es elegir el peldaño más bajo de la escalera que alcanza la calidad exigida: casi siempre RAG + LoRA; preferencias (DPO) solo cuando el comportamiento, y no el conocimiento, es el producto.

Garrido-Merchán — ecgarrido@comillas.edu — Deep Learning para Business Analytics — Día 16 · Adaptación corporativa: SFT, LoRA, RLHF, DPO