Speculative decoding: baja tu TPOT con MTP y EAGLE-3
El número que define si tu agente se siente rápido no es el throughput: es el TPOT, el tiempo entre token y token. Speculative decoding lo baja sin tocar el hardware, con un truco viejo y elegante: un modelo chico propone varios tokens, tu modelo grande los verifica todos en un solo forward pass. Acepta los que coinciden, descarta el resto. La distribución de salida no cambia — es matemáticamente lossless, validado con tests de convergencia del rejection sampler. Fuente: docs de speculative decoding, actualizadas el 23 de octubre de 2026.
El método gratis: n-gram
Antes de entrenar o descargar nada, prueba el método que no requiere modelo draft. n-gram busca secuencias que ya aparecieron en tu prompt y las propone como especulación:
vllm serve Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8 \
--speculative-config '{
"method": "ngram",
"num_speculative_tokens": 4,
"prompt_lookup_min": 2,
"prompt_lookup_max": 5
}'
En workloads repetitivos — código que repite imports, JSON con la misma estructura, ediciones que reescriben lo que el modelo acaba de leer — la tasa de aceptación es alta y ganas entre un 20% y 40% de velocidad. En prosa creativa casi no gana nada. Es el experimento de 30 segundos: prende, mide, y si no mueve tu aguja, apaga.
MTP y EAGLE-3: cuando el draft es de verdad
Los métodos con modelo draft dan las mayores ganancias, y en 2026 el ecosistema se ordenó en tres:
- MTP (multi-token prediction): el mejor cuando tu modelo trae cabeza MTP nativa. DeepSeek V4, Qwen3.8 y Gemma 4 la traen. El draft es una capa extra del propio modelo, no un modelo aparte.
- EAGLE-3: el caballo de batalla generalista. Comunidad entera entrenando drafters (speculators); la versión 3.1 mejoró robustez con normalización FC. En GPUs AMD se midió hasta 2.00x throughput sirviendo Kimi-K2.5 con EAGLE3. Fuente: blog de vLLM, julio 2026.
- P-EAGLE y DFlash: drafting paralelo — generan varios tokens draft en un solo forward del draft model, en lugar de secuencial. P-EAGLE superó a EAGLE-3 en B200.
El formato en vLLM es el mismo JSON:
vllm serve deepseek-ai/DeepSeek-V4-Flash \
--speculative-config '{
"method": "mtp",
"num_speculative_tokens": 2
}'
num_speculative_tokens es el número de tokens que propone el draft por paso. Más no es mejor: cada token extra propone más trabajo al verificador, y si tu tasa de aceptación cae, estás pagando computo que se tira. Empieza en 2, sube a 4, mide con tu benchmark del capítulo 6.
Cuándo NO activarlo
La tabla de selección de métodos de la docs es honesta: los métodos con modelo draft dan "high gain" en QPS bajo y "medium to high" en QPS alto; n-gram y suffix dan "low to medium" y "medium". La razón es física: si tu GPU ya está saturada con el batch grande, el forward del draft model roba compute al batch principal.
Para ese problema existe adaptive verification, que aterrizó este año en vLLM: en lugar de verificar todos los tokens propuestos con el mismo presupuesto, dimensiona la verificación por request según la confianza del draft model. El resultado medido: un solo speculator sostiene la frontera de throughput/latencia desde batch 1 hasta batch 256, sin retunear por tráfico. Fuente: blog de vLLM, agosto 2026. Por ahora es exclusivo de los drafters DSpark.
Gotcha de compatibilidad que te va a ahorrar una tarde: pipeline parallelism no compone con speculative decoding (hasta vLLM 0.15.0). Si tu despliegue usa PP, elige: o PP o especulación, no ambos.
Checkpoint y el error típico
Checkpoint: tu server corre con --speculative-config activo y comparaste TPOT con y sin especulación en tu workload real, no en el del tutorial. La prueba: mismo benchmark, con y sin — si la ganancia es menor al 10%, el método o el modelo no son para tu tráfico.
El error típico: subir num_speculative_tokens a 8 porque "más especulación = más rápido". Con baja tasa de aceptación eso hace el server más lento, no más rápido. La tasa se mide: vLLM expone métricas de aceptación por request, y el acceptance rate por posición te dice dónde está el techo.
Siguiente capítulo
Ya aceleraste el decode. Ahora el otro cuello de botella: la memoria. Qué hacer cuando la KV cache de tus agentes ya no cabe en la GPU.