Especulación que funciona: el drafter que duplica la velocidad
Medimos un modelo denso en el techo físico de la máquina (7 tok/s) y con un drafter DFlash llegó a 17,4 tok/s (×2,47). Cómo funciona la decodificación especulativa y qué aprendimos A/B testeándola.

Historia real de laboratorio con final feliz: un modelo condenado por física y el truco que lo resucitó. Con números A/B medidos, porque aquí todo se mide.
El problema: el techo de memoria
Muse Glimmer 30B, un modelo denso de 31GB cuantizado a Q8: cada token requiere leer los 31GB de pesos. El techo físico del GB10 con ese patrón de acceso es ~8,8 tok/s. Nuestra medida: 7,04 tok/s. No era un mal ajuste: era el límite físico. Ningún flag lo arregla.
La idea: no leer todo, adivinar y verificar
La decodificación especulativa invierte el juego: un modelo pequeño (“drafter”) propone rápido varios tokens siguientes, y el grande verifica en paralelo — una pasada por todos ellos cuesta casi lo mismo que por uno (misma lectura de pesos, más cálculo).
- Si el drafter acierta: varios tokens por cada lectura completa → velocidad ×2-3
- Si falla: se descarta el borrador y se reintenta → penalización pequeña
La cantidad que manda: la tasa de aceptación. Nuestro caso: 2,47× de speedup con una longitud media de borrador aceptado que rondaba los 2,5-3 tokens.
Los números del A/B (medidos, no prometidos)
| configuración | decode corto | decode 16K caliente |
|---|---|---|
| sin drafter (baseline) | 7,04 tok/s | 7,05 tok/s |
| con drafter DFlash | 17,42 tok/s (×2,47) | 19,34 tok/s (×2,74) |
Con el mismo modelo, la misma máquina y la misma batería. Y ojo al detalle de calidad: TC-60 pasó de 0/5 falso (defecto del test) a 5/5 real con el drafter activo — la especulación, bien configurada, no degradó nada.
Lo que nadie te cuenta de la especulación
- El resultado no coincide byte a byte con la generación normal, ni siquiera con temperatura 0. La especulación cambia el resultado, no solo la velocidad (los drafts afectan al muestreo en algunos runtimes). Si comparas modelos, compara con la MISMA config de especulación.
- No todo draft vale: el drafter tiene que ser del mismo “linaje” del modelo grande (mismo tokenizador, vocabulario). Nosotros usamos uno entrenado específicamente para el modelo objetivo.
- La tasa de aceptación depende del contenido: formatos estructurados aceptan ~100% (el draft adivina el siguiente JSON trivialmente); prosa creativa baja al 30%. Por eso GLM-5.3 da 65 tok/s en estructurado y 24 en prosa con el mismo drafter.
- Cuesta memoria: el drafter vive en RAM junto al modelo grande. En memoria unificada compartida, son GB que le quitas al KV cache.
La receta mental
¿modelo denso grande + techo de memoria? → especulación
¿MoE ya rápido? → la especulación aporta menos (el MoE ya lee poco por token)
¿herramientas/JSON? → aceptación altísima, speedup máximo
¿prosa creativa? → aceptación baja, speedup modesto pero real
En el laboratorio la especulación pasó de “truco de paper” a herramienta diaria el día que medimos ×2,47 con las manos. Es de esas pocas optimizaciones que son gratis en calidad y enormes en velocidad. 🚀