Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Prompt Caching

A colocação em cache de prompts reutiliza os estados de chave-valor que um LLM calculou para um prefixo de prompt repetido, permitindo que os pedidos seguintes evitem esse trabalho e custem menos.

A colocação em cache de instruções, também chamada colocação em cache de prefixos, armazena os resultados intermédios calculados por um modelo de linguagem de grande escala (LLM) para o início de uma instrução e reutiliza-os em pedidos posteriores que começam exatamente com o mesmo texto. Muitos pedidos partilham um prefixo longo e estável — como uma instrução de sistema, definições de ferramentas, um conjunto de exemplos, um documento extenso ou o histórico da conversa até ao momento — ao qual se segue uma parte nova e curta. Quando há uma ocorrência na cache, o servidor processa apenas os novos tokens, o que reduz o tempo até ao primeiro token de saída e, nas APIs alojadas, baixa o preço da entrada em cache para uma fração do preço normal.

Como funciona a colocação em cache de instruções#

Um LLM transformador responde em duas fases. Na fase de pré-preenchimento, cada camada calcula um vetor de chave e um vetor de valor para cada token da instrução; durante a descodificação, cada novo token presta atenção a todas essas chaves e valores através do mecanismo de atenção. Dentro de um pedido, a cache KV mantém esses tensores para que cada token gerado não tenha de recalcular a instrução. A colocação em cache de instruções mantém-nos entre pedidos. Como a atenção nestes modelos é causal, as chaves e os valores de um token dependem apenas dos tokens anteriores; assim, duas instruções com o mesmo prefixo têm chaves e valores idênticos para esse prefixo, e a cópia armazenada pode substituir o novo cálculo.

O exemplo seguinte mostra a reutilização com o GPT-2 dos Transformers da Hugging Face. Pré-preenche uma instrução de sistema com 409 tokens uma única vez e, em seguida, responde a duas perguntas executando apenas os respetivos tokens sobre o prefixo em cache; depois, compara o resultado com um novo cálculo completo:

import copy

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")

# A long system prompt shared by every request, followed by different user questions
system = "You answer questions about a camera store. " + "Returns are accepted within 30 days with a receipt. " * 40
questions = [" Question: Can I return a lens?", " Question: Do you ship abroad?"]
prefix_ids = tokenizer(system, return_tensors="pt").input_ids

with torch.no_grad():
    # Prefill the shared prefix once and keep its key-value cache
    prefix_cache = model(prefix_ids).past_key_values
    for question in questions:
        ids = tokenizer(question, return_tensors="pt").input_ids
        # Cache hit: only the question's tokens run through the model
        cached = model(ids, past_key_values=copy.deepcopy(prefix_cache)).logits[0, -1]
        # No cache: the whole prompt is computed from scratch
        full = model(torch.cat([prefix_ids, ids], dim=1)).logits[0, -1]
        same = torch.allclose(cached, full, atol=1e-3)
        print(f"Computed {ids.shape[1]} of {prefix_ids.shape[1] + ids.shape[1]} tokens, same next-token scores: {same}")

Apresenta Computed 8 of 417 tokens, same next-token scores: True e Computed 7 of 416 tokens, same next-token scores: True: cada pedido processou com o modelo menos de 2% dos tokens da instrução e obteve as mesmas pontuações para o token seguinte que o cálculo completo.

Os motores de serviço de modelos de código aberto aplicam este processo automaticamente. O vLLM mantém a cache KV em blocos de tamanho fixo, o esquema de memória da PagedAttention, reutiliza os blocos do prefixo correspondente mais longo para cada novo pedido e remove os blocos menos usados recentemente quando a memória da GPU começa a escassear. A RadixAttention do SGLang mantém os prefixos em cache numa árvore radix, para que os pedidos que partilham qualquer segmento inicial o reutilizem; o artigo sobre o SGLang indica um débito até 6,4 vezes superior ao de outros motores de inferência de última geração. O artigo sobre a Prompt Cache, de In Gim e colegas, apresentado na MLSys 2024, alarga a reutilização para além dos prefixos exatos, abrangendo módulos de instruções declarados, como modelos e documentos, e relata reduções do tempo até ao primeiro token entre 8 vezes na GPU e 60 vezes no CPU.

Colocação em cache de instruções nas APIs de LLM#

As APIs alojadas disponibilizam o mesmo mecanismo mediante um custo. A colocação em cache de instruções da OpenAI está ativada por predefinição nos modelos compatíveis, enquanto a colocação em cache de instruções do Claude da Anthropic é ativada com um campo cache_control, uma vez por pedido ou em até quatro blocos de conteúdo. A Anthropic cobra por uma leitura da cache um décimo ou menos do preço base da entrada e, por uma escrita na cache predefinida de cinco minutos, 1,25 vezes o preço base; cada ocorrência reinicia o prazo de cinco minutos. Ambos os fornecedores só identificam prefixos idênticos: a Anthropic compara as ferramentas, depois a instrução de sistema e, por fim, as mensagens; assim, editar a definição de uma ferramenta invalida tudo o que foi colocado em cache depois dela. O guia da OpenAI recomenda colocar primeiro as instruções estáveis e o material de referência, e deixar os detalhes específicos do utilizador para o fim.

As cargas de trabalho com prefixos longos partilhados são as que mais beneficiam:

  • Agentes de IA: Em cada etapa, reenviam as definições das ferramentas e todo o histórico, que inclui a instrução da etapa anterior, mais a ação mais recente e o respetivo resultado.
  • Chatbots: Cada turno de uma conversa amplia o prompt do turno anterior, por isso o histórico fica em cache até à nova mensagem.
  • Perguntas e respostas sobre documentos: Muitas perguntas sobre um único contrato longo, relatório ou repositório reutilizam o documento processado, e os pipelines de recuperação reutilizam-no sempre que os mesmos trechos são recuperados novamente.
  • Prompts few-shot: Dezenas de exemplos fixos são calculados uma vez e reutilizados para cada entrada.

Os modelos de visão de vocabulário aberto reutilizam o cálculo do prompt de forma semelhante. Ultralytics YOLOE codifica prompts de classe como "empilhadora" com um codificador de texto MobileCLIP uma vez, quando set_classes() é chamado, e armazena os embeddings resultantes no modelo, para que as previsões seguintes ignorem totalmente o codificador de texto; save_prompt_embeddings() grava-os num ficheiro NPZ que uma sessão posterior carrega com load_prompt_embeddings() em vez de executar novamente o codificador.

  • Cache KV: Reutiliza chaves e valores entre os tokens de uma única geração. O cache de prompts reutiliza-os entre pedidos separados.
  • Cache semântico: Armazena respostas completas e devolve uma delas quando uma nova consulta significa o mesmo que uma anterior, ignorando totalmente o modelo. O cache de prompts continua a executar o modelo na parte nova do prompt e gera uma resposta nova.
  • Compressão de prompts: Encurta o próprio prompt, o que é adequado para texto que muda a cada pedido. As duas técnicas combinam bem: a parte fixa do prompt fica em cache e a parte variável é comprimida.
  • Engenharia de prompts: Determina o que o prompt diz. O cache altera apenas a quantidade que o servidor recalcula, e um acerto mantém inalteradas as pontuações dos tokens seguintes, salvo diferenças de arredondamento de vírgula flutuante.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina