Cache de contexto em IA: o que reutiliza e o que não significa «lembrar»
01

Definição numa frase

Reutilización de prefijos de entrada ya procesados para reducir latencia o coste cuando el proveedor y la petición lo permiten.

02

Definição: reutilizar cálculos, não adquirir memórias

A cache de contexto em inteligência artificial é um armazenamento temporário de resultados de processamento que um modelo pode reutilizar para não voltar a calcular determinadas partes de uma entrada. Nos modelos de linguagem, o termo costuma referir-se a dois mecanismos relacionados, mas distintos: a cache KV, que conserva estados internos de atenção durante a geração, e a cache de prefixos ou prompts, que permite aproveitar o processamento de um início idêntico ou coincidente entre pedidos.

O termo «contexto» pode induzir em erro. Aqui, não significa que o sistema tenha incorporado informação no seu conhecimento permanente, nem que se lembre necessariamente de uma conversa depois de esta terminar. Descreve os dados que o modelo processa para responder, juntamente com os resultados intermédios que uma implementação pode manter disponíveis durante algum tempo. A cache reduz trabalho repetido quando se verificam as condições adequadas; por si só, não acrescenta informação nova à resposta.

O mecanismo concreto depende do modelo, do runtime e do serviço. Uma implementação pode disponibilizar métricas de utilização da cache, oferecer controlos para partilhar ou isolar determinados dados, ou não tornar o mecanismo visível para o utilizador. Por isso, «cache de contexto» é uma expressão útil, mas convém especificar que tipo de cache está em causa.

03

Como funciona a cache KV durante a geração

Num modelo autorregressivo, o texto é gerado token a token: em cada passo, é previsto o token seguinte com base nos anteriores. Para calcular a atenção, o modelo produz representações internas conhecidas como chaves (keys) e valores (values). A cache KV conserva esses tensores relativos aos tokens já processados, para que os passos seguintes os possam reutilizar em vez de voltar a calculá-los todos desde o início.

De forma simplificada, o modelo processa o prompt, calcula os estados necessários e guarda as chaves e os valores correspondentes. Depois, ao gerar um novo token, calcula os estados desse novo passo e consulta também os estados armazenados dos tokens anteriores. A cache cresce enquanto a geração prossegue, dentro dos limites de memória e da estratégia de gestão usada pelo sistema.

Esta descrição diz respeito ao funcionamento geral, não a uma estrutura idêntica em todos os modelos. Há variantes de cache e diferentes estratégias para a gerir, manter ou colocar em vários níveis de memória. Num serviço, também podem existir mecanismos para reutilizar blocos entre pedidos; isso não deve ser automaticamente confundido com a cache KV de uma única sequência.

Ciclo simplificado de uma cache KV

  1. 01O modelo processa o prompt e calcula estados internos de atenção.
  2. 02A implementação conserva as chaves e os valores dos tokens processados.
  3. 03Para produzir o token seguinte, o modelo reutiliza esses estados e calcula o novo passo.
  4. 04O processo repete-se enquanto houver geração e recursos disponíveis.
04

Cache de prefixos: reutilização entre pedidos

A cache de prefixos ou prompts aproveita partes iniciais repetidas de diferentes pedidos. Em vez de voltar a calcular o processamento de um prefixo que já está disponível na cache, o sistema pode reutilizar os blocos de estados KV associados a esse prefixo e continuar o cálculo a partir daí. Um servidor pode aplicar esta técnica, por exemplo, quando muitos pedidos partilham instruções iniciais ou um excerto comum de contexto.

A reutilização exige uma correspondência suficiente segundo as regras da implementação. Nos sistemas que organizam a cache em blocos, o prefixo é dividido em blocos e verifica-se se os blocos anteriores coincidem; não basta que dois pedidos tratem do mesmo tema. Alterações no texto, na ordem ou na tokenização podem impedir a correspondência. Outros componentes da configuração também podem ter influência, consoante o sistema.

A cache de prefixos não implica que uma resposta seja guardada para ser simplesmente devolvida. O que se reutiliza é o processamento de uma parte partilhada da entrada; o novo pedido ainda pode incluir conteúdo diferente e exigir cálculos adicionais. A correspondência, a disponibilidade dos blocos e as regras de expiração ou expulsão determinam se há benefício.

Alguns fornecedores descrevem esta função com métricas específicas, como a quantidade de tokens de entrada processados a partir da cache. Essas métricas e as condições de retenção correspondem à implementação documentada: não devem ser extrapoladas para outros fornecedores ou runtimes.

O que é reutilizado e em que situação

MecanismoO que conserva ou reutilizaUtilização típicaPrincipal limite
Cache KV de uma geraçãoChaves e valores de atenção dos tokens já processadosContinuar uma geração token a tokenA sequência e os recursos disponíveis condicionam o tamanho e a utilização
Cache de prefixos ou promptsEstados KV de um prefixo coincidente entre pedidosEvitar recalcular uma parte repetida das entradasSó é útil se forem cumpridas as regras de correspondência e os blocos continuarem disponíveis
Memória persistente de uma aplicaçãoDados que o sistema decide guardar para interações futurasRecuperar preferências ou informação noutra sessãoÉ uma função distinta, com regras de armazenamento próprias
05

Três exemplos práticos

Os exemplos seguintes descrevem utilizações possíveis do mecanismo; não garantem que uma plataforma específica implemente a cache da mesma forma, nem que produza sempre uma melhoria mensurável.

06

Conceitos frequentemente confundidos

Cache e janela de contexto não são sinónimos. A janela de contexto é a quantidade de informação que o modelo consegue considerar numa execução, dentro dos limites definidos pelo modelo ou pelo serviço. A cache é um mecanismo para conservar ou reutilizar cálculos. Por si só, uma cache não aumenta a janela, nem permite incluir mais texto do que o sistema suporta.

Cache e memória persistente também não são a mesma coisa. Uma memória de agente ou de aplicação pode guardar informação para a recuperar em interações posteriores, de acordo com as suas regras de conceção. Uma cache de processamento serve para reutilizar resultados intermédios e pode desaparecer, expirar ou ser expulsa. Embora ambas as funções possam armazenar dados temporariamente, têm finalidades diferentes.

A cache KV e a cache de prefixos também não descrevem exatamente a mesma operação. A primeira costuma referir-se aos estados mantidos durante a geração de uma sequência; a segunda, à possibilidade de aproveitar estados de um prefixo partilhado entre pedidos. Um sistema de cache de prefixos pode basear-se em blocos KV, mas o âmbito entre pedidos acrescenta condições de correspondência, gestão e isolamento.

Por fim, reutilizar processamento não é o mesmo que reutilizar o conteúdo textual como uma resposta preparada. Se dois pedidos partilharem um prefixo, a parte comum poderá aproveitar estados internos já calculados. Isso não implica que o texto de saída esteja guardado, que a nova resposta seja idêntica a uma anterior ou que o modelo tenha adquirido compreensão adicional.

07

Limites, privacidade e operação

A cache não é ilimitada. Os estados KV ocupam memória, e os sistemas de serviço têm de gerir os blocos que mantêm disponíveis. Quando os recursos escasseiam, uma implementação pode expulsar blocos ou aplicar outras estratégias de gestão; uma entrada que antes podia ser reutilizada talvez já não esteja disponível quando chegar outro pedido. A duração efetiva e as regras de expiração não são universais.

A correspondência também é importante. Um prefixo semelhante em termos de significado pode não corresponder para a cache se a sequência de tokens for diferente. Alterações no modelo, no modelo de prompt ou na configuração podem modificar o processamento ou a forma como os prefixos são detetados. Por isso, não se deve presumir que repetir uma instrução garante a reutilização.

A privacidade exige que se consulte a documentação e a configuração do sistema concreto. Convém verificar durante quanto tempo os dados são mantidos na cache, como são isolados os pedidos ou utilizadores, se existem controlos de partição ou invalidação e que métricas são disponibilizadas. A cache partilhada entre pedidos pode trazer questões de isolamento; a documentação de alguns sistemas, por exemplo, alerta para riscos de canal lateral e descreve medidas específicas para os mitigar. Esse aviso não demonstra que todos os serviços tenham o mesmo risco, nem que uma determinada medida esteja disponível em todos eles.

As métricas também precisam de contexto. Um contador de tokens servidos a partir da cache pode descrever a reutilização da entrada, mas, por si só, não permite concluir quanto se poupou em custo ou latência. Esses resultados dependem da API, do hardware, da carga, da configuração e da forma de faturar ou medir. As afirmações quantitativas devem ser atribuídas ao fornecedor e às condições em que foram medidas.

Lista de verificação para avaliar uma cache

  1. 01Identifique se se trata de cache KV por geração, cache de prefixos entre pedidos ou ambas.
  2. 02Verifique que elementos têm de coincidir para que os estados sejam reutilizados e que alterações invalidam a correspondência.
  3. 03Consulte os limites de memória, a expiração, a expulsão e os controlos de isolamento documentados.
  4. 04Distinga as métricas de tokens na cache das medições de latência, custo ou desempenho.
  5. 05Consulte separadamente as políticas de retenção da cache e as políticas de memória conversacional ou armazenamento da aplicação.
08

Conceitos relacionados e critérios práticos

A atenção é o mecanismo do modelo que relaciona partes da sequência; as chaves e os valores são componentes internos utilizados nesse cálculo. Os tokens são as unidades de entrada e saída com que o modelo trabalha. A inferência é o processo de utilizar o modelo para produzir uma saída. A cache KV ajuda a evitar repetir parte do trabalho de atenção, enquanto uma cache de prefixos procura reutilizar o processamento de uma entrada partilhada. Estes conceitos estão relacionados, mas não são intercambiáveis.

Ao ler documentação ou configurar um sistema, comece por perguntar o que é armazenado: estados KV, um prefixo processado, texto conversacional ou outro dado. Depois, procure saber em que âmbito existe a cache — uma geração, uma sessão ou vários pedidos —, quanto tempo dura, o que torna válida uma correspondência e como é gerida a falta de memória. Por fim, distinga os dados medidos pela plataforma das expectativas: reutilizar cálculos pode reduzir trabalho repetido, mas a poupança concreta e a latência dependem das circunstâncias.

Como orientação geral, se o objetivo for continuar uma geração token a token, procure informação sobre cache KV e as respetivas estratégias. Se vários pedidos partilharem um início extenso, consulte a documentação sobre cache de prefixos e as suas regras de correspondência. Se precisar que o sistema recupere dados do utilizador entre sessões, consulte a função de memória persistente ou o armazenamento da aplicação; não presuma que uma cache de contexto o fará.

Critério rápido de decisão

NecessidadeConceito a consultarPergunta prática
Evitar recalcular estados numa geração em cursoCache KVQue estratégia e limites de memória utiliza o runtime?
Reutilizar um prefixo comum entre chamadasCache de prefixos ou promptsO que tem de coincidir e durante quanto tempo ficam os blocos disponíveis?
Recuperar preferências ou dados em sessões futurasMemória persistente ou armazenamento da aplicaçãoO que é guardado, quem pode aceder-lhe e como é eliminado?
09

Exemplos rápidos

10

Conceitos relacionados

11

Fontes consultadas