Calculadora de Tamanho do Cache KV
Entradas
| Camadas | 32 |
|---|---|
| Cabeças de chave/valor | 32 |
| Dimensão da cabeça | 128 |
| Comprimento do contexto | 4.096 |
| Tamanho do lote | 1 |
| Precisão | FP16 / BF16 (2 bytes) |
Calculadora de Tamanho do Cache KV
Estime a memória do cache de chave-valor que um transformer mantém durante a inferência, a partir do número de camadas, das cabeças de chave/valor, da dimensão da cabeça, do comprimento do contexto, do tamanho do lote e dos bytes por elemento.
Entradas
Modelo
Carga de trabalho
Resultados
Insira um valor para ver os resultados.
Tamanho do cache KV
Durante a inferência de um transformer, o modelo presta atenção a cada token visto até então. Para evitar recomputar os vetores de chave e valor de todo o contexto a cada passo de geração, ele os armazena e os reutiliza — o cache de chave-valor. Esse cache costuma ser o maior consumidor de memória do acelerador no serviço de contexto longo, às vezes maior que os próprios pesos do modelo. Esta calculadora estima seu tamanho a partir do número de camadas, do número de cabeças de chave/valor, da dimensão da cabeça, do comprimento do contexto, do tamanho do lote e dos bytes usados por número armazenado.
Por que o cache existe
Gerar texto um token de cada vez significa que cada novo token precisa prestar atenção a todos os tokens anteriores. Sem um cache, cada passo reprocessaria todo o prompt e toda a saída anterior, fazendo o custo da geração crescer com o quadrado do comprimento da sequência. Ao manter as chaves e os valores dos tokens passados, o modelo transforma cada passo em um trabalho proporcional apenas ao novo token. O preço dessa velocidade é memória: um par de vetores — uma chave e um valor — para cada camada, cada cabeça de chave/valor e cada token em contexto.
A fórmula
O cache mantém dois tensores, chaves e valores, então o tamanho em bytes é
Kbytes=2⋅L⋅H⋅d⋅s⋅B⋅eonde é o número de camadas, o número de cabeças de chave/valor, a dimensão da cabeça, o comprimento do contexto em tokens, o tamanho do lote e os bytes por elemento armazenado. Dividir por dá gigabytes. O tamanho cresce linearmente com cada fator, que é a intuição central: dobrar o contexto, o lote ou o número de camadas dobra o cache.
Atenção de consulta agrupada
O número de cabeças de chave/valor é o alvo da atenção de consulta agrupada (GQA). Na atenção multi-cabeça simples, cada cabeça de consulta tem seu próprio par de chave/valor. A GQA permite que um grupo de cabeças de consulta compartilhe uma única cabeça de chave/valor, e a atenção de consulta única compartilha apenas uma em toda a camada. Como o cache escala com , passar de 32 cabeças de chave/valor para 8 reduz o cache a um quarto, enquanto as cabeças de consulta — e a maior parte da qualidade do modelo — permanecem no lugar. A maioria dos grandes modelos recentes vem com GQA exatamente por essa razão.
Exemplo resolvido
Considere um modelo com 32 camadas, 32 cabeças de chave/valor, uma dimensão de cabeça de 128, mantendo 4.096 tokens de contexto, servindo uma única sequência em precisão de 16 bits:
Kbytes=2×32×32×128×4096×1×2=2147483648o que dá cerca de 2,15 GB. Servir quatro sequências dessas ao mesmo tempo quadruplica esse valor, para aproximadamente 8,59 GB. Mudar o cache para precisão de 8 bits reduziria qualquer uma dessas cifras à metade.
Lendo o resultado
Como cada fator multiplica linearmente, o serviço de contexto longo e lote grande os empilha e o cache pode superar os pesos. É por isso que os motores de inferência de produção se apoiam na quantização do cache para menos bytes por elemento, na GQA para reduzir as cabeças de chave/valor e na atenção paginada para empacotar o cache sem fragmentação. O lado de computação do mesmo orçamento de hardware aparece em Calculadora de Memória da Atenção, e a parte dos pesos do modelo em Calculadora de VRAM para Inferência de LLM.
Perguntas frequentes (FAQ)
O que é o cache KV?
Durante a geração autorregressiva, um transformer presta atenção a todos os tokens anteriores. Em vez de recomputar os vetores de chave e valor de todo o contexto a cada passo, ele os armazena e os reutiliza — esse armazenamento é o cache KV.
Ele troca memória por velocidade: sem ele, gerar cada novo token significaria reprocessar todo o prompt e toda a saída anterior. O cache mantém dois tensores, chaves e valores, para cada camada e cada cabeça de chave/valor, com uma entrada por token em contexto.
Como a atenção de consulta agrupada reduz o cache?
A atenção multi-cabeça padrão mantém um par de chave/valor separado para cada cabeça de consulta. A atenção de consulta agrupada (GQA) permite que várias cabeças de consulta compartilhem uma cabeça de chave/valor, e a atenção de consulta única leva isso ao extremo de uma só cabeça de chave/valor compartilhada.
Como o tamanho do cache é proporcional ao número de cabeças de chave/valor, reduzi-las de, digamos, 32 para 8 encolhe o cache em quatro vezes, deixando as cabeças de consulta — e a maior parte da qualidade do modelo — intactas.
Por que o contexto longo é tão custoso em memória?
O cache cresce linearmente com o comprimento do contexto: dobrar o número de tokens em contexto dobra o cache. Ele também cresce linearmente com o tamanho do lote, então servir muitas sequências de contexto longo ao mesmo tempo multiplica os dois fatores.
Em comprimentos de contexto grandes, o cache KV pode exceder a memória ocupada pelos próprios pesos do modelo, e é por isso que o serviço de contexto longo se apoia em técnicas como a quantização do cache, a GQA e a atenção paginada.
Aviso legal
Esta estimativa conta apenas os tensores de chave e valor na precisão indicada e ignora a sobrecarga de serviço, como a fragmentação de memória, os metadados de paginação e as reservas do framework. O uso real em um determinado motor de inferência será um pouco maior.