Speculative decoding: responder más rápido sin pérdida de calidad
Un pequeño modelo borrador adivina varios tokens por adelantado, y el modelo grande los verifica en bloque: se obtiene la misma respuesta de forma notablemente más rápida.
El problema de fondo
Un modelo de lenguaje normalmente genera un token tras otro, y cada uno cuesta una pasada de cálculo completa por el modelo. En un modelo grande, esa pasada es cara: el tiempo de respuesta crece directamente con el número de tokens.
La idea detrás
Speculative decoding usa un "modelo borrador" pequeño y rápido que propone varios tokens seguidos. Luego, el modelo objetivo grande verifica estos tokens propuestos conjuntamente en una única pasada, en lugar de generar cada token por separado.
Por qué esto es más rápido sin cambiar la calidad
Si el borrador y el modelo objetivo coinciden, se aceptan varios tokens a la vez: una pasada de cálculo del modelo grande entrega entonces varios tokens en lugar de solo uno. Si el borrador se desvía, el modelo objetivo descarta los tokens incorrectos y genera él mismo el token correcto en ese punto. El resultado corresponde matemáticamente de forma exacta a lo que el modelo grande habría generado por sí solo; solo el camino hasta ahí está paralelizado.
Qué cambia realmente con esto
Solo baja el tiempo de respuesta, típicamente por un factor de dos a tres. La salida en sí permanece idéntica a la de una ejecución sin modelo borrador: speculative decoding es un procedimiento de aceleración puro del lado del servidor, no una técnica de prompting ni un compromiso de calidad.
EJEMPLO
Sin speculative decoding: un modelo grande genera token por token, cada uno verificado y generado individualmente: 20 tokens requieren 20 pasadas de cálculo completas. Con speculative decoding: un modelo borrador pequeño propone 5 tokens de una vez ('La', 'capital', 'de', 'Francia', 'es'). El modelo objetivo grande verifica los 5 en una sola pasada, está de acuerdo con los 5, y genera él mismo directamente el sexto token ('París') además: 6 tokens en una sola pasada completa del modelo grande en lugar de seis individuales.
🛠️ EJERCICIO — PRUÉBALO TÚ
Averigua si la configuración de modelo que usas emplea speculative decoding, y observa el efecto sobre el tiempo de respuesta.
- Comprueba en la documentación de tu proveedor o servidor de inferencia (por ejemplo, vLLM, TensorRT-LLM) si y cómo se puede configurar speculative decoding.
- Plantea la misma consulta larga una vez con speculative decoding activado y otra vez sin él, si es posible alternarlo.
- Compara el tiempo de respuesta medido de ambas ejecuciones.
- Compara el contenido de ambas respuestas carácter por carácter.
✅ AUTOEVALUACIÓN
- ☐ ¿Fue el tiempo de respuesta notablemente más corto con speculative decoding?
- ☐ ¿Fue el contenido de ambas respuestas realmente idéntico, tal como predice la teoría?
- ☐ ¿Puedes explicar por qué un modelo borrador poco adecuado reduce la ganancia de velocidad?
QUIZ RÁPIDO
¿Por qué speculative decoding produce exactamente la misma salida que el modelo grande por sí solo, solo que más rápido?
FUENTES
- arXiv: Fast Inference from Transformers via Speculative Decoding (Leviathan, Kalman, Matias) ↗ arxiv.org
- arXiv: Accelerating Large Language Model Decoding with Speculative Sampling (Chen et al., DeepMind) ↗ arxiv.org
- NVIDIA Technical Blog: An Introduction to Speculative Decoding for Reducing Latency in AI Inference ↗ developer.nvidia.com