Cálculo de memória: 2 × camadas × cabeças × dimensão_cabeça × comprimento_seq × bytes. Otimizações: GQA, MQA, PagedAttention, janela deslizante, quantização do KV cache.
Cada token gerado adiciona uma nova linha de chaves e valores em cada camada de atenção. Para um modelo de 70B com 80 camadas e cabeças GQA, o cache cresce linearmente com o comprimento da sequência. Em contextos longos (100K+ tokens), o KV cache pode facilmente consumir mais memória de GPU que os próprios pesos do modelo. Esse é o verdadeiro gargalo de contexto longo — não a atenção quadrática, mas a memória linear do cache.
GQA (Grouped-Query Attention) e MQA (Multi-Query Attention) reduzem o cache compartilhando cabeças de chave/valor entre múltiplas cabeças de consulta. PagedAttention (vLLM) gerencia cache como memória paginada, eliminando fragmentação. Janelas deslizantes limitam o cache aos últimos N tokens. Quantização do KV cache para FP8 ou INT4 corta memória pela metade ou mais com perda mínima de qualidade.