DuoAttention: Эффективный вывод LLM с длинным контекстом с использованием извлечения и потоковых блоков
DuoAttention: Efficient Long-Context LLM Inference with Retrieval and Streaming Heads
October 14, 2024
Авторы: Guangxuan Xiao, Jiaming Tang, Jingwei Zuo, Junxian Guo, Shang Yang, Haotian Tang, Yao Fu, Song Han
cs.AI
Аннотация
Развертывание моделей языка с длинным контекстом (LLM) является важным, но ставит перед собой значительные вычислительные и памятные вызовы. Кэширование всех ключевых и значимых (KV) состояний по всем внимательным головам потребляет значительное количество памяти. Существующие методы обрезки кэша KV либо ущемляют возможности моделей LLM в длинном контексте, либо предлагают лишь ограниченное улучшение эффективности. В данной статье мы выявляем, что только часть внимательных головок, известных как Головы Восстановления, критически важны для обработки длинных контекстов и требуют полного внимания ко всем токенам. В отличие от этого, все остальные головы, которые в основном сосредотачиваются на недавних токенах и точках внимания, называемых Головами Потока, не требуют полного внимания. Основываясь на этом понимании, мы представляем DuoAttention, фреймворк, который применяет полный кэш KV только к головам восстановления, используя легкий, постоянной длины кэш KV для голов потока, что снижает как декодирование и предварительное заполнение памяти LLM, так и задержку без ущерба для его возможностей работы с длинным контекстом. DuoAttention использует легкий, оптимизационный алгоритм на синтетических данных для точного определения голов восстановления. Наш метод значительно уменьшает память вывода в длинном контексте до 2.55 раз для моделей MHA и 1.67 раз для моделей GQA, ускоряя декодирование до 2.18 раз и 1.50 раз, а также ускоряя предварительное заполнение до 1.73 раз и 1.63 раз для моделей MHA и GQA соответственно, с минимальной потерей точности по сравнению с полным вниманием. Особенно стоит отметить, что в сочетании с квантованием DuoAttention позволяет декодировать Llama-3-8B с длиной контекста 3.3 миллиона на одном графическом процессоре A100. Код предоставлен по ссылке 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