Cache KV
Descubra como o KV Cache otimiza modelos Transformer, como LLMs. Saiba como essa técnica reduz a latência de inferência e aumenta a eficiência do Ultralytics .
O KV Cache (Key-Value Cache) é uma técnica de otimização crítica usada principalmente em
Modelos de Linguagem de Grande Porte (LLMs)
e outras arquiteturas baseadas em transformadores para acelerar
latência de inferência e reduzir
os custos computacionais. Basicamente, o cache KV armazena as matrizes de chave e valor geradas pelo
mecanismo de atenção para
tokens anteriores em uma sequência. Ao salvar esses cálculos intermediários, o modelo evita recalcular os estados de atenção
para todo o histórico da conversa cada vez que gera um novo token. Esse processo transforma a
fluxo de trabalho de geração de texto de uma
operação de complexidade quadrática para uma linear, tornando as interações em tempo real com chatbots e
agentes de IA .
Mecanismo e benefícios
Num transformador padrão Transformer ,
gerar a próxima palavra requer prestar atenção a todas as palavras anteriores para compreender o contexto. Sem cache,
o modelo precisaria recalcular as relações matemáticas para toda a sequência em cada etapa. O cache KV
resolve isso atuando como um banco de memória.
-
Melhoria na velocidade: Ao recuperar chaves e valores pré-calculados da memória, o sistema acelera drasticamente
o motor de inferência. Isso é essencial para aplicações que exigem baixa latência, como
inferência em tempo real em
bots de atendimento ao cliente.
-
Eficiência de recursos: Embora aumente o uso de memória (VRAM), reduz significativamente a computação
(FLOPs) necessária por token. Essa compensação é frequentemente gerenciada por meio de técnicas como
quantização de modelos ou paginação,
semelhante à forma como os sistemas operativos gerem a RAM.
-
Contexto alargado: A gestão eficiente da cache KV permite que os modelos lidem com uma janela de contexto maior
janela de contexto, permitindo-lhes processar documentos longos ou manter conversas coerentes por períodos prolongados.
Aplicações no Mundo Real
A cache KV é um componente fundamental na implementação da IA generativa moderna, mas os seus princípios também se estendem à
visão computacional (CV).
-
Chatbots generativos: serviços como o
ChatGPT ou
Claude dependem fortemente do cache KV. Quando um utilizador
faz uma pergunta complementar, o modelo não relê todo o histórico de chat do zero. Em vez disso, ele anexa a
nova entrada aos estados em cache da rodada anterior, permitindo respostas quase instantâneas.
-
Compreensão do vídeo: No
compreensão de vídeo , os
modelos processam os quadros sequencialmente. Semelhante aos tokens de texto, as características visuais dos quadros anteriores podem ser armazenadas em cache para ajudar
o modelo track ou reconhecer ações sem reprocessar todo o histórico do vídeo. Isso é particularmente
relevante para o
reconhecimento de ações onde
o contexto temporal é crucial.
Gestão eficiente da memória
À medida que os modelos ficam maiores, o tamanho do cache KV pode se tornar um gargalo, consumindo gigabytes de GPU . Os avanços recentes
concentram-se na otimização desse armazenamento.
-
PagedAttention: Inspirado na memória virtual dos sistemas operativos,
PagedAttention (introduzido pelo vLLM) permite que o cache KV
seja armazenado em blocos de memória não contíguos. Isso reduz a fragmentação e permite tamanhos de lote maiores
durante o serviço do modelo.
-
Quantização da cache KV: para economizar espaço, os desenvolvedores costumam aplicar
quantização de precisão mista ou quantização int8
especificamente aos valores armazenados em cache. Isso reduz o consumo de memória, permitindo que a
dispositivos de IA de ponta com RAM limitada executarem
modelos capazes.
-
Cache de prompts: uma técnica relacionada em que os estados KV de um prompt de sistema estático (por exemplo, «Você
é um assistente de codificação útil») são calculados uma vez e reutilizados em muitas sessões de utilizador diferentes. Esse é um
recurso essencial para otimizar a
engenharia de prompts em grande escala
.
Distinguir conceitos relacionados
É útil diferenciar o KV Cache de outros termos relacionados com cache e otimização:
-
Cache KV vs. Cache instantâneo: O cache KV
refere-se normalmente à memória dinâmica, token por token, utilizada durante um único fluxo de geração. O cache instantâneo
refere-se especificamente ao armazenamento do estado processado de uma instrução de entrada fixa para ser reutilizada em várias
chamadas de inferência independentes.
-
Cache KV vs. Embeddings: Embeddings
são representações vetoriais de dados de entrada (texto ou imagens) que capturam o significado semântico. O cache KV armazena as
ativações (chaves e valores) derivadas desses embeddings nas camadas de atenção, especificamente para
fins de geração de sequências.
-
Cache KV vs. Pesos do modelo: Os pesos do modelo
são os parâmetros estáticos aprendidos da rede neural. O cache KV 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 cache KV seja mais conhecido em NLP, o conceito de manutenção de estado aplica-se a modelos de visão avançados. No
exemplo abaixo, simulamos a ideia de passar o estado (contexto) em um cenário de rastreamento de vídeo usando
Ultralytics . Aqui, o rastreador mantém a identidade dos objetos entre os quadros, conceitualmente semelhante à forma 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()}")
Os programadores que pretendem gerir conjuntos de dados e implementar modelos otimizados podem utilizar a
Ultralytics , que simplifica o pipeline desde a anotação de dados até a implantação eficiente de
implantação de modelos. Para aqueles interessados nos mecanismos mais profundos da atenção, bibliotecas como
PyTorch
fornecem os blocos fundamentais onde esses mecanismos de cache são implementados.