GEO

Decodificación Especulativa

La decodificación especulativa es una optimización de inferencia en la que un modelo "borrador" pequeño y rápido predice varios tokens por adelantado, y luego el modelo objetivo grande los verifica en un único pase hacia adelante en paralelo, aceptando los que coinciden con lo que habría generado y rechazando el resto. El usuario obtiene exactamente la misma salida que con la decodificación simple, pero de 2 a 4 veces más rápido.

La decodificación especulativa es una optimización de inferencia en la que un modelo "borrador" pequeño y rápido predice varios tokens por adelantado, y luego el modelo objetivo grande los verifica en un único pase hacia adelante en paralelo, aceptando los que coinciden con lo que habría generado y rechazando el resto. El usuario obtiene exactamente la misma salida que con la decodificación simple, pero de 2 a 4 veces más rápido.

Por qué es importante

La generación del LLM está limitada por dependencias secuenciales: cada token tiene que esperar al anterior. Los modelos grandes no están limitados por el cómputo puro, sino por el ancho de banda de la memoria: mover sus enormes pesos a las unidades de cómputo de la GPU una vez por token. La decodificación especulativa rompe la cadena secuencial al agrupar varios tokens especulativos en un solo pase hacia adelante, reduciendo drásticamente el número de costosas llamadas al modelo grande. Google la publicó por primera vez en 2022; para 2024 a 2025 todos los principales motores de inferencia (vLLM, TensorRT-LLM, llama.cpp, together.ai) incorporan la decodificación especulativa como optimización estándar, recortando los costos de servicio entre un 30 % y un 70 % para la misma calidad de salida.

Cómo funciona

1. El modelo borrador propone: Un modelo pequeño y barato (por ejemplo, un gemelo de 1.000 millones de parámetros del objetivo de 70.000 millones) genera los siguientes k tokens de forma autorregresiva. Esto es rápido porque los pesos del modelo borrador son pequeños.

2. El modelo objetivo verifica: El modelo objetivo ejecuta un pase hacia adelante sobre los k tokens del borrador en paralelo, calculando lo que él habría generado en cada posición.

3. Aceptar o rechazar: Comenzando por el primer token del borrador, el modelo objetivo lo acepta si su propia opción principal (o una muestra ajustada por probabilidad) coincide, y continúa hasta que discrepa.

4. Corregir y continuar: En la primera discrepancia, el token del objetivo reemplaza al del borrador. El proceso se reinicia desde ahí.

5. Efecto neto: Si el borrador acierta el 70 % de las veces en promedio, el modelo objetivo genera ~3 veces más tokens por pase hacia adelante, reduciendo la latencia de forma proporcional.

Por qué no tiene pérdidas

Hecha correctamente, la decodificación especulativa produce exactamente la misma distribución de salida que la decodificación simple. La matemática funciona porque el modelo objetivo actúa como verificador: cualquier token que proponga el borrador debe pasar la prueba de aceptación del objetivo, de modo que la secuencia final es idéntica a la que el objetivo habría generado por sí solo. No hay compromiso de calidad, solo una ganancia de velocidad.

Variantes

Decodificación especulativa básica (Google 2022): Un modelo borrador, un objetivo. La formulación original.

Medusa: Añade múltiples "cabezas" al propio modelo objetivo que predicen varios tokens por adelantado, eliminando la necesidad de un modelo borrador separado. Despliegue más simple.

EAGLE: Una variante más precisa que usa las propias representaciones internas del modelo objetivo para hacer el borrador, logrando tasas de aceptación más altas que los borradores externos.

Decodificación especulativa en árbol: Hace el borrador de múltiples árboles de tokens candidatos en paralelo. Mayor probabilidad de aceptación, más cómputo de verificación.

Autoespeculativa: Omite capas del modelo objetivo para formar un "borrador" barato a partir de los mismos pesos.

Cuándo ayuda más

Inferencia de lote unitario: El chat interactivo de un solo usuario está limitado por la memoria. La decodificación especulativa brilla aquí.

Salidas largas: Cuantos más tokens genera el modelo, más se acumulan los ahorros.

Estructura repetitiva: Cuando la salida sigue patrones predecibles (código, JSON), las tasas de aceptación del borrador son muy altas.

Aprovechamiento de hardware ocioso: En las GPU que de otro modo estarían inactivas esperando la memoria, la especulación llena el vacío de cómputo.

Cuándo ayuda menos

Servicio de lotes grandes: Las cargas de trabajo de alto rendimiento ya están limitadas por el cómputo, no por la memoria. La especulación añade sobrecarga sin ahorrar mucho.

Salidas muy creativas o aleatorias: Las bajas tasas de aceptación del borrador limitan la aceleración.

Modelos diminutos: Un borrador de 1.000 millones sobre un objetivo de 3.000 millones no ahorra mucho porque el objetivo ya es barato.

Prompts cortos con respuestas cortas: La sobrecarga de configurar la especulación domina la ganancia.

Compensaciones

Modelo adicional en memoria: Ahora sirves tanto el objetivo como el borrador. La huella de memoria aumenta a menos que uses la autoespeculativa.

Complejidad de implementación: Gestionar el bucle de verificación, el muestreo por rechazo y la reversión de la caché KV no es trivial. Usa una biblioteca.

Sensibilidad a la tasa de aceptación: Un borrador mal emparejado puede en realidad ralentizar las cosas si dominan los rechazos.

Arranque en frío: Los primeros tokens no se benefician de la especulación mientras el borrador se calienta.

Errores comunes

Usar un modelo borrador de una familia distinta: Un borrador de Llama para un objetivo de Mistral rara vez acepta. El borrador debe estar alineado con el objetivo.

Un borrador demasiado grande: Un borrador de 7.000 millones bajo un objetivo de 70.000 millones tiene una gran tasa de aceptación, pero cuesta demasiado ejecutarlo. El borrador debería ser del 5 % al 20 % del tamaño del objetivo.

Ignorar la reversión de la caché KV: Los tokens rechazados deben revertir la caché KV del objetivo. Olvidar esto corrompe el estado.

Aplicarla a modelos que ya son rápidos: Los modelos de nivel Haiku/Flash son ligeros en memoria. La especulación ahorra menos.

No medir de extremo a extremo: Evalúa toda la ruta de la solicitud. Las ganancias ingenuas de tokens por segundo a veces desaparecen bajo carga o cuando domina la latencia de la red.

Sources: