Cache de KV em LLMs: Entendimento e Implementação do Zero
O cache de KV é uma técnica para inferência eficiente de LLMs que armazena vetores intermediários de chave e valor para reutilização, evitando cálculos redundantes. O artigo explica o conceito e fornece uma implementação de código do zero em PyTorch, mostrando como modificar um mecanismo de atenção multi-cabeça para armazenar chaves e valores em cache durante a geração de texto.
O cache KV armazena vetores de chave (K) e valor (V) de cálculos de atenção anteriores para reutilizá-los ao gerar tokens subsequentes, o que acelera a inferência ao evitar recálculo. Sem um cache KV, cada etapa de geração recalcula chaves e valores para todos os tokens anteriores; com o cache, apenas os vetores do novo token são calculados e anexados ao cache. O artigo fornece uma implementação de código baseada em um modelo semelhante ao GPT do livro do autor. As principais mudanças são: adicionar buffers de cache (cache_k e cache_v) na classe MultiHeadAttention, modificar o método forward para usar o cache condicionalmente, adicionar um método reset e propagar o sinalizador use_cache por todo o modelo. Na geração, quando use_cache é True, o modelo processa apenas o novo token após o prompt inicial, enquanto sem cache processa a sequência completa a cada etapa. Uma comparação simples de desempenho mostra que o cache KV aproximadamente dobra a velocidade de geração para o exemplo testado.
Fonte: Sebastian Raschka —
original
