DuoAtenção: Inferência Eficiente de LLM de Longo Contexto com Cabeças de Recuperação e Transmissão
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
October 14, 2024
Autores: Guangxuan Xiao, Jiaming Tang, Jingwei Zuo, Junxian Guo, Shang Yang, Haotian Tang, Yao Fu, Song Han
cs.AI
Resumo
A implantação de modelos de linguagem grandes de contexto longo (LLMs) é essencial, mas apresenta desafios significativos de computação e memória. Armazenar em cache todos os estados de Chave e Valor (KV) em todas as cabeças de atenção consome uma quantidade considerável de memória. Os métodos existentes de poda de cache KV danificam as capacidades de contexto longo dos LLMs ou oferecem apenas melhorias de eficiência limitadas. Neste artigo, identificamos que apenas uma fração das cabeças de atenção, também conhecidas como Cabeças de Recuperação, são críticas para processar contextos longos e exigem atenção total em todos os tokens. Em contraste, todas as outras cabeças, que se concentram principalmente em tokens recentes e pontos de atenção - denominadas Cabeças de Fluxo - não requerem atenção total. Com base nessa percepção, introduzimos o DuoAttention, um framework que aplica um cache KV completo apenas às cabeças de recuperação, enquanto utiliza um cache KV leve e de comprimento constante para as cabeças de fluxo, reduzindo tanto a memória de decodificação quanto de pré-preenchimento do LLM e a latência sem comprometer suas capacidades de contexto longo. O DuoAttention utiliza um algoritmo leve baseado em otimização com dados sintéticos para identificar com precisão as cabeças de recuperação. Nosso método reduz significativamente a memória de inferência de contexto longo em até 2,55 vezes para modelos MHA e 1,67 vezes para modelos GQA, acelerando a decodificação em até 2,18 vezes e 1,50 vezes e acelerando o pré-preenchimento em até 1,73 vezes e 1,63 vezes para modelos MHA e GQA, respectivamente, com perda mínima de precisão em comparação com a atenção total. Notavelmente, combinado com a quantização, o DuoAttention permite a decodificação do Llama-3-8B com um comprimento de contexto de 3,3 milhões em uma única GPU A100. O código está disponível em https://github.com/mit-han-lab/duo-attention.
English
Deploying long-context large language models (LLMs) is essential but poses
significant computational and memory challenges. Caching all Key and Value (KV)
states across all attention heads consumes substantial memory. Existing KV
cache pruning methods either damage the long-context capabilities of LLMs or
offer only limited efficiency improvements. In this paper, we identify that
only a fraction of attention heads, a.k.a, Retrieval Heads, are critical for
processing long contexts and require full attention across all tokens. In
contrast, all other heads, which primarily focus on recent tokens and attention
sinks--referred to as Streaming Heads--do not require full attention. Based on
this insight, we introduce DuoAttention, a framework that only applies a full
KV cache to retrieval heads while using a light-weight, constant-length KV
cache for streaming heads, which reduces both LLM's decoding and pre-filling
memory and latency without compromising its long-context abilities.
DuoAttention uses a lightweight, optimization-based algorithm with synthetic
data to identify retrieval heads accurately. Our method significantly reduces
long-context inference memory by up to 2.55x for MHA and 1.67x for GQA models
while speeding up decoding by up to 2.18x and 1.50x and accelerating
pre-filling by up to 1.73x and 1.63x for MHA and GQA models, respectively, with
minimal accuracy loss compared to full attention. Notably, combined with
quantization, DuoAttention enables Llama-3-8B decoding with 3.3 million context
length on a single A100 GPU. Code is provided in
https://github.com/mit-han-lab/duo-attention.Summary
AI-Generated Summary