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: कुशल LLM अनुमान के लिए अनुकूली बजट आवंटन द्वारा KV कैश निष्कासन को अनुकूलित करना
बड़े भाषा मॉडल (LLMs) विभिन्न क्षेत्रों में उत्कृष्ट प्रदर्शन करते हैं, लेकिन लंबे अनुक्रम अनुमान में बढ़ती Key-Value (KV) कैश आवश्यकताओं के कारण दक्षता चुनौतियों का सामना करते हैं। हाल के शोध रनटाइम पर गैर-महत्वपूर्ण कैश तत्वों को निष्कासित करके KV कैश आकार को कम करते हैं, जबकि पीढ़ी की गुणवत्ता बनाए रखते हैं। हालांकि, ये विधियां आमतौर पर सभी ध्यान सिर के बीच संपीड़न बजट को समान रूप से वितरित करती हैं, प्रत्येक सिर के अद्वितीय ध्यान पैटर्न को नजरअंदाज करती हैं। यह पेपर निष्कासन से पहले और बाद में ध्यान आउटपुट के बीच सैद्धांतिक हानि की ऊपरी सीमा स्थापित करता है, पिछली कैश निष्कासन विधियों के अनुकूलन उद्देश्यों की व्याख्या करता है, जबकि अनुकूली बजट आवंटन के अनुकूलन को निर्देशित करता है। इसके आधार पर, लेखकों ने Ada-KV प्रस्तावित किया, पहली सिर-स्तरीय अनुकूली बजट आवंटन रणनीति। यह विधि प्लग-एंड-प्ले लाभ प्रदान करती है, जो मौजूदा कैश निष्कासन विधियों के साथ निर्बाध रूप से एकीकृत हो सकती है।
जैसे-जैसे बड़े भाषा मॉडल अनुक्रम लंबाई को संसाधित करते हैं (जैसे GPT 128K का समर्थन करता है, Claude3 200K का समर्थन करता है, Gemini-Pro-1.5 2M टोकन का समर्थन करता है), KV कैश की मेमोरी आवश्यकता तेजी से बढ़ती है। 8B पैरामीटर वाले LLM के लिए, एक एकल 2M टोकन अनुक्रम को संसाधित करने के लिए 256GB तक कैश की आवश्यकता हो सकती है, जो GPU मेमोरी दक्षता और कम्प्यूटेशनल रनटाइम दक्षता को गंभीर रूप से प्रभावित करती है।
मौजूदा कैश निष्कासन विधियां मुख्य रूप से दो श्रेणियों में विभाजित हैं:
स्लाइडिंग विंडो निष्कासन विधियां: सरलता से प्रारंभिक और हाल के कैश तत्वों को बनाए रखते हैं, लेकिन पीढ़ी की गुणवत्ता में काफी कमी लाते हैं
Top-k निष्कासन विधियां: ध्यान वजन के आधार पर महत्वपूर्ण कैश तत्वों का चयन करते हैं, लेकिन सभी ध्यान सिर के बीच बजट को समान रूप से वितरित करते हैं
मुख्य समस्या यह है कि मौजूदा विधियां विभिन्न ध्यान सिर की अद्वितीय विशेषताओं को नजरअंदाज करती हैं: कुछ सिर में विरल ध्यान केंद्रित पैटर्न होते हैं, जबकि अन्य सिर का ध्यान वितरण अधिक बिखरा हुआ होता है।
Llama-3.1-8B-Instruct मॉडल का विश्लेषण करके, लेखकों ने पाया कि अधिकांश ध्यान सिर केवल कैश के एक छोटे अनुपात (जैसे शीर्ष 5%) के साथ लगभग सभी ध्यान वजन को बनाए रख सकते हैं, जबकि बिखरे हुए सिर को अधिक बड़े कैश अनुपात की आवश्यकता होती है। यह असमान ध्यान केंद्रण पैटर्न अनुकूली बजट आवंटन के लिए सैद्धांतिक आधार प्रदान करता है।
अनुकूली बजट आवंटन रणनीति: पहली सिर-स्तरीय अनुकूली बजट आवंटन रणनीति Ada-KV प्रस्तावित करता है, जो प्रत्येक ध्यान सिर के अद्वितीय ध्यान पैटर्न के अनुसार गतिशील रूप से बजट आवंटन को समायोजित कर सकता है
सैद्धांतिक ढांचा स्थापना: कैश निष्कासन के लिए एक सैद्धांतिक ढांचा स्थापित करता है, निष्कासन हानि को परिभाषित करता है और इसकी ऊपरी सीमा प्राप्त करता है, मौजूदा विधियों के अनुकूलन उद्देश्यों की व्याख्या करता है और Ada-KV के डिजाइन को निर्देशित करता है
प्लग-एंड-प्ले संगतता: Ada-KV में प्लग-एंड-प्ले विशेषता है, जो मौजूदा कैश निष्कासन विधियों में निर्बाध रूप से एकीकृत हो सकता है, और कुशल CUDA कर्नेल कार्यान्वयन के माध्यम से कम्प्यूटेशनल दक्षता बनाए रखता है
व्यापक प्रायोगिक सत्यापन: Ruler और LongBench के 29 डेटासेट पर व्यापक मूल्यांकन किया गया है, समस्या-जागरूक और समस्या-अज्ञेय दोनों परिदृश्यों में महत्वपूर्ण सुधार दिखाता है
एक बहु-सिर स्व-ध्यान परत को देखते हुए, बजट बाधा के तहत KV कैश तत्वों को बनाए रखने के लिए चुनें, जिससे निष्कासन के बाद ध्यान आउटपुट और मूल आउटपुट के बीच हानि को कम किया जा सके।
इनपुट: कुल बजट B, प्रत्येक सिर ध्यान वजन {A_i}
आउटपुट: आवंटित बजट {B_i^*}
1. सभी सिर के ध्यान वजन को जोड़ें: A = Cat({A_i})
2. A से शीर्ष B वजन का चयन करें: Top-k(A, k=B)
3. प्रत्येक सिर के लिए चयनित वजन की संख्या गिनें: {f_i}
4. आवंटित बजट सेट करें: {B_i^* = f_i}
कार्य प्रकार के अनुसार संबंधित मेट्रिक्स का उपयोग करें: F1 स्कोर (QA कार्य), Rouge-L (सारांश कार्य), सटीकता (वर्गीकरण कार्य), संपादन समानता (कोड कार्य)
समग्र मूल्यांकन: यह एक उच्च गुणवत्ता का अनुसंधान पेपर है जो सैद्धांतिक योगदान और व्यावहारिक मूल्य के बीच अच्छा संतुलन प्राप्त करता है। Ada-KV विधि सरल लेकिन प्रभावी है, सैद्धांतिक विश्लेषण कठोर है, प्रायोगिक सत्यापन पर्याप्त है। पेपर न केवल मौजूदा विधियों की महत्वपूर्ण सीमाओं को हल करता है, बल्कि भविष्य के अनुसंधान के लिए मूल्यवान ढांचा और दिशा भी प्रदान करता है।