Ada-KV: Optimizing KV Cache Eviction by Adaptive Budget Allocation for Efficient LLM Inference
Feng, Lv, Cao et al.
Large Language Models have excelled in various domains but face efficiency challenges due to the growing Key-Value (KV) cache required for long-sequence inference. Recent efforts aim to reduce KV cache size by evicting vast non-critical cache elements during runtime while preserving generation quality. However, these methods typically allocate compression budgets uniformly across all attention heads, ignoring the unique attention patterns of each head. In this paper, we establish a theoretical loss upper bound between pre- and post-eviction attention output, explaining the optimization target of prior cache eviction methods, while guiding the optimization of adaptive budget allocation. Base on this, we propose {\it Ada-KV}, the first head-wise adaptive budget allocation strategy. It offers plug-and-play benefits, enabling seamless integration with prior cache eviction methods. Extensive evaluations on 13 datasets from Ruler and 16 datasets from LongBench, all conducted under both question-aware and question-agnostic scenarios, demonstrate substantial quality improvements over existing methods. Our code is available at https://github.com/FFY0/AdaKV.
academic
Ada-KV: Ottimizzazione dell'Evizione della Cache KV mediante Allocazione Adattiva del Budget per l'Inferenza Efficiente di LLM
I modelli linguistici di grandi dimensioni (LLM) dimostrano eccellenti prestazioni in vari ambiti, ma affrontano sfide di efficienza dovute alla crescente domanda di cache Key-Value (KV) durante l'inferenza su sequenze lunghe. Ricerche recenti riducono la dimensione della cache KV evitando elementi di cache non critici durante l'esecuzione, mantenendo al contempo la qualità della generazione. Tuttavia, questi metodi tipicamente distribuiscono il budget di compressione uniformemente tra tutte le teste di attenzione, ignorando i modelli di attenzione unici di ogni testa. Questo articolo stabilisce un limite superiore teorico della perdita tra gli output di attenzione prima e dopo l'evizione, spiegando gli obiettivi di ottimizzazione dei precedenti metodi di evizione della cache e guidando l'ottimizzazione dell'allocazione adattiva del budget. Sulla base di ciò, gli autori propongono Ada-KV, la prima strategia di allocazione adattiva del budget a livello di testa. Il metodo offre vantaggi plug-and-play, integrandosi perfettamente con i metodi di evizione della cache esistenti.
Con l'aumento continuo della lunghezza delle sequenze elaborate dai modelli linguistici di grandi dimensioni (ad esempio, GPT supporta 128K, Claude3 supporta 200K, Gemini-Pro-1.5 supporta 2M token), la domanda di memoria della cache KV cresce esponenzialmente. Per un LLM con 8B parametri, l'elaborazione di una singola sequenza di 2M token potrebbe richiedere fino a 256GB di cache, compromettendo gravemente l'efficienza della memoria GPU e l'efficienza del tempo di esecuzione computazionale.
I metodi di evizione della cache esistenti si dividono principalmente in due categorie:
Metodi di evizione con finestra scorrevole: Mantengono semplicemente gli elementi di cache iniziali e recenti, ma riducono significativamente la qualità della generazione
Metodi di evizione Top-k: Selezionano elementi di cache critici in base ai pesi di attenzione, ma distribuiscono il budget uniformemente tra tutte le teste di attenzione
Il problema chiave è che i metodi esistenti ignorano le caratteristiche uniche delle diverse teste di attenzione: alcune teste presentano modelli di attenzione concentrati e sparsi, mentre altre hanno distribuzioni di attenzione più diffuse.
Analizzando il modello Llama-3.1-8B-Instruct, gli autori scoprono che la maggior parte delle teste di attenzione conserva quasi tutti i pesi di attenzione utilizzando solo una piccola percentuale di cache (ad esempio, il top 5%), mentre le teste diffuse richiedono percentuali di cache più grandi. Questo modello non uniforme di concentrazione dell'attenzione fornisce una base teorica per l'allocazione adattiva del budget.
Strategia di Allocazione Adattiva del Budget: Propone Ada-KV, la prima strategia di allocazione adattiva del budget a livello di testa, che regola dinamicamente l'allocazione del budget in base ai modelli di attenzione unici di ogni testa di attenzione
Stabilimento del Quadro Teorico: Stabilisce un quadro teorico per l'evizione della cache, definisce la perdita di evizione e ne deriva il limite superiore, spiegando gli obiettivi di ottimizzazione dei metodi esistenti e guidando la progettazione di Ada-KV
Compatibilità Plug-and-Play: Ada-KV possiede caratteristiche plug-and-play, integrandosi perfettamente nei metodi di evizione della cache esistenti, mantenendo l'efficienza computazionale attraverso l'implementazione di kernel CUDA efficienti
Verifica Sperimentale Completa: Valutazione completa su 29 dataset di Ruler e LongBench, mostrando miglioramenti significativi sia negli scenari consapevoli del problema che in quelli indipendenti dal problema
Dato uno strato di auto-attenzione multi-testa, selezionare gli elementi della cache KV da conservare sotto vincoli di budget, minimizzando la perdita tra l'output di attenzione dopo l'evizione e l'output originale.
Input: Budget totale B, pesi di attenzione di ogni testa {A_i}
Output: Budget allocato {B_i^*}
1. Concatenare i pesi di attenzione di tutte le teste: A = Cat({A_i})
2. Selezionare i top B pesi da A: Top-k(A, k=B)
3. Contare il numero di pesi selezionati per ogni testa: {f_i}
4. Impostare il budget allocato: {B_i^* = f_i}
Prospettiva di Ottimizzazione Globale: Visualizza l'allocazione del budget a livello di testa come un problema di ottimizzazione globale, piuttosto che locale
Progettazione Guidata dalla Teoria: Guida la progettazione dell'algoritmo basata su analisi teorica rigorosa
Garanzia di Efficienza Computazionale: Mantiene l'efficienza computazionale attraverso FlashAttention a lunghezza variabile e layout di cache appiattito
Compatibilità GQA: Supporta Group Query Attention, realizzando compressione della cache aggiuntiva
Benchmark Ruler: 13 compiti su sequenze lunghe, principalmente varianti di test Needle-in-a-Haystack, valutazione su lunghezza 16K
Benchmark LongBench: 16 dataset, coprendo QA su documento singolo, QA su più documenti, riassunto, apprendimento con pochi esempi, compiti sintetici e generazione di codice
Utilizzare metriche appropriate in base al tipo di compito: punteggio F1 (compiti QA), Rouge-L (compiti di riassunto), accuratezza (compiti di classificazione), somiglianza di modifica (compiti di codice)
Ada-KV propone per la prima volta una strategia di allocazione adattiva del budget a livello di testa, migliorando significativamente le prestazioni dei metodi di evizione della cache esistenti
L'analisi teorica stabilisce un quadro rigoroso per l'evizione della cache, guidando la progettazione dell'algoritmo
Lo scenario di compressione indipendente dal problema rivela le limitazioni dei metodi esistenti, che dovrebbero ricevere maggiore attenzione
Contributo Teorico Solido: Stabilisce un quadro teorico completo, dalla derivazione del limite superiore della perdita alla logica di progettazione dell'algoritmo è chiara
Metodo Semplice ed Efficace: L'algoritmo è conciso e facile da comprendere, le caratteristiche plug-and-play lo rendono facile da adottare
Valutazione Completa e Sufficiente: Valutazione completa su 29 dataset, includendo lo scenario indipendente dal problema che era stato trascurato
Alto Valore Pratico: È stato adottato da più lavori successivi, dimostrando il valore e l'impatto del metodo
Divario tra Teoria e Pratica: Sebbene teoricamente minimizzi il limite superiore della perdita, non può garantire la minimizzazione della perdita effettiva
Sensibilità ai Iperparametri: La scelta del parametro di protezione di sicurezza α richiede sintonizzazione empirica
Limitazioni di Scalabilità: Attualmente considera solo l'allocazione del budget all'interno di un singolo strato
Limitazioni di Valutazione: La valutazione principale è su modelli di scala media, l'effetto su modelli di grande scala rimane da verificare
L'articolo cita 64 riferimenti correlati, principalmente includenti:
Lavori fondamentali su modelli linguistici di grandi dimensioni (GPT-4, Claude, Gemini e altri)
Metodi di ottimizzazione della cache KV (H2O, SnapKV, Pyramid e altri)
Ottimizzazione del meccanismo di attenzione (FlashAttention, attenzione sparsa e altri)
Benchmark per l'elaborazione di sequenze lunghe (Ruler, LongBench e altri)
Valutazione Complessiva: Questo è un articolo di ricerca di alta qualità che raggiunge un buon equilibrio tra contributo teorico e valore pratico. Il metodo Ada-KV è semplice ed efficace, l'analisi teorica è rigorosa e la verifica sperimentale è completa. L'articolo non solo affronta importanti limitazioni dei metodi esistenti, ma fornisce anche un quadro e direzioni di valore per la ricerca futura.