Sobes.tech
Senior

Como reduzir o tamanho do cache KV (GQA, MQA, janela deslizante)?

sobes.tech IA

Resposta da IA

O cache KV (Key-Value) no contexto de modelos com GQA (Grouped Query Attention), MQA (Multi-Query Attention) e janela deslizante é usado para armazenar chaves e valores de atenção intermediários, a fim de acelerar a geração de texto. Para reduzir o tamanho do cache KV, podem ser aplicadas as seguintes abordagens:

  • Janela deslizante: armazenar apenas os últimos N tokens no cache, em vez de toda a história. Isso limita o tamanho do cache e reduz o consumo de memória.
  • MQA em vez de GQA: MQA usa uma única chave e valor para todas as cabeças de atenção, o que reduz significativamente o tamanho do cache em comparação com GQA, onde cada cabeça tem sua própria chave e valor.
  • Quantização do cache KV: armazenar chaves e valores em formato comprimido, por exemplo, com menor precisão (float16, int8), para diminuir o volume de memória.
  • Remoção de elementos não relevantes: limpar ou comprimir periodicamente o cache, eliminando elementos obsoletos ou menos importantes.

Exemplo de uso da janela deslizante:

window_size = 512  # número de tokens no cache
kv_cache = kv_cache[-window_size:]

Dessa forma, combinando esses métodos, é possível reduzir efetivamente o tamanho do cache KV sem perda significativa na qualidade da geração.