Prompt Compression
A compressão de prompts encurta as entradas de LLM ao eliminar tokens com pouca informação ou codificar o contexto de forma compacta, reduzindo o custo e a latência sem prejudicar as respostas.
A compressão de prompts encurta a entrada de um grande modelo de linguagem (LLM) sem remover as informações necessárias para responder, fazendo com que uma solicitação use menos tokens, seja executada mais rapidamente e caiba na janela de contexto. Os métodos vão da exclusão de palavras previsíveis com um modelo de linguagem pequeno à síntese de históricos longos e ao treinamento de tokens compactos aprendidos que substituem passagens inteiras. A compressão compensa quando os prompts são longos e enviados com frequência, como em pipelines de geração aumentada por recuperação (RAG) que inserem muitos documentos recuperados, agentes de IA cujos históricos crescem a cada etapa e aplicações com instruções e exemplos longos. Os provedores cobram por token de entrada, e a computação da atenção cresce com o tamanho da entrada; por isso, comprimir um prompt pela metade reduz aproximadamente à metade o custo de entrada e diminui a latência de inferência.
Como funciona a compressão de prompts#
A compressão rígida de prompts transforma o texto em uma versão mais curta que qualquer LLM, inclusive um modelo de API fechado, pode ler. A maioria dos métodos atribui uma pontuação a cada token com um modelo de linguagem pequeno e descarta os tokens que ele considera fáceis de prever, por conterem menos informação. O Selective Context aplica essa ideia a palavras e frases, e o LLMLingua da Microsoft adiciona um controlador de orçamento que atribui diferentes taxas de compressão à instrução, aos exemplos e à pergunta, além de uma poda iterativa no nível dos tokens, alcançando até 20x de compressão com pouca perda de desempenho. O LLMLingua-2 reformula a compressão como classificação de tokens com um codificador bidirecional, como o XLM-RoBERTa, treinado com exemplos de compressão destilados de um LLM maior. Ele é executado de 3x a 6x mais rápido que os métodos anteriores e reduz a latência de ponta a ponta de 1,6x a 2,9x com compressão de 2x a 5x. Em vez disso, métodos abstrativos pedem a um modelo que resuma o contexto, o que comprime mais, mas pode descartar detalhes necessários para responder à pergunta.
A compressão suave de prompts transforma o texto em alguns embeddings aprendidos que o modelo lê no lugar dos tokens originais. Os tokens Gist treinam o LLaMA-7B e o FLAN-T5-XXL para condensar uma instrução em poucos tokens especiais, alcançando até 26x de compressão e até 40% menos FLOPs. Esses métodos exigem acesso aos pesos do modelo, portanto se aplicam a modelos abertos.
O núcleo da compressão no nível dos tokens cabe em poucas linhas de PyTorch. Este exemplo usa o GPT-2, com 124 milhões de parâmetros, do Hugging Face Transformers para calcular a autoinformação de cada token — o logaritmo negativo da probabilidade do token dado tudo o que veio antes — e manter a metade mais surpreendente:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
prompt = (
"The quarterly maintenance report states that, as of the end of the quarter, a total of three conveyor "
"belts on line 4 were found to have worn bearings, and all of them were replaced on March 12 by the night shift."
)
ids = tokenizer(prompt, return_tensors="pt").input_ids[0]
# Self-information of each token, -log p(token | preceding tokens), under a small language model
with torch.no_grad():
logits = model(ids[None]).logits[0, :-1]
info = -logits.log_softmax(-1).gather(1, ids[1:, None]).squeeze(1)
# Keep the first token and the more surprising half of the rest, in their original order
keep = torch.cat([torch.tensor([True]), info > info.median()])
compressed = tokenizer.decode(ids[keep])
print(f"{len(ids)} -> {keep.sum().item()} tokens: {compressed}")A saída é 46 -> 23 tokens: The quarterly maintenance report states, a three convey on line 4 found worn bearings all replaced on March 12 by night shift. Os fatos permanecem, incluindo a linha 4, os rolamentos desgastados, 12 de março e o turno da noite, enquanto o preenchimento previsível, como "no fim do trimestre", desaparece. O fragmento "convey", que sobrou de "conveyor belts", é um artefato típico da poda de tokens individuais, por isso alguns métodos podam palavras ou frases inteiras.
Compressão de imagens#
Os modelos de visão e linguagem transformam cada imagem em centenas de tokens visuais, muitos deles redundantes. O FastV poda metade dos tokens da imagem após a segunda camada e reduz os FLOPs em 45% para o LLaVA-1.5-13B sem sacrificar o desempenho, e a mesclagem de tokens aplica uma ideia semelhante dentro dos transformadores de visão. Um detector de objetos também pode funcionar como compressor de imagens: o Ultralytics YOLO26 reduz uma foto a Results.summary(), uma lista com o nome da classe, a confiança e as coordenadas da caixa de cada objeto. Assim, um pipeline de LLM que precisa saber apenas quais objetos estão presentes e onde pode enviar algumas dezenas de tokens por objeto, em vez de uma imagem que custa centenas ou mais de mil tokens.
Compressão de prompts e técnicas relacionadas#
- Armazenamento em cache de prompts: Armazena os estados calculados pelo modelo para um prefixo de prompt repetido, evitando recalculá-los. O prompt mantém o mesmo tamanho, e as duas técnicas se combinam bem: comprime-se a parte variável do prompt e armazena-se em cache a parte fixa.
- Compressão do cache KV: Descarta ou quantiza os estados de chave e valor dentro do modelo durante a geração. A compressão de prompts atua na entrada antes que o modelo a processe.
- Engenharia de prompts: As pessoas escrevem prompts claros e concisos manualmente. A compressão é automática e se aplica a conteúdo que ninguém edita, como documentos recuperados.
- Engenharia de contexto: Prática mais ampla de decidir o que entra no contexto de um modelo em cada etapa. A compressão é uma de suas ferramentas, junto com a recuperação e a filtragem.
- Enriquecimento de prompts: Adiciona contexto recuperado ou gerado a um prompt. Os pipelines costumam primeiro enriquecer e depois comprimir o resultado.
Aplicações no mundo real#
- Pipelines de RAG: As passagens recuperadas são comprimidas antes da geração, o que permite incluir mais fontes no orçamento e mantém o modelo concentrado nas frases que respondem à pergunta.
- Históricos de agentes: Agentes de programação e pesquisa resumem seus históricos quando o contexto fica cheio, substituindo resultados antigos de ferramentas e turnos por um resumo, pois a precisão diminui à medida que contextos longos se enchem de conteúdo desatualizado.
- Prompts de poucos exemplos: Listas longas de exemplos resolvidos podem ser bem comprimidas. O controlador de orçamento do LLMLingua primeiro remove demonstrações inteiras, ordenadas por perplexidade, e depois poda tokens individuais, mantendo 85% da instrução e 90% da pergunta nas configurações padrão do artigo.










