Phase 10 - Lesson 15

Decodificación Especulativa y EAGLE-3

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

La Fase 7 · Lección 16 demostró la matemática: la regla de rechazo de Leviathan preserva la distribución del verificador exactamente. Esta lección es la visión del stack de entrenamiento de la decodificación especulativa en producción de 2026. EAGLE-3 convirtió el modelo de borrador de una aproximación económica en una red diminuta diseñada a la medida y entrenada en los propios estados ocultos del verificador, luego agregó un bucle de prueba en tiempo de entrenamiento que alinea sus distribuciones de entrenamiento e inferencia. Resultado: aceleración de 3× a 6.5× de extremo a extremo, tasas de aceptación por token superiores a 0.9 en chat, sin pérdida de distribución. Cada stack de inferencia en producción en 2026 lo incluye por defecto.

Tipo: Build Idiomas: Python (stdlib) Prerrequisitos: Fase 7 · 16 (matemática de decodificación especulativa), Fase 10 · 12 (optimización de inferencia) Tiempo: ~75 minutos

Objetivos de Aprendizaje

  • Explicar el teorema de Leviathan en una sola frase y demostrar que el bucle especulativo produce muestras distribuidas de forma idéntica a las del verificador.
  • Recorrer la progresión de dos años desde la decodificación especulativa convencional (Leviathan 2023) pasando por EAGLE, EAGLE-2 y EAGLE-3, y nombrar la limitación exacta que cada paso eliminó.
  • Calcular la aceleración esperada a partir de la tasa de aceptación α y la relación de costo de borrador a verificador c, y elegir la longitud de borrador ideal N para cada régimen.
  • Implementar el bucle especulativo completo desde cero: borrador, verificación, amuestreo por rechazo del residuo, reversión del KV cache en caso de rechazo y emisión del token de bonificación ante la aceptación total.

El Problema

La decodificación autorregresiva en un modelo de 70B se ejecuta a tal vez 35 tokens por segundo en una H100. La GPU no está ni cerca de saturarse. El ancho de banda de memoria es el límite máximo: cada token carga 70B de pesos desde la HBM, realiza un paso de aritmética y produce un float. Las unidades de cómputo permanecen casi siempre inactivas.

La decodificación especulativa convierte eso en un problema de rendimiento de procesamiento (throughput) que realmente se puede resolver. Un borrador económico propone N tokens en N pasadas hacia adelante (forward passes) pequeñas. El verificador se ejecuta una vez sobre el prefijo más los N borradores. Si la distribución del verificador en la posición i coincide con la del borrador (en un sentido estadístico que definiremos con precisión), aceptamos; de lo contrario, rechazamos y muestreamos una corrección a partir de la distribución residual. Una sola pasada hacia adelante del modelo grande produce hasta N+1 tokens aceptados en lugar de uno.

El teorema fundamental es el de Leviathan, Kalman, Matias (ICML 2023): la distribución de salida es idéntica a la que habría producido el muestreo directo del verificador. No de forma aproximada. Idéntica. Esta es la razón principal por la que la decodificación especulativa se acepta en producción: es una optimización de latencia pura, sin sacrificar la calidad.

La Fase 7 · Lección 16 te dio la matemática. Lo que te da esta lección es el stack de entrenamiento. Un buen borrador vale 2× más aceleración que uno económico. EAGLE, EAGLE-2 y EAGLE-3 (Li et al., 2024–2025) convirtieron la premisa "borrador = versión pequeña del mismo modelo" en una disciplina de ingeniería precisa. Los servidores de inferencia en producción de 2026 usan EAGLE-3 por defecto.

El Concepto

El invariante: muestreo por rechazo de Leviathan

Sea p(t) la distribución del borrador para el siguiente token dado cierto prefijo, y q(t) la del verificador. Muestrea un token de borrador d ~ p. Acepta con probabilidad min(1, q(d) / p(d)). En caso de rechazo, muestrea de la distribución residual (q - p)_+ / ||(q - p)_+||_1. Las muestras resultantes se distribuyen de acuerdo con q. Esto se cumple sin importar qué tan malo sea p; mientras peor sea, más a menudo rechazarás, pero el resultado final seguirá siendo exacto.

Encadena N de estas llamadas en secuencia utilizando una sola pasada hacia adelante del verificador en prefix + d_1 + ... + d_N. El verificador devuelve q_1, q_2, ..., q_{N+1} simultáneamente. Recorre de izquierda a derecha. En el primer rechazo en la posición j, muestrea de residual(q_j, p_j) y detente. En caso de aceptación total, muestrea un token de bonificación de q_{N+1}.

Qué determina la aceleración

Sea α la tasa de aceptación esperada por token borrador. Sea c = cost(draft) / cost(verifier) la relación de costos. El número esperado de tokens aceptados por pasada hacia adelante del verificador es:

E[accepted] = (1 - α^(N+1)) / (1 - α)

El tiempo total esperado (wall time) por token aceptado es (N * c + 1) / E[accepted]. Minimiza eso respecto a N para encontrar el punto óptimo. Para α = 0.8, c = 0.05: el N óptimo es de alrededor de 5–7, con una aceleración de 3.2×. Para α = 0.95, c = 0.02: el N óptimo se sitúa en torno a 8–10, elevando la aceleración cerca de 5×.

El factor individual más determinante es α. Pasar de α = 0.6 (borrador convencional) a α = 0.9 (EAGLE-3) con un N = 5 fijo eleva la cantidad esperada de tokens aceptados por pasada de 2.2 a 4.1. Casi el doble de rendimiento de procesamiento con el mismo verificador.

La progresión de dos años

Decodificación especulativa convencional (Leviathan, 2023). El modelo de borrador es un LLM más pequeño entrenado de manera independiente perteneciente a la misma familia. Fácil de integrar, α ≈ 0.6, aceleración máxima de alrededor de 2×.

EAGLE-1 (Li et al., 2024). El borrador es un transformador diminuto (típicamente de una o dos capas) que toma el estado oculto de la última capa del verificador como entrada y predice directamente el siguiente token. Debido a que el borrador ve la representación de características del verificador, su distribución es mucho más cercana a la de este. α asciende a 0.7–0.8.

EAGLE-2 (Li et al., 2024). Agrega un árbol dinámico de borradores: en lugar de proponer una única secuencia de N tokens, propone un árbol pequeño de candidatos, puntúa cada uno de ellos con el verificador en una sola pasada hacia adelante (atención de árbol) y sigue la ruta de mayor probabilidad. La longitud del borrador se vuelve adaptativa por paso. La α por token de la ruta aceptada supera 0.85.

EAGLE-3 (Li et al., 2025, NeurIPS). Dos cambios más. Primero, elimina por completo la pérdida por predicción de características (feature-prediction loss); EAGLE-1/2 entrenaban al borrador para coincidir con los estados ocultos del verificador, lo que limitaba el impacto del volumen de datos. EAGLE-3 entrena directamente en predicción de tokens. Segundo, prueba en tiempo de entrenamiento (TTT): durante el entrenamiento de borrador, realimenta sus propias predicciones previas como entradas a lo largo de varios pasos, simulando su funcionamiento en inferencia. Esto alinea las distribuciones de entrenamiento y prueba y frena la acumulación de errores. Aceleración medida: hasta 6.5× en chat, 38% de mejora en el rendimiento en batch 64 en SGLang sobre H100.

Reversión de KV cache

La verificación extiende el KV cache del verificador por N entradas en una sola pasada. Si ocurre un rechazo en la posición j, el contenido del cache después de la posición j-1 es incorrecto. Dos implementaciones comunes: escribir en un búfer temporal (scratch buffer) y confirmar al aceptar (vLLM, TensorRT-LLM), o mantener un KV cache físico más una longitud lógica y truncar al rechazar. De cualquier modo, el costo de reversión es de bytes por capa por cabezal, lo cual es despreciable en comparación con el costo de la pasada hacia adelante.

Para la búsqueda de árbol de EAGLE-2, el verificador ejecuta la atención con una máscara no causal que respeta la topología del árbol. La ingeniería es compleja, pero el cómputo es una llamada estándar de flash-attention con una máscara personalizada.

Arquitecturas de borrador en 2026

Estrategia Tipo de borrador α Aceleración Costo de entrenamiento
Convencional LLM pequeño independiente 0.55-0.70 1.8-2.3× Ninguno (reutiliza modelo pequeño existente)
Medusa Cabezales de LM adicionales en verificador 0.65-0.75 2-3× ~1B de tokens SFT
EAGLE-1 Transformador de 1 capa sobre estados ocultos 0.70-0.80 2.5-3× ~60B de tokens
EAGLE-2 EAGLE-1 + árbol dinámico de borradores 0.80-0.88 3-4× ~60B de tokens
EAGLE-3 Fusión de características multicapa + TTT 0.88-0.92 3.5-6.5× ~60-200B de tokens
Lookahead Sin borrador (iteración de Jacobi) N/A 1.3-1.6× Ninguno

En producción en 2026: vLLM y SGLang usan por defecto EAGLE-3 cuando está disponible, y EAGLE-2 en caso contrario. TensorRT-LLM tiene la ruta de Medusa más rápida para los modelos públicos de Meta y NVIDIA. llama.cpp distribuye decodificación convencional para implementaciones en CPU.

Construcción

Consulta code/main.py. Este es el bucle especulativo completo de Leviathan con todos los elementos: borrador de N, pasada paralela del verificador, rechazo por posición, muestreo residual, token de bonificación, reversión de KV y verificación empírica de que la distribución de salida coincide con el muestreo directo de q.

Paso 1: la regla de rechazo

def accept(q_prob, p_prob, u):
    if p_prob <= 0:
        return True
    return u < min(1.0, q_prob / p_prob)

Paso 2: distribución residual

def residual(q, p):
    raw = [max(0.0, qi - pi) for qi, pi in zip(q, p)]
    s = sum(raw)
    if s == 0:
        return list(q)
    return [r / s for r in raw]

Paso 3: un paso especulativo completo

La función spec_step genera N tokens borrador a partir de p, luego los verifica a todos en una sola evaluación paralela de q. Para cada token borrador aplica la regla de rechazo y, al primer rechazo, muestrea la corrección a partir del residuo. Si todo se acepta, emite un token de bonificación de q_{N+1}.

Paso 4: registro de la reversión de KV

El simulador realiza el seguimiento de una longitud lógica kv_length por worker. Tras la aceptación de k borradores, kv_length += k. En caso de rechazo en la posición j, el cache ya se ha escrito más allá de j, pero la longitud lógica se establece en prefix_length + j + 1 (una posición después del token de corrección). Las lecturas posteriores se truncan a la longitud lógica.

Paso 5: la verificación de Leviathan

Ejecuta 50,000 pasos especulativos. Cuenta la distribución empírica de los tokens aceptados. Compárala con 50,000 muestras directas de q. El estadístico chi-cuadrada debe quedar muy por debajo del valor crítico. El teorema se valida en la práctica.

Paso 6: aceleración vs. α

Varía la calidad del borrador perturbando p para alejarlo de q con distintas amplitudes. Mide α, luego grafica los tokens esperados por llamada al verificador en función de α y N. El código imprime una tabla que muestra cómo la calidad de borrador de clase EAGLE-3 (α ≈ 0.9) desbloquea de 4 a 5 tokens por llamada al verificador.

Uso

Ejecución de vllm serve de nivel de producción con EAGLE-3:

vllm serve meta-llama/Llama-3.3-70B-Instruct \
  --speculative-config '{
    "model": "yuhuili/EAGLE3-LLaMA3.3-Instruct-70B",
    "num_speculative_tokens": 5,
    "method": "eagle3"
  }'

SGLang con EAGLE-3 en batch 64 sobre H100: aproximadamente 1.38× más rendimiento (throughput) que la decodificación convencional en batch 64, según el artículo de EAGLE-3.

Cuándo recurrir a la decodificación especulativa:

  • Cualquier carga de trabajo de chat interactivo donde la latencia p50 sea más importante que el rendimiento máximo.
  • Generación de código y salidas estructuradas (JSON, SQL). α supera 0.9 debido a que la distribución objetivo es muy predecible.
  • Generación de textos largos (miles de tokens). La aceleración amortizada continúa rindiendo frutos.

Cuándo no hacerlo:

  • Modelos muy pequeños (< 3B). El borrador no es significativamente más económico que el verificador.
  • Implementaciones diminutas en CPU con batch-1. Es posible que el costo de memoria del modelo borrador no valga la pena.
  • Muestreo creativo con temperaturas muy elevadas donde α se desploma.

Producción

Esta lección produce outputs/skill-eagle3-tuner.md. Dada una carga de trabajo de inferencia (modelo, tamaño de lote/batch size, latencia objetivo, perfil de la tarea), recomienda una estrategia de decodificación especulativa y parámetros de ajuste (familia de borrador, N, profundidad del árbol, conmutación sensible a la temperatura).

Ejercicios

  1. Ejecuta code/main.py. Confirma que el estadístico chi-cuadrada en la verificación de distribución de Leviathan se mantiene por debajo del valor crítico del 95% en 50,000 muestras.

  2. Varía N de 1 a 10 manteniendo α en 0.9 y c en 0.04. Grafica los tokens esperados por llamada al verificador y el tiempo real (wall time) de procesamiento por token. Encuentra el N que minimiza el tiempo real. Explica la forma de la curva.

  3. Modifica el código para simular la búsqueda de árbol de EAGLE-2: en cada paso, el borrador propone un árbol con forma [2, 2, 2] (ocho rutas candidatas). El verificador se ejecuta una vez, y gana la ruta aceptada con mayor probabilidad. Calcula α por hoja y los tokens totales por llamada al verificador. Compara esto con la decodificación especulativa de cadena lineal con un cómputo equivalente.

  4. Implementa un simulador de reversión de KV en lote para dos secuencias concurrentes. La secuencia A tiene todos los borradores aceptados; la secuencia B rechaza en la posición 2. Muestra que la longitud kv_length correcta se actualiza por secuencia y que no se desperdicia trabajo.

  5. Lee la Sección 4 (Training-Time Test) del artículo de EAGLE-3. Explica en dos frases por que el entrenamiento simple de borrador sin TTT sufre de sesgo de exposición (exposure bias), y por qué alimentarlo con sus propias predicciones durante el entrenamiento lo soluciona. Conéctalo con la literatura de muestreo programado (scheduled sampling) en seq2seq.

Términos Clave

Término Lo que la gente dice Lo que realmente significa
Regla de Leviathan "min(1, q sobre p)" Aceptación/rechazo de Bernoulli con probabilidad min(1, q(d)/p(d)), preserva la distribución del verificador exactamente cuando se muestrea a partir del residuo tras un rechazo
Distribución residual "(q menos p) más, normalizada" (q - p)_+ limitado a cero y renormalizado — la distribución correcta de la cual muestrear en caso de rechazo
Tasa de aceptación α "qué tan seguido acierta el borrador" Probabilidad de éxito de Bernoulli esperada por token bajo la regla de rechazo; rige toda la matemática de aceleración
EAGLE-1 "borrador de estado oculto" Borrador de transformador diminuto condicionado al estado oculto de la última capa del verificador (Li et al., 2024)
EAGLE-2 "árbol dinámico de borradores" EAGLE-1 más un árbol de continuaciones candidatas puntuadas con atención de árbol en una sola pasada del verificador
EAGLE-3 "prueba en tiempo de entrenamiento" Elimina la pérdida por predicción de características y entrena en predicción directa de tokens alimentando al borrador con sus propios resultados durante el entrenamiento
Prueba en tiempo de entrenamiento (TTT) "solución para sesgo de exposición" Ejecuta el borrador de manera autorregresiva durante el entrenamiento para que coincidan las distribuciones de entrada de entrenamiento y prueba (el análogo directo del muestreo programado)
Reversión de KV "deshacer borradores rechazados" Registro que restablece el KV cache del verificador a la longitud del prefijo aceptado después de un rechazo
Token de bonificación "el gratuito" Cuando los N borradores son aceptados, se muestrea uno adicional de q_{N+1} sin costo de verificación adicional
Atención de árbol "verificar múltiples candidatos a la vez" Atención con una máscara no causal que respeta la topología de un árbol borrador; calcula q_i para cada nodo del árbol en una sola pasada hacia adelante

Lecturas Recomendadas

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).