Decodificação Especulativa: O Truque de Inferência que Torna os LLMs 3x Mais Rápidos Sem Sacrificar a Qualidade

A decodificação especulativa reduz a latência de inferência de LLM em 2–3x sem alterar os pesos do modelo, a qualidade da saída ou a distribuição de probabilidade subjacente. Ela faz isso explorando uma assimetria estrutural que a maioria dos pipelines de inferência ignora: verificar tokens é muito mais barato do que gerá-los do zero.
A técnica foi formalizada no artigo de 2023 do DeepMind e desde então foi adotada em sistemas de produção no Google, Meta e um número crescente de frameworks de otimização de inferência, incluindo vLLM e TensorRT-LLM. Entender por que ela funciona — e onde falha — é essencial para qualquer equipe que execute LLMs em escala.
Como a Decodificação Especulativa Realmente Funciona
A geração autorregressiva padrão é sequencial por natureza: o modelo produz um token de cada vez, cada um condicionado a todos os tokens anteriores. Isso significa que um modelo de 70 bilhões de parâmetros rodando em uma única A100 gera aproximadamente 20–30 tokens por segundo, gastando a grande maioria de seu poder computacional em largura de banda de memória em vez de aritmética. A GPU está majoritariamente esperando que os pesos sejam carregados da HBM, não processando números.
A decodificação especulativa introduz um segundo modelo "rascunho" muito menor — tipicamente 7 bilhões de parâmetros ou menos — que propõe uma sequência de tokens candidatos (geralmente 4–8 de cada vez) antes do modelo "alvo" maior. O modelo alvo então avalia todos os tokens do rascunho em uma única passagem adiante. Como a atenção sobre uma sequência curta é quase tão rápida quanto uma passagem de token único em um modelo grande, o modelo alvo pode verificar ou rejeitar cada token do rascunho em paralelo.
Quando os tokens do rascunho correspondem ao que o modelo alvo teria gerado (ou seja, caem dentro de sua probabilidade de aceitação), todos são aceitos e o processo avança várias posições de uma só vez. Quando um token do rascunho é rejeitado, o pipeline recorre à amostragem da distribuição alvo naquela posição e reinicia o rascunho a partir dali. A percepção chave, comprovada rigorosamente no artigo original, é que esse esquema de amostragem por rejeição produz uma distribuição de saída idêntica à que você obteria apenas do modelo alvo — portanto, a qualidade é matematicamente preservada.
Taxas de Aceitação e Onde a Qualidade do Rascunho Importa
O multiplicador de velocidade é diretamente proporcional à taxa média de aceitação dos tokens do rascunho. Se o modelo rascunho aceita 80% dos tokens propostos e você especula 4 à frente, você efetivamente processa ~3,2 tokens por passagem adiante do modelo alvo em vez de 1. As taxas de aceitação do mundo real variam significativamente por tarefa:
- Saídas repetitivas ou modeladas (código padrão, dados estruturados): aceitação de 85–95%, aceleração de 3–4x comum
- Chat geral e seguimento de instruções: aceitação de 60–80%, aceleração de 1,5–2,5x típica
- Geração criativa e cadeias de raciocínio: aceitação de 40–65%, ganhos mais modestos
Isso significa que a decodificação especulativa funciona melhor quando a tarefa tem estrutura previsível — o que descreve uma grande parcela das cargas de trabalho de LLM em produção: geração de código, sumarização de documentos com formatação consistente e respostas de chatbot seguindo modelos de Prompt. Ela tem um desempenho inferior em tarefas criativas abertas onde o modelo rascunho diverge sistematicamente do alvo.
Decodificação Especulativa Automática e Cabeças Medusa
Executar um modelo rascunho separado adiciona complexidade operacional: você precisa colocalizar dois modelos, gerenciar memória para ambos e mantê-los sincronizados. Várias abordagens surgiram para lidar com isso.
A decodificação especulativa automática usa o próprio modelo alvo como gerador de rascunho, mas com camadas de saída antecipada. O modelo Llama 3.1 70B, por exemplo, pode ser configurado para sair na camada 32 (em vez das 80 camadas completas) para o rascunho, depois reentrar na pilha completa para verificação. Isso elimina a necessidade de um modelo separado, mas requer suporte arquitetônico para pulo de camadas.
Medusa, desenvolvido em Princeton e lançado como Open Source em 2024, adota uma abordagem diferente: adiciona várias cabeças de predição extras ao estado oculto final do modelo alvo, cada uma prevendo tokens nas posições +1, +2, +3, etc. Essas cabeças são treinadas de forma barata via Fine-tuning supervisionado em saídas existentes do modelo. Medusa-2, combinado com verificação baseada em árvore, alcança aceleração de 2,8x no Vicuna-13B sem um modelo rascunho separado e com degradação mínima de precisão.
SpecInfer da Carnegie Mellon estende ainda mais a ideia usando uma árvore de sequências de rascunho em vez de uma única sequência, verificada em uma única passagem adiante em lote. Isso aumenta a probabilidade de aceitação porque o modelo alvo só precisa encontrar um caminho válido na árvore.
Considerações de Produção
Implantar a decodificação especulativa em produção requer atenção a vários fatores que os benchmarks frequentemente subestimam:
- Interação do tamanho do lote: A decodificação especulativa fornece os maiores ganhos com tamanho de lote 1 (casos de uso interativos). À medida que o tamanho do lote cresce, o gargalo de largura de banda de memória diminui em relação à aritmética, e a sobrecarga de executar o modelo rascunho se torna menos justificada. Em tamanhos de lote acima de 32–64, a geração padrão geralmente supera a decodificação especulativa.
- Gerenciamento de KV Cache: Tanto o modelo rascunho quanto o modelo alvo mantêm KV Caches. A alocação de memória deve considerar ambos, complicando frameworks de serviço que otimizam a utilização de Cache (como PagedAttention do vLLM).
- Seleção do modelo rascunho: O modelo rascunho deve ser da mesma família do modelo alvo. Usar Llama-3-8B como rascunho para Llama-3-70B produz taxas de aceitação muito mais altas do que usar um modelo treinado em um conjunto de dados diferente ou com tokenização diferente.
- Compensação entre latência e throughput: A decodificação especulativa otimiza mais para latência (tempo para concluir uma única solicitação) do que para throughput (tokens por segundo em todas as solicitações). Equipes que executam inferência de serviço com alto QPS precisam avaliar qual métrica é mais importante para seu SLA.
Para Onde a Técnica Está Indo
A implantação de 2024 do Google da decodificação especulativa na infraestrutura de serviço do Gemini supostamente reduziu os custos de inferência em 40% para cargas de trabalho sensíveis à latência. A NVIDIA integrou suporte para decodificação especulativa no TensorRT-LLM 0.8 com cabeças de predição multi-token (MTP), e a abordagem agora é um recurso de primeira classe em vez de um plugin experimental.
A próxima fronteira é a decodificação especulativa em cascata: usar três ou mais modelos em uma hierarquia (por exemplo, 1B → 7B → 70B), onde o modelo menor faz rascunho para o modelo médio, que faz rascunho para o modelo grande. Resultados iniciais da equipe de pesquisa do Meta sugerem redução de latência de 4–5x em tarefas estruturadas com essa abordagem, embora a pegada de memória e a complexidade de orquestração aumentem proporcionalmente.
Há também trabalho ativo em decodificação especulativa para modelos de mistura de especialistas, onde os padrões de computação irregulares do roteamento esparso de especialistas interagem de maneiras não óbvias com a verificação de rascunho. A arquitetura Mixtral da Mistral foi especificamente examinada para isso; resultados iniciais mostram que a dinâmica da taxa de aceitação difere significativamente dos modelos densos.
Conclusões Acionáveis
- Se sua carga de trabalho é sensível à latência e o tamanho do lote é baixo (1–8), a decodificação especulativa deve ser sua primeira otimização a ser avaliada — frameworks como vLLM a suportam com uma única flag de configuração.
- Combine seu modelo rascunho com a família e os dados de treinamento do seu modelo alvo; rascunhos mal combinados darão taxas de aceitação ruins e podem até desacelerar as coisas.
- Meça as taxas de aceitação em seus prompts de produção reais, não em benchmarks. A estrutura da tarefa importa mais do que o tamanho do modelo para prever a aceleração.
- Para equipes que não podem executar um segundo modelo, avalie as cabeças Medusa como um meio-termo — elas adicionam sobrecarga de memória mínima e podem ser ajustadas em horas em uma única GPU.
- Não aplique decodificação especulativa a inferência em lote de alto throughput a menos que tenha verificado a dinâmica do tamanho do lote em seu ponto operacional específico.