Saltar al contenido
Angular•3 min de lectura

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.

> Más posts