KV Cache
Descobre como o KV Cache otimiza modelos Transformer como LLMs. Aprende como esta técnica reduz a latência de inferência e aumenta a eficiência para o Ultralytics YOLO26.
KV Cache (Key-Value Cache) is a critical optimization technique used primarily in Large Language Models (LLMs) and other Transformer-based architectures to accelerate inference latency and reduce computational costs. At its core, the KV cache stores the Key and Value matrices generated by the attention mechanism for previous tokens in a sequence. By saving these intermediate calculations, the model avoids recomputing the attention states for the entire history of the conversation every time it generates a new token. This process transforms the text generation workflow from a quadratic complexity operation into a linear one, making real-time interactions with chatbots and AI agents feasible.
Mecanismo e Benefícios#
Em um modelo Transformer padrão, gerar a próxima palavra exige prestar atenção a todas as palavras anteriores para entender o contexto. Sem o cache, o modelo precisaria recalcular as relações matemáticas para toda a sequência a cada passo. O KV cache resolve isso atuando como um banco de memória.
- Melhoria de Velocidade: Ao recuperar chaves e valores pré-computados da memória, o sistema acelera drasticamente o inference engine. Isso é essencial para aplicações que exigem baixa latência, como real-time inference em bots de atendimento ao cliente.
- Eficiência de Recursos: Embora aumente o uso de memória (VRAM), reduz significativamente o custo computacional (FLOPs) necessário por token. Essa compensação é frequentemente gerenciada por meio de técnicas como model quantization ou paginação, de forma semelhante a como os sistemas operacionais gerenciam a RAM.
- Contexto Estendido: O gerenciamento eficiente do KV cache permite que os modelos lidem com uma context window maior, capacitando-os a processar documentos longos ou manter conversas coerentes por longos períodos.
Aplicações no Mundo Real#
O KV cache é um componente fundamental na implementação de IA generativa moderna, mas seus princípios também se estendem à computer vision (CV).
-
Chatbots Generativos: Serviços como ChatGPT ou Claude dependem fortemente de KV caching. Quando um usuário faz uma pergunta de acompanhamento, o modelo não rele todo o histórico do chat do zero. Em vez disso, ele anexa a nova entrada aos estados em cache do turno anterior, permitindo respostas quase instantâneas.
-
Compreensão de Vídeo: Em tarefas de video understanding, os modelos processam quadros sequencialmente. De forma semelhante aos tokens de texto, recursos visuais de quadros passados podem ser colocados em cache para ajudar o modelo a rastrear objetos ou reconhecer ações sem reprocessar todo o histórico do vídeo. Isso é particularmente relevante para o action recognition, onde o contexto temporal é crucial.
Gerenciamento Eficiente de Memória#
À medida que os modelos crescem, o tamanho do KV cache pode se tornar um gargalo, consumindo gigabytes de memória de GPU. Avanços recentes focam em otimizar esse armazenamento.
- PagedAttention: Inspirado na memória virtual de sistemas operacionais, o PagedAttention (introduzido pelo vLLM) permite que o KV cache seja armazenado em blocos de memória não contíguos. Isso reduz a fragmentação e permite tamanhos de lote maiores durante o model serving.
- Quantização de KV Cache: Para economizar espaço, os desenvolvedores frequentemente aplicam mixed precision ou quantização int8 especificamente aos valores em cache. Isso reduz a pegada de memória, permitindo que dispositivos de edge AI com RAM limitada executem modelos potentes.
- Prompt Caching: Uma técnica relacionada em que os estados de KV de um prompt de sistema estático (por exemplo, "Você é um assistente de programação útil") são computados uma vez e reutilizados em muitas sessões de usuário diferentes. Esse é um recurso central para otimizar fluxos de trabalho de prompt engineering em escala.
Distinguindo Conceitos Relacionados#
É útil diferenciar o KV Cache de outros termos de cache e otimização:
- KV Cache vs. Prompt Caching: O KV Cache geralmente se refere à memória dinâmica token a token usada durante um único fluxo de geração. O prompt caching refere-se especificamente ao armazenamento do estado processado de uma instrução de entrada fixa para ser reutilizado em várias chamadas de inferência independentes.
- KV Cache vs. Embeddings: Embeddings são representações vetoriais de dados de entrada (texto ou imagens) que capturam significado semântico. O KV cache armazena as ativações (chaves e valores) derivadas desses embeddings dentro das camadas de atenção, especificamente com o propósito de geração de sequências.
- KV Cache vs. Model Weights: Os pesos do modelo são os parâmetros estáticos e aprendidos da rede neural. O KV cache consiste em dados dinâmicos e temporários gerados durante a passagem direta de uma sequência de entrada específica.
Exemplo: Contexto em Modelos de Visão#
Embora o KV caching seja mais famoso em PLN, o conceito de manter o estado se aplica a modelos de visão avançados. No exemplo abaixo, simulamos a ideia de passar estado (contexto) em um cenário de rastreamento de vídeo usando Ultralytics YOLO26. Aqui, o rastreador mantém a identidade dos objetos entre os quadros, de forma conceitualmente semelhante a como um cache mantém o contexto entre os tokens.
from ultralytics import YOLO
# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)
# Print the ID of the tracked objects
if results[0].boxes.id is not None:
print(f"Tracked IDs: {results[0].boxes.id.numpy()}")Desenvolvedores que desejam gerenciar datasets e implantar modelos otimizados podem utilizar a Ultralytics Platform, que simplifica o pipeline desde a anotação de dados até o model deployment eficiente. Para aqueles interessados na mecânica mais profunda da atenção, bibliotecas como PyTorch fornecem os blocos fundamentais onde esses mecanismos de cache são implementados.






