Speculative Decoding es una técnica avanzada para acelerar la inferencia en Large Language Models (LLMs) al predecir y validar secuencias de tokens de forma especulativa. En lugar de generar un token a la vez de manera secuencial con el LLM grande (el 'modelo principal'), un modelo auxiliar más pequeño y rápido (el 'modelo borrador' o 'draft model') propone una secuencia de tokens. El modelo principal evalúa esta secuencia propuesta en paralelo, aceptando los tokens correctos y corrigiendo los incorrectos. Este proceso permite 'saltar' varios pasos de inferencia secuencial si las predicciones del modelo borrador son precisas, logrando una reducción significativa en la latencia de generación de texto.

Esta técnica ha sido implementada y explorada en diversas plataformas y frameworks de inferencia de LLMs. Google la introdujo como 'Accelerating Large Language Model Decoding with Speculative Sampling' y la ha aplicado en sus modelos. Hugging Face ha integrado Speculative Decoding en sus bibliotecas, permitiendo a los desarrolladores utilizarla con modelos como Llama y T5. Proyectos de código abierto como 'ExLlamaV2' y 'vLLM' también han adoptado y optimizado Speculative Decoding para mejorar el rendimiento en hardware de consumo y entornos de producción, respectivamente. Es una optimización clave en la infraestructura de inferencia de modelos generativos a gran escala.

Para un arquitecto de sistemas, Speculative Decoding es crucial porque ofrece un trade-off directo entre latencia y complejidad computacional. Permite reducir drásticamente el tiempo de respuesta de los LLMs, lo cual es vital para aplicaciones interactivas como chatbots, asistentes de código o interfaces conversacionales en tiempo real. La decisión de implementarlo implica seleccionar un modelo borrador adecuado (que debe ser lo suficientemente rápido y preciso), gestionar la sobrecarga de ejecutar dos modelos (el principal y el borrador) y optimizar el proceso de verificación. Un arquitecto debe evaluar si la ganancia en latencia justifica la complejidad adicional y el posible aumento en el consumo de memoria, especialmente en entornos con restricciones de recursos o requisitos de escalabilidad masiva.