Guía de Decodificación Especulativa
Acelere la inferencia de LLMs un 60-80% con modelos borrador. Tabla de decisión para cuándo usar decodificación especulativa y patrones de implementación.
This template includes both English and Spanish versions. Scroll down to find "Versión Española".
Speculative Decoding Guide
Template provided by VORLUX AI | vorluxai.com
What Is Speculative Decoding?
Speculative decoding is an inference acceleration technique that uses a small, fast draft model to predict multiple tokens ahead, then verifies those predictions in a single forward pass of the large target model. When the draft model guesses correctly — which happens 60-80% of the time for well-matched pairs — you get multiple tokens for the cost of one target-model pass.
The key insight: verification is cheaper than generation. A large model can check 8 draft tokens in roughly the same time it takes to generate 1 token autoregressively.
How It Works
1. Draft model generates N candidate tokens (fast, ~100ms)
2. Target model verifies all N tokens in one forward pass (~200ms)
3. Accept all correct tokens, reject from first mismatch
4. Resume from last accepted position
Typical speedup: 1.5-3x wall-clock time reduction without any quality loss. The output is mathematically identical to running the target model alone — speculative decoding is lossless.
Decision Table: When to Use
| Scenario | Use Speculative Decoding? | Why |
|---|---|---|
| Long-form generation (>200 tokens) | Yes | Maximum benefit from batched verification |
| Chat / short responses (<50 tokens) | Maybe | Overhead may negate gains for very short outputs |
| Streaming to user | Yes | Draft tokens appear faster, improving perceived latency |
| Batch processing (offline) | Yes | Throughput gains compound across thousands of requests |
| VRAM-constrained device | No | Both models must fit in memory simultaneously |
| Code generation | Yes | Code is highly predictable, draft accuracy is very high |
| Creative writing | Maybe | Lower draft accuracy reduces the speedup |
| Multi-language output | Maybe | Draft model must handle the target language well |
Choosing a Draft Model
The draft model should be:
- Same architecture family as the target (e.g., Llama draft for Llama target)
- 5-10x smaller than the target model
- Trained on similar data for high token-match rates
Recommended Pairs
| Target Model | Draft Model | Expected Acceptance Rate |
|---|---|---|
| Llama 3.1 70B | Llama 3.1 8B | 70-80% |
| Qwen 2.5 72B | Qwen 2.5 7B | 65-75% |
| Mistral Large | Mistral 7B | 60-70% |
| Command R+ 104B | Command R 35B | 55-65% |
| Phi-3 Medium 14B | Phi-3 Mini 3.8B | 70-80% |
Implementation with vLLM
# Start vLLM with speculative decoding enabled
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-70B \
--speculative-model meta-llama/Llama-3.1-8B \
--num-speculative-tokens 5 \
--use-v2-block-manager
With llama.cpp (local deployment):
# Use --draft flag for speculative decoding
./llama-server \
-m llama-3.1-70b-q4_k_m.gguf \
--draft llama-3.1-8b-q4_k_m.gguf \
-ngl 99 --draft-ngl 99 \
-np 5
Memory Budget
Both models must fit simultaneously. Calculate total memory as:
Total VRAM = Target VRAM + Draft VRAM + KV Cache (both) + 2 GB overhead
Example: Llama 3.1 70B Q4_K_M (42 GB) + Llama 3.1 8B Q4_K_M (5 GB) + KV cache (4 GB) + overhead (2 GB) = 53 GB minimum.
Tuning num_speculative_tokens
| N (draft tokens) | Typical Result |
|---|---|
| 3 | Conservative — safe default, 1.3-1.5x speedup |
| 5 | Balanced — recommended starting point, 1.5-2.5x speedup |
| 8 | Aggressive — higher throughput if acceptance rate is high |
| 12+ | Diminishing returns — only for very predictable outputs |
Monitor your acceptance rate. If it drops below 50%, reduce N or switch to a better-matched draft model.
Need help optimising inference for your edge deployment? Contact VORLUX AI for a free consultation.
Versión Española
Guía de Decodificación Especulativa
Plantilla proporcionada por VORLUX AI | vorluxai.com
¿Qué es la Decodificación Especulativa?
La decodificación especulativa es una técnica de aceleración de inferencia que usa un modelo borrador pequeño y rápido para predecir múltiples tokens por adelantado, y luego verifica esas predicciones en un solo paso forward del modelo objetivo grande. Cuando el modelo borrador acierta — lo cual ocurre el 60-80% de las veces con pares bien emparejados — se obtienen múltiples tokens por el coste de un solo paso del modelo objetivo.
La clave: la verificación es más barata que la generación. Un modelo grande puede verificar 8 tokens borrador en aproximadamente el mismo tiempo que tarda en generar 1 token autorregresivamente.
Cómo Funciona
1. El modelo borrador genera N tokens candidatos (rápido, ~100ms)
2. El modelo objetivo verifica todos los N tokens en un paso forward (~200ms)
3. Se aceptan todos los tokens correctos, se rechaza desde el primer error
4. Se reanuda desde la última posición aceptada
Aceleración típica: Reducción de 1,5-3x en tiempo real sin ninguna pérdida de calidad. La salida es matemáticamente idéntica a ejecutar el modelo objetivo solo — la decodificación especulativa es sin pérdidas.
Tabla de Decisión: Cuándo Usar
| Escenario | ¿Usar Decodificación Especulativa? | Por Qué |
|---|---|---|
| Generación larga (>200 tokens) | Sí | Máximo beneficio de la verificación por lotes |
| Chat / respuestas cortas (<50 tokens) | Quizás | El overhead puede anular las ganancias |
| Streaming al usuario | Sí | Los tokens borrador aparecen más rápido |
| Procesamiento por lotes (offline) | Sí | Las ganancias se acumulan en miles de peticiones |
| Dispositivo con VRAM limitada | No | Ambos modelos deben caber en memoria |
| Generación de código | Sí | El código es altamente predecible |
| Escritura creativa | Quizás | Menor precisión del borrador reduce la aceleración |
| Salida multilingüe | Quizás | El modelo borrador debe manejar bien el idioma objetivo |
Elección del Modelo Borrador
El modelo borrador debe ser:
- Misma familia de arquitectura que el objetivo (ej: borrador Llama para objetivo Llama)
- 5-10x más pequeño que el modelo objetivo
- Entrenado con datos similares para altas tasas de coincidencia de tokens
Pares Recomendados
| Modelo Objetivo | Modelo Borrador | Tasa de Aceptación Esperada |
|---|---|---|
| Llama 3.1 70B | Llama 3.1 8B | 70-80% |
| Qwen 2.5 72B | Qwen 2.5 7B | 65-75% |
| Mistral Large | Mistral 7B | 60-70% |
| Command R+ 104B | Command R 35B | 55-65% |
| Phi-3 Medium 14B | Phi-3 Mini 3.8B | 70-80% |
Implementación con vLLM
# Iniciar vLLM con decodificación especulativa habilitada
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-70B \
--speculative-model meta-llama/Llama-3.1-8B \
--num-speculative-tokens 5 \
--use-v2-block-manager
Con llama.cpp (despliegue local):
# Usar --draft para decodificación especulativa
./llama-server \
-m llama-3.1-70b-q4_k_m.gguf \
--draft llama-3.1-8b-q4_k_m.gguf \
-ngl 99 --draft-ngl 99 \
-np 5
Presupuesto de Memoria
Ambos modelos deben caber simultáneamente. Calcule la memoria total como:
VRAM Total = VRAM Objetivo + VRAM Borrador + Caché KV (ambos) + 2 GB overhead
Ejemplo: Llama 3.1 70B Q4_K_M (42 GB) + Llama 3.1 8B Q4_K_M (5 GB) + caché KV (4 GB) + overhead (2 GB) = 53 GB mínimo.
Ajuste de num_speculative_tokens
| N (tokens borrador) | Resultado Típico |
|---|---|
| 3 | Conservador — por defecto seguro, aceleración 1,3-1,5x |
| 5 | Equilibrado — punto de partida recomendado, aceleración 1,5-2,5x |
| 8 | Agresivo — mayor rendimiento si la tasa de aceptación es alta |
| 12+ | Rendimientos decrecientes — solo para salidas muy predecibles |
Monitorice su tasa de aceptación. Si cae por debajo del 50%, reduzca N o cambie a un modelo borrador mejor emparejado.
¿Necesita ayuda optimizando la inferencia para su despliegue edge? Contacte con VORLUX AI para una consulta gratuita.