<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Student-Teacher on lo0 — Blog Técnico</title><link>https://blog.lo0.es/tags/student-teacher/</link><description>Recent content in Student-Teacher on lo0 — Blog Técnico</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Thu, 04 Jun 2026 19:00:00 +0000</lastBuildDate><atom:link href="https://blog.lo0.es/tags/student-teacher/index.xml" rel="self" type="application/rss+xml"/><item><title>Knowledge Distillation: enseñar a un modelo pequeño a pensar como uno grande</title><link>https://blog.lo0.es/posts/knowledge-distillation-fundamentos/</link><pubDate>Thu, 04 Jun 2026 19:00:00 +0000</pubDate><guid>https://blog.lo0.es/posts/knowledge-distillation-fundamentos/</guid><description>&lt;h2 id="tldr">TL;DR&lt;/h2>
&lt;p>Knowledge Distillation es la técnica de entrenar un modelo pequeño (&lt;em>student&lt;/em>) usando como supervisión las probabilidades de salida de un modelo grande (&lt;em>teacher&lt;/em>), en vez de usando sólo las etiquetas duras del dataset de entrenamiento. El resultado es un modelo pequeño que razona mejor de lo que sugiere su tamaño, porque aprende las distribuciones de incertidumbre del teacher en vez de memorizar respuestas binarias. Es la razón por la que Phi-4 (14B) supera en razonamiento a la mayoría de modelos de 70B, y por la que los modelos de la familia Gemma 3 son sorprendentemente capaces para su tamaño. No es una técnica de compresión de modelo existente: es un proceso de entrenamiento que produce un modelo más pequeño desde cero o desde un punto de partida diferente.&lt;/p>
&lt;hr>
&lt;h2 id="la-analogía">La analogía&lt;/h2>
&lt;p>Un maestro cirujano con treinta años de experiencia y un residente de primer año. Si el residente sólo aprende del manual de anatomía —respuestas correctas binarias: &amp;ldquo;aquí se corta, aquí no&amp;rdquo;— tardará años en desarrollar el juicio clínico del maestro. Pero si opera a su lado, observando sus microdecisiones, sus dudas, los casos ambiguos donde el maestro sabe que dos opciones son casi igualmente válidas, aprende algo que el manual no puede enseñar: la estructura de la incertidumbre.&lt;/p>
&lt;p>Knowledge distillation es exactamente eso. El &amp;ldquo;manual de anatomía&amp;rdquo; son las etiquetas duras (la respuesta correcta). El &amp;ldquo;maestro cirujano&amp;rdquo; es el teacher LLM. Las distribuciones de probabilidad sobre el vocabulario son la materialización de esa incertidumbre que el student absorbe.&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-realmente">Qué es realmente&lt;/h2>
&lt;p>Cuando un LLM genera texto, no produce una sola palabra: produce una distribución de probabilidad sobre todo su vocabulario en cada posición. Para el token siguiente, el modelo podría decir:&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;#34;París&amp;#34;: 42%
&amp;#34;Lyon&amp;#34;: 8%
&amp;#34;Marsella&amp;#34;: 6%
&amp;#34;la ciudad&amp;#34;: 5%
...resto del vocabulario: 39%
&lt;/code>&lt;/pre>&lt;p>Esta distribución es información densa. Dice no sólo &lt;em>qué&lt;/em> es la respuesta correcta, sino también &lt;em>qué otras respuestas eran plausibles y en qué medida&lt;/em>. Un student entrenado sólo con la etiqueta &amp;ldquo;París&amp;rdquo; (probabilidad 1.0 al token correcto, 0.0 al resto) no ve esta riqueza.&lt;/p>
&lt;p>Destilación usa la distribución completa del teacher como objetivo de entrenamiento del student. La función de pérdida tiene dos términos:&lt;/p>
&lt;p>$$\mathcal{L}&lt;em>{total} = (1 - \alpha) \cdot \mathcal{L}&lt;/em>{CE}(y, \hat{y}&lt;em>S) + \alpha \cdot \mathcal{L}&lt;/em>{KD}(p_T, p_S, T)$$&lt;/p>
&lt;p>Donde:&lt;/p>
&lt;ul>
&lt;li>$\mathcal{L}_{CE}$ es la cross-entropy estándar con las etiquetas duras (supervisión clásica).&lt;/li>
&lt;li>$\mathcal{L}_{KD}$ es la KL-divergencia entre las distribuciones del teacher y el student.&lt;/li>
&lt;li>$\alpha$ controla el peso relativo de cada término (típicamente 0.5–0.9 a favor de KD).&lt;/li>
&lt;li>$T$ es la &lt;em>temperatura&lt;/em>, un parámetro que suaviza las distribuciones para hacer la señal de KD más informativa.&lt;/li>
&lt;/ul>
&lt;h3 id="el-papel-de-la-temperatura">El papel de la temperatura&lt;/h3>
&lt;p>Si el teacher asigna 99% a &amp;ldquo;París&amp;rdquo; y 0.001% a cada otra palabra, la distribución es casi tan informativa como una etiqueta dura. La temperatura $T &amp;gt; 1$ suaviza esa distribución:&lt;/p>
&lt;p>$$p_T(k) = \frac{\exp(z_k / T)}{\sum_j \exp(z_j / T)}$$&lt;/p>
&lt;p>Con $T = 4$ y los logits originales, la distribución que antes era [99%, 0.001%, 0.001%&amp;hellip;] pasa a ser algo como [42%, 8%, 6%&amp;hellip;]. El student ve el vecindario de probabilidad real del teacher, no sólo su respuesta puntual.&lt;/p>
&lt;p>&lt;strong>Ejemplo numérico con temperatura:&lt;/strong>&lt;/p>
&lt;p>Logits del teacher para &amp;ldquo;La capital de Francia es _____&amp;rdquo;:&lt;/p>
&lt;pre tabindex="0">&lt;code>París: 8.5
Lyon: 3.2
Europa: 2.1
una: 1.8
&lt;/code>&lt;/pre>&lt;p>Con T=1 (softmax estándar):
$$p(\text{París}) = \frac{e^{8.5}}{e^{8.5} + e^{3.2} + e^{2.1} + e^{1.8}} \approx 99.3%$$&lt;/p>
&lt;p>Con T=4:
$$p(\text{París}) = \frac{e^{8.5/4}}{e^{8.5/4} + e^{3.2/4} + e^{2.1/4} + e^{1.8/4}} = \frac{e^{2.125}}{e^{2.125} + e^{0.8} + e^{0.525} + e^{0.45}} \approx 54%$$&lt;/p>
&lt;p>La señal con T=4 es mucho más informativa para el student: aprende que Lyon es más plausible que Europa, que Europa es más plausible que &amp;ldquo;una&amp;rdquo;, etcétera.&lt;/p>
&lt;hr>
&lt;h2 id="los-tres-modos-de-destilación">Los tres modos de destilación&lt;/h2>
&lt;h3 id="offline-o-black-box">Offline (o &amp;ldquo;black-box&amp;rdquo;)&lt;/h3>
&lt;p>El teacher genera un dataset sintético de respuestas antes del entrenamiento. El student se entrena sobre ese dataset como si fuera etiquetas duras normales.&lt;/p>
&lt;pre tabindex="0">&lt;code>teacher → genera 100M pares (prompt, completion) → dataset
student → se entrena sobre ese dataset
&lt;/code>&lt;/pre>&lt;p>Es la forma más barata de escalar: el teacher se ejecuta una sola vez, el student se entrena sobre los datos generados con hardware convencional. La mayoría de los modelos de instrucción open source (Alpaca, Vicuna, WizardLM en sus primeras versiones) usaron esta estrategia: GPT-4 como teacher, datos guardados, Llama-7B como student.&lt;/p>
&lt;p>&lt;strong>Limitación:&lt;/strong> el student no ve las distribuciones de probabilidad del teacher, sólo sus respuestas. Es destilación de &amp;ldquo;comportamiento&amp;rdquo;, no de &amp;ldquo;conocimiento&amp;rdquo; en el sentido estricto. Si el teacher se equivoca (y GPT-4 se equivoca), el error queda cristalizado en el dataset.&lt;/p>
&lt;h3 id="online-o-white-box">Online (o &amp;ldquo;white-box&amp;rdquo;)&lt;/h3>
&lt;p>Teacher y student se ejecutan juntos durante el entrenamiento. El student procesa cada batch, el teacher procesa el mismo batch en paralelo, y la pérdida KD se calcula en tiempo real con las distribuciones de probabilidad completas.&lt;/p>
&lt;pre tabindex="0">&lt;code>for batch in dataset:
logits_teacher = teacher(batch) # forward pass del teacher
logits_student = student(batch) # forward pass del student
loss = KL(softmax(logits_teacher/T), softmax(logits_student/T))
loss.backward() # sólo actualiza student
&lt;/code>&lt;/pre>&lt;p>El teacher tiene los gradientes desactivados (&lt;code>torch.no_grad()&lt;/code>). La señal de aprendizaje es richer que en offline, pero el coste es alto: necesitas mantener el teacher en VRAM durante todo el entrenamiento. Para destilación de un teacher de 405B a un student de 8B, necesitarías varias H100 sólo para el teacher.&lt;/p>
&lt;h3 id="en-policy-on-policy">En-policy (on-policy)&lt;/h3>
&lt;p>Variante reciente (2024–2026) que combina lo mejor de ambos: el teacher genera respuestas dinámicamente durante el entrenamiento, pero el student las evalúa con su propia distribución. El ciclo es:&lt;/p>
&lt;ol>
&lt;li>Student genera una propuesta de respuesta (&lt;em>rollout&lt;/em>).&lt;/li>
&lt;li>Teacher puntúa esa propuesta con su distribución de probabilidad.&lt;/li>
&lt;li>El student actualiza con la señal del teacher.&lt;/li>
&lt;/ol>
&lt;p>Esto evita que el student aprenda de distribuciones fuera de su propio dominio (problema de &lt;em>distribution shift&lt;/em> en offline). Es la base de algoritmos como &lt;a href="https://github.com/nick7nlp/Awesome-LLM-On-Policy-Distillation">SimCT (2026)&lt;/a> que usan teachers de diferentes familias (Qwen, Phi, Gemma) para generar señal cross-tokenizer.&lt;/p>
&lt;hr>
&lt;h2 id="por-qué-los-mejores-modelos-pequeños-usan-destilación">Por qué los mejores modelos pequeños usan destilación&lt;/h2>
&lt;p>Phi-4 (Microsoft, 14B), Gemma 3 (Google, 9B/27B), y los modelos de la familia Qwen3 compactos son los ejemplos más claros. Sus benchmarks son anómalos respecto a su tamaño: Phi-4-14B supera a LLaMA-3-70B en MATH y GPQA-Diamond, dos benchmarks de razonamiento matemático y científico donde el tamaño suele ser determinante.&lt;/p>
&lt;p>¿Por qué? La clave está en qué supervisa el entrenamiento:&lt;/p>
&lt;ul>
&lt;li>Un modelo entrenado con datos de internet aprende la distribución de texto humano, que incluye mucho texto de baja calidad, errores, ambigüedades.&lt;/li>
&lt;li>Un student que aprende de un teacher frontier (GPT-4o, Claude 3 Opus, Gemini 1.5 Pro) absorbe una distribución filtrada hacia texto de alta calidad y razonamiento correcto.&lt;/li>
&lt;/ul>
&lt;p>El student con 14B parámetros no &amp;ldquo;sabe más&amp;rdquo; que uno sin destilación del mismo tamaño, pero ha aprendido a usarlos mejor porque sus gradientes de entrenamiento nunca estuvieron contaminados por texto de baja calidad.&lt;/p>
&lt;p>&lt;strong>Dato empírico:&lt;/strong> Phi-4 (14B destilado) vs LLaMA-3-70B (no destilado) en MATH benchmark (2025):&lt;/p>
&lt;ul>
&lt;li>Phi-4: 80.4%&lt;/li>
&lt;li>LLaMA-3-70B: 68.0%&lt;/li>
&lt;/ul>
&lt;p>Un modelo 5× más pequeño supera al grande porque la señal de entrenamiento es mejor, no porque tenga más parámetros.&lt;/p>
&lt;hr>
&lt;h2 id="destilación-de-razonamiento-el-caso-de-los-thinking-models">Destilación de razonamiento: el caso de los thinking models&lt;/h2>
&lt;p>Los modelos de razonamiento (DeepSeek-R1, Qwen3-thinking, QwQ) generan cadenas de pensamiento internas antes de dar la respuesta final. Destilar razonamiento es más complejo porque no sólo se quiere transferir la respuesta: se quiere transferir la &lt;em>forma de pensar&lt;/em>.&lt;/p>
&lt;p>La estrategia actual (2025–2026) es &lt;strong>destilación de trazas de razonamiento&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>El teacher (modelo thinking grande) genera respuestas con su cadena de pensamiento interna completa.&lt;/li>
&lt;li>El dataset incluye esas cadenas de pensamiento como parte del output.&lt;/li>
&lt;li>El student aprende a imitar tanto la cadena como la respuesta final.&lt;/li>
&lt;/ol>
&lt;p>Esto explica por qué Qwen3-7B-thinking puede razonar formalmente sobre matemáticas siendo 10× más pequeño que los modelos que lo precedieron sin destilación: aprendió el &lt;em>proceso&lt;/em>, no sólo el &lt;em>resultado&lt;/em>.&lt;/p>
&lt;hr>
&lt;h2 id="cuándo-usar-destilación-vs-las-alternativas">Cuándo usar destilación vs. las alternativas&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Técnica&lt;/th>
&lt;th>Qué hace&lt;/th>
&lt;th>Requiere reentrenamiento&lt;/th>
&lt;th>Resultado&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Quantización&lt;/td>
&lt;td>Reduce precisión de pesos&lt;/td>
&lt;td>No&lt;/td>
&lt;td>Mismo modelo, más pequeño&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Poda&lt;/td>
&lt;td>Elimina pesos irrelevantes&lt;/td>
&lt;td>No (PTQ)&lt;/td>
&lt;td>Mismo modelo, más disperso&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Destilación&lt;/td>
&lt;td>Entrena modelo nuevo&lt;/td>
&lt;td>Sí&lt;/td>
&lt;td>Modelo diferente, más pequeño&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La destilación no comprime un modelo existente: produce uno nuevo. Por eso es complementaria, no sustitutiva: puedes destilar un 405B a un 8B, y luego cuantizar ese 8B a INT4 para reducir su coste de inferencia.&lt;/p>
&lt;p>&lt;strong>Cuándo es la opción correcta:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Necesitas un modelo 5–10× más pequeño que el mejor disponible.&lt;/li>
&lt;li>Tienes acceso (API o local) a un teacher de calidad.&lt;/li>
&lt;li>Tienes datos de entrenamiento o capacidad de generarlos.&lt;/li>
&lt;li>La latencia o el coste de inferencia son un constraint duro.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Cuándo no:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Quieres comprimir un modelo existente rápidamente: usa cuantización + poda.&lt;/li>
&lt;li>No tienes presupuesto de entrenamiento (destilación online requiere semanas de GPU).&lt;/li>
&lt;li>El teacher no es significativamente mejor que el student base: la señal de KD será débil.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="implicaciones-para-inferencia-on-premise">Implicaciones para inferencia on-premise&lt;/h2>
&lt;p>En un despliegue soberano, el teacher puede ser un modelo grande que se ejecuta localmente (no es necesaria una API externa). El flujo es:&lt;/p>
&lt;pre tabindex="0">&lt;code>4×H100 genérico:
teacher: Llama-3.3-70B-Instruct (en los 4×H100, carga completa)
→ genera dataset de 10M pares (prompt, completion con logits)
→ 3-4 semanas de generación a batch 32
Después del dataset:
student: Qwen2.5-7B (fine-tuned con KD loss sobre el dataset)
→ 2-3 días de entrenamiento en los mismos H100
→ resultado: 7B que razona como el 70B en el dominio específico
Producción:
RTX 4090: sirve el student 7B cuantizado a INT4 (4 GB)
&lt;/code>&lt;/pre>&lt;p>El teacher sólo se necesita para generar los datos. El student es lo que va a producción. La inversión en cómputo de entrenamiento se amortiza en meses de inferencia más barata.&lt;/p>
&lt;p>Para ENS/NIS2: este flujo es 100% on-premise, cero dependencia de APIs externas, y el modelo resultante es tuyo en todos los sentidos.&lt;/p>
&lt;hr>
&lt;h2 id="ver-también">Ver también&lt;/h2>
&lt;ul>
&lt;li>https://blog.lo0.es/posts/poda-pruning-llm-fundamentos/ — alternativa técnica: en vez de entrenar un modelo nuevo, eliminar partes del modelo existente; destilación y poda son complementarias&lt;/li>
&lt;li>https://blog.lo0.es/posts/quantization-fundamentos-inferencia/ — el paso siguiente después de destilar: cuantizar el student para inferencia eficiente&lt;/li>
&lt;li>https://blog.lo0.es/posts/speculative-decoding-fundamentos/ — los drafters de speculative decoding son frecuentemente students destilados del model base que aprenden a predecir su distribución&lt;/li>
&lt;li>https://blog.lo0.es/posts/fine-tuning-continuo-produccion/ — destilación como forma de fine-tuning continuo: el teacher es el modelo en producción, el student es la siguiente versión&lt;/li>
&lt;li>https://blog.lo0.es/posts/alignment-moderno-dpo-kto-orpo-simpo/ — DPO y sus variantes pueden verse como destilación de preferencias humanas hacia el modelo; la matemática de la distribución de referencia es análoga al teacher en KD&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="referencias">Referencias&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://arxiv.org/abs/1503.02531">Distilling the Knowledge in a Neural Network&lt;/a> — Hinton, Vinyals &amp;amp; Dean, 2015 (paper fundacional)&lt;/li>
&lt;li>&lt;a href="https://arxiv.org/abs/2412.08905">Phi-4 Technical Report&lt;/a> — Microsoft Research, 2024&lt;/li>
&lt;li>&lt;a href="https://arxiv.org/abs/2501.12948">DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning&lt;/a> — DeepSeek, 2025 (destilación de razonamiento)&lt;/li>
&lt;li>&lt;a href="https://github.com/nick7nlp/Awesome-LLM-On-Policy-Distillation">Awesome LLM On-Policy Distillation&lt;/a> — colección de papers de destilación en-policy, 2025–2026&lt;/li>
&lt;li>&lt;a href="https://openreview.net/pdf/cf5bed8b71779ae42d0e681f1e2a7de3b3c8f6ad.pdf">Knowledge Distillation for LLMs: Survey&lt;/a> — ICLR 2025&lt;/li>
&lt;/ul></description></item></channel></rss>