Entendendo o desafio da decodificação em modelos de linguagem
Aplicações de inteligência artificial generativa como assistentes de escrita, agentes de código e sistemas de completamento de texto enfrentam um desafio fundamental: elas geram muito mais conteúdo do que consomem. Durante a fase de decodificação, tokens são produzidos sequencialmente, um de cada vez. Esse processo sequencial deixa os aceleradores de hardware limitados pela largura de banda de memória, com processadores significativamente subutilizados.
Essa subutilização eleva substancialmente o custo por token gerado. Cada etapa de decodificação ativa kernels caros de multiplicação de matrizes apenas para produzir um único token, mantendo os recursos de processamento praticamente ociosos. É nesse contexto que a decodificação especulativa surge como uma solução promissora.
Como funciona a decodificação especulativa
A decodificação especulativa acelera a geração autorregressiva utilizando uma abordagem de dois modelos:
- Um modelo auxiliar (draft model) propõe rapidamente n tokens candidatos
- O modelo principal (target model) verifica-os em uma única passagem direta

Quando o modelo principal aceita os tokens propostos pelo modelo auxiliar, eles são confirmados sem custo computacional adicional. Ao reduzir o número de etapas sequenciais de decodificação, a técnica diminui significativamente a latência entre tokens e melhora a utilização do hardware.
Componentes-chave da configuração
A implementação da decodificação especulativa envolve duas decisões críticas:
Seleção dos modelos: O modelo auxiliar e o modelo principal devem compartilhar o mesmo tokenizador e vocabulário. A AWS recomenda escolher modelos da mesma família arquitetural porque suas predições de próximo token concordam com maior frequência. Embora seja tecnicamente possível parear modelos com arquiteturas diferentes, acordos menos frequentes reduzem as taxas de aceitação, eliminando a maior parte do ganho de desempenho.
Janela de tokens especulativos (num_speculative_tokens): Este parâmetro controla quantos tokens o modelo auxiliar propõe simultaneamente. Aumentar esse valor permite pular mais etapas sequenciais de decodificação por passagem de verificação, reduzindo diretamente a latência entre tokens quando as taxas de aceitação são altas.
Compensações de desempenho
Configurar esse parâmetro envolve equilibrar cuidadosamente custo computacional versus qualidade de verificação. Valores muito baixos limitam os ganhos de velocidade. Valores excessivamente altos aumentam a probabilidade de rejeições antecipadas, desperdiçando computação do modelo auxiliar e elevando o custo de verificação do modelo principal.
Os ganhos de desempenho derivam de dois efeitos principais. Primeiro, a decodificação especulativa reduz o número de etapas de decodificação do modelo principal, diminuindo o número de acessos à memória do cache KV. O cache KV armazena tensores de chaves e valores computados anteriormente para evitar recálculo de atenção. Cada etapa de decodificação lê o cache completo da memória, tornando essa fase limitada pela largura de banda. Segundo, a técnica melhora a utilização de hardware durante a decodificação: em vez de processar um único token por vez, o modelo principal processa n tokens simultaneamente, convertendo uma sequência de pequenos cálculos ineficientes em uma carga de trabalho computacionalmente mais densa.
Modos de suporte no AWS Neuron
O AWS Neuron é o kit de desenvolvimento para chips de IA da AWS. O NeuronX Distributed Inference (NxDI) é sua biblioteca para inferência escalável e de alto desempenho de modelos de linguagem no Trainium e Inferentia.
O NxDI oferece suporte nativo à decodificação especulativa no Trainium em quatro modos:
- Decodificação especulativa vanilla: modelos auxiliar e principal compilados independentemente. É o modo mais simples para começar.
- Especulação fundida (Fused speculation): modelos compilados conjuntamente para desempenho otimizado. Este é o modo utilizado nos testes descritos neste artigo.
- Especulação EAGLE: o modelo auxiliar aproveita contexto de estados ocultos do modelo principal para melhorar as taxas de aceitação.
- Especulação Medusa: múltiplas cabeças de previsão pequenas executam em paralelo, reduzindo sobrecarga do modelo auxiliar.
Implementação prática com vLLM e Kubernetes
A AWS implantou dois serviços de inferência vLLM em instâncias Trainium dentro de um cluster Amazon Elastic Kubernetes Service (Amazon EKS), mantendo tudo idêntico exceto o método de decodificação para isolar o impacto de desempenho.
O serviço baseline (qwen-vllm) executa Qwen3-32B com decodificação padrão. O serviço com especulação (qwen-sd-vllm) executa o mesmo modelo Qwen3-32B principal, adicionando um modelo auxiliar Qwen3-1.7B com num_speculative_tokens=7.
Ambos os serviços rodavam em configurações idênticas em Trn2 (trn2.48xlarge), com a mesma alocação de acelerador, paralelismo de tensor (que distribui pesos de modelo entre múltiplos NeuronCores), comprimento de sequência, limites de batch e imagem DLC do Neuron. A única diferença era a adição do modelo auxiliar Qwen3-1.7B e o parâmetro num_speculative_tokens=7 para o serviço com especulação.

Para comparar as duas configurações sob carga idêntica, foi utilizado llmperf para gerar os mesmos padrões de tráfego contra ambos os endpoints. A telemetria de infraestrutura foi capturada com CloudWatch Container Insights e métricas personalizadas de nível de requisição (TTFT, latência entre tokens e latência end-to-end) foram publicadas em painéis do CloudWatch para análise lado a lado.
Metodologia e resultados de benchmarking
A AWS utilizou LLMPerf para executar casos de teste estruturados e intensivos em decodificação contra os deployments baseline e com especulação. Os benchmarks rodaram dentro de um pod Kubernetes, qwen-llmperf-pod.yaml, emitindo requisições concorrentes para ambos os endpoints e registrando métricas de latência em nível de token.
Os casos de teste variaram de prompts altamente estruturados (sequências repetitivas, continuações numéricas, padrões de código simples) até completamentos de linguagem natural em aberto, cobrindo comportamentos tanto de melhor como de pior caso para decodificação especulativa. O conjunto completo de prompts está disponível no repositório de amostras.
Impacto da decodificação especulativa por tipo de prompt
Os resultados demonstraram que a decodificação especulativa reduz latência seletivamente, com efetividade fortemente dependente da estrutura do prompt:
Prompts estruturados: Para prompts como “Repita exatamente a seguinte linha 50 vezes”, a decodificação especulativa entrega redução mensurável de latência end-to-end. Quando o modelo auxiliar prevê com confiabilidade o que o modelo principal geraria, o sistema pula uma fração substancial de etapas de decodificação do modelo principal. Nos testes, a latência entre tokens caiu para aproximadamente 15 ms por token (comparado aos aproximadamente 45 ms de prompts abertos), e a curva da especulação manteve-se consistentemente abaixo da baseline durante toda a execução.
Prompts abertos: Para prompts como “Acredito que o significado da vida é”, a decodificação especulativa não oferece benefício consistente. O modelo auxiliar frequentemente diverge do modelo principal, causando rejeições de tokens que negam os ganhos potenciais. As curvas de latência end-to-end da especulação e da baseline se sobrepõem significativamente, com latência entre tokens permanecendo próxima aos 45 ms por token para ambas as configurações.
Latência do primeiro token (TTFT): O TTFT permaneceu efetivamente inalterado entre as configurações, dominado pela fase de preenchimento (prefill) em que o modelo codifica o contexto de entrada. Como a decodificação especulativa não altera esse estágio, a latência de preenchimento não é nem melhorada nem degradada.
Esses resultados indicam que a decodificação especulativa melhora a latência total reduzindo o número de etapas de decodificação do modelo principal executadas, não acelerando a etapa de decodificação em si ou a fase de preenchimento. Isso explica por que ganhos aparecem em latência end-to-end para prompts estruturados, mas estão ausentes em latência entre tokens e TTFT, e por que a decodificação especulativa retorna ao comportamento baseline para geração aberta.
Sintonia de parâmetros na prática
Os testes compararam modelos auxiliares Qwen3-0.6B e Qwen3-1.7B. O modelo menor (0.6B) era mais rápido para executar, mas sua taxa de aceitação era aproximadamente 60% menor, suficiente para cancelar a economia computacional. O Qwen3-1.7B atingiu um melhor equilíbrio entre velocidade e aceitação.
Para num_speculative_tokens, foram avaliados valores entre 5 e 15. Configurações menores (por exemplo, 5) ofereciam aceleração limitada. Janelas maiores (por exemplo, 15) aumentavam rejeições e degradavam desempenho. A melhor configuração dependia fortemente da estrutura do prompt, testando tanto prompts estruturados (repetição, sequências numéricas, código simples) quanto linguagem natural aberta. O melhor equilíbrio resultou do Qwen3-1.7B com 7 tokens especulativos.
Recursos e próximos passos
Para começar com decodificação especulativa no AWS Trainium, a documentação oferece vários pontos de partida:
- Página de produto AWS Trainium — informações sobre tipos de instância, capacidades e preços.
- Guia de desenvolvedor NeuronX Distributed Inference — documentação completa do NxDI, incluindo opções de configuração de decodificação especulativa.
- Guia de recursos de decodificação especulativa do NxDI — referência para ativar modos vanilla, fundido, EAGLE e Medusa de especulação.
- Documentação do vLLM — como configurar vLLM para servir modelos de linguagem em produção.
- Documentação do Amazon EKS — primeiros passos com Kubernetes na AWS para deploy e escala de serviços de inferência.
- Repositório de amostras AWS Neuron EKS — exemplos de código end-to-end para reproduzir os benchmarks.
- Documentação do Amazon CloudWatch — configuração de painéis e métricas personalizadas para monitorar endpoints de inferência.
Considerações finais
As cargas de trabalho de modelos de linguagem intensivas em decodificação estão restritas pela natureza sequencial da geração autorregressiva. A decodificação especulativa no AWS Trainium2 rompe esse gargalo reduzindo o número de etapas de decodificação do modelo principal necessárias para produzir a saída completa, aumentando efetivamente os tokens gerados por passagem direta.
Para cargas de trabalho onde o espaço de saída é previsível — como geração de código, extração de dados estruturados, geração de relatórios em template ou síntese de arquivos de configuração — isso pode se traduzir diretamente em custo menor por token de saída e maior throughput, sem sacrificar qualidade.
A decodificação especulativa não é uma otimização universal. Sua efetividade depende da estrutura do prompt, qualidade do modelo auxiliar e sintonia de parâmetros especulativos. Quando aplicada às cargas de trabalho corretas, entrega melhorias significativas de latência e custo em sistemas de inferência baseados em Trainium.
Fonte
Accelerating decode-heavy LLM inference with speculative decoding on AWS Trainium and vLLM (https://aws.amazon.com/blogs/machine-learning/accelerating-decode-heavy-llm-inference-with-speculative-decoding-on-aws-trainium-and-vllm/)
Leave a Reply