GEO

Decodificacao Especulativa

A decodificacao especulativa (speculative decoding) e uma otimizacao de inferencia na qual um pequeno e rapido modelo "rascunho" (draft) preve varios tokens a frente, e o grande modelo alvo (target) entao os verifica em uma unica passagem direta (forward pass) paralela, aceitando aqueles que coincidem com o que ele teria gerado e rejeitando o restante. O usuario recebe exatamente a mesma saida da decodificacao comum, porem de 2 a 4x mais rapido.

A decodificacao especulativa (speculative decoding) e uma otimizacao de inferencia na qual um pequeno e rapido modelo "rascunho" (draft) preve varios tokens a frente, e o grande modelo alvo (target) entao os verifica em uma unica passagem direta (forward pass) paralela, aceitando aqueles que coincidem com o que ele teria gerado e rejeitando o restante. O usuario recebe exatamente a mesma saida da decodificacao comum, porem de 2 a 4x mais rapido.

Por que importa

A geracao de um LLM e limitada por dependencias sequenciais: cada token precisa esperar pelo anterior. Modelos grandes nao sao limitados pela computacao bruta, mas pela largura de banda de memoria, que e o custo de mover seus enormes pesos para as unidades de computacao da GPU uma vez por token. A decodificacao especulativa quebra a cadeia sequencial ao agrupar varios tokens especulativos em uma unica passagem direta, reduzindo drasticamente o numero de chamadas caras ao modelo grande. O Google a publicou pela primeira vez em 2022; em 2024 a 2025, todos os principais motores de inferencia (vLLM, TensorRT-LLM, llama.cpp, together.ai) entregam a decodificacao especulativa como uma otimizacao padrao, reduzindo os custos de servir o modelo em 30 a 70% para a mesma qualidade de saida.

Como funciona

1. O modelo rascunho propoe: um modelo pequeno e barato (digamos, um gemeo de 1 bilhao de parametros do alvo de 70 bilhoes) gera os proximos k tokens de forma autorregressiva. Isso e rapido porque os pesos do modelo rascunho sao pequenos.

2. O modelo alvo verifica: o modelo alvo executa uma passagem direta sobre os k tokens rascunho em paralelo, calculando o que ele teria gerado em cada posicao.

3. Aceitar ou rejeitar: a partir do primeiro token rascunho, o modelo alvo o aceita se sua propria escolha principal (ou uma amostra com probabilidade correspondente) concordar, e continua ate discordar.

4. Corrigir e continuar: na primeira discordancia, o token do alvo substitui o do rascunho. O processo reinicia dali.

5. Efeito liquido: se o rascunho acerta 70% das vezes em media, o modelo alvo gera cerca de 3x mais tokens por passagem direta, reduzindo a latencia proporcionalmente.

Por que e sem perdas

Feita corretamente, a decodificacao especulativa produz exatamente a mesma distribuicao de saida da decodificacao comum. A matematica funciona porque o modelo alvo atua como verificador: qualquer token que o rascunho proponha precisa passar no teste de aceitacao do alvo, de modo que a sequencia final e identica ao que o alvo teria gerado sozinho. Nao ha troca de qualidade, apenas um ganho de velocidade.

Variantes

Decodificacao especulativa basica (Google 2022): um modelo rascunho, um alvo. A formulacao original.

Medusa: adiciona varias "cabecas" (heads) ao proprio modelo alvo, que preveem varios tokens a frente, eliminando a necessidade de um modelo rascunho separado. Implantacao mais simples.

EAGLE: uma variante mais precisa que usa as proprias representacoes internas do modelo alvo para rascunhar, alcancando taxas de aceitacao mais altas do que rascunhos externos.

Decodificacao especulativa em arvore: rascunha varias arvores de tokens candidatos em paralelo. Maior probabilidade de aceitacao, mais computacao de verificacao.

Autoespeculativa: pula camadas do modelo alvo para formar um "rascunho" barato a partir dos mesmos pesos.

Quando mais ajuda

Inferencia em lote unitario (batch-of-one): o chat interativo de usuario unico e limitado por memoria. A decodificacao especulativa brilha aqui.

Saidas longas: quanto mais tokens o modelo gera, mais a economia acumulada se soma.

Estrutura repetitiva: quando a saida segue padroes previsiveis (codigo, JSON), as taxas de aceitacao do rascunho sao muito altas.

Aproveitamento de hardware ocioso: em GPUs que de outra forma ficariam ociosas esperando pela memoria, a especulacao preenche a lacuna de computacao.

Quando ajuda menos

Servir grandes lotes: cargas de trabalho de alta vazao ja sao limitadas pela computacao, e nao pela memoria. A especulacao adiciona sobrecarga sem economizar muito.

Saidas muito criativas / aleatorias: baixas taxas de aceitacao do rascunho limitam o ganho de velocidade.

Modelos minusculos: um rascunho de 1 bilhao sobre um alvo de 3 bilhoes nao economiza muito, porque o alvo ja e barato.

Prompts curtos com respostas curtas: a sobrecarga de preparar a especulacao domina o ganho.

Trade-offs

Modelo extra na memoria: agora voce serve tanto o alvo quanto o rascunho. A pegada de memoria aumenta, a menos que voce use a autoespeculativa.

Complexidade de implementacao: gerenciar o laco de verificacao, a amostragem por rejeicao e o rollback do cache KV nao e trivial. Use uma biblioteca.

Sensibilidade a taxa de aceitacao: um rascunho mal combinado pode, na verdade, deixar tudo mais lento se as rejeicoes dominarem.

Cold start: os primeiros tokens nao se beneficiam da especulacao enquanto o rascunho "esquenta".

Erros comuns

Usar um modelo rascunho de uma familia diferente: um rascunho Llama para um alvo Mistral raramente e aceito. O rascunho precisa estar alinhado com o alvo.

Rascunho grande demais: um rascunho de 7 bilhoes sob um alvo de 70 bilhoes tem uma otima taxa de aceitacao, mas custa caro demais para rodar. O rascunho deve ter de 5 a 20% do tamanho do alvo.

Ignorar o rollback do cache KV: os tokens rejeitados precisam reverter o cache KV do alvo. Esquecer isso corrompe o estado.

Aplicar a modelos que ja sao rapidos: modelos do nivel Haiku/Flash sao leves em memoria. A especulacao economiza menos.

Nao medir de ponta a ponta: faca benchmark de todo o caminho da requisicao. Ganhos ingenuos de tokens por segundo as vezes desaparecem sob carga ou quando a latencia de rede domina.

Fontes: