एआई की मूल बातें
आपका केवी कैश को बिट समस्या नहीं है, इसकी एक ज्यामिति समस्या है

एक ही 2-बिट सटीकता पर, एक निर्णय जो अक्ष को क्वांटाइज़ करने के लिए स्विंग करता है, एक बेंचमार्क स्कोर को 2.88 से 63.53 तक बदलता है। कुंजियों और मूल्यों को विपरीत उपचार की आवश्यकता होती है — और कारण ध्यान समीकरण में है, न कि हार्डवेयर में।
ल्लामा-2-13बी लें। अपने कुंजी-मूल्य कैश को 32 के क्वांटाइजेशन समूह आकार में दो बिट्स में समूहित करें, जबकि बाकी सब कुछ अपनी जगह पर छोड़ दें — समान मॉडल, समान बिट बजट, समान समूह आकार, समान बेंचमार्क।
एकल कार्यान्वयन निर्णय के आधार पर, CoQA सटीकता परिणाम 2.88 या 63.53 में होता है। पूर्ण सटीकता का उपयोग करने वाला स्कोर 66.37 है।
निर्णय यह नहीं है कि कितने कुल बिट्स का उपयोग किया जाता है। प्रश्न यह है कि आप प्रत्येक स्केल फैक्टर की गणना करते समय किस अक्ष को समूह करने के लिए चुनते हैं? जब आप चैनल को अपने समूहन आयाम (कुंजी) के रूप में और टोकन को अपने समूहन आयाम (मूल्य) के रूप में उपयोग करने का निर्णय लेते हैं, तो आप पूर्ण सटीकता प्रदर्शन से चार बिंदुओं के भीतर समाप्त होते हैं। यदि आप इनमें से किसी एक विकल्प को फ्लिप करते हैं, तो आप गुणवत्ता में नुकसान का अनुभव करते हैं। यदि आप इनमें से दोनों विकल्पों को फ्लिप करते हैं, तो मॉडल काम करना बंद कर देता है।

एक ही 2 बिट्स को एक ही कैश पर खर्च करने के चार तरीके। ल्लामा-2-13बी पर किवी एब्लेशन से परिणाम।
क्वांटाइजेशन आमतौर पर एक ही डायल के रूप में सोचा जाता है: 8 बिट, 4 बिट, 2 बिट, जिसमें सटीकता की चिकनी लागत जुड़ी होती है। केवी कैश के अंदर, यह ऐसा नहीं है। यह समन्वय प्रणाली चुनने जैसा है, और विभिन्न प्रणाली कुंजियों और मूल्यों पर लागू होती हैं। यह टुकड़ा बताता है कि क्यों। संक्षेप में, क्वांटाइजेशन त्रुटि समूहों के भीतर मूल्यों की सीमा पर निर्भर करती है; कुंजियों और मूल्यों में बहुत अलग संरचना होती है; और लोग अक्सर इसे गलत समझते हैं क्योंकि आप मूल्य वितरण से सही अक्ष को नहीं निकाल सकते हैं। आपको यह देखना होगा कि त्रुटि कैसे बदलती है जब ध्यान इसे खपत करता है। यह मध्यवर्ती सक्रियण को संपीड़ित करने के लिए एक सामान्य सिद्धांत देता है और पुनर्निर्माण त्रुटि को गुणवत्ता के प्रॉक्सी के रूप में संदेह करने का एक अच्छा कारण है।
केवी कैश क्यों यहाँ काटता है
पीढ़ी चरण के दौरान, एक ट्रांसफॉर्मर उन सभी कुंजी और मूल्य प्रोजेक्शन (केवी) डेटा को संग्रहीत करता है जो इसने पहले से संसाधित किया है, ताकि यह डेटा फिर से गणना न करे। यह कैश संदर्भ लंबाई और बैच आकार के साथ रैखिक रूप से बढ़ता है। अंततः, यह कैश मॉडल से बड़ा हो जाएगा।
यह वृद्धि मॉडल के विभिन्न हिस्सों की मेमोरी खपत को देखते समय आसानी से पहचानी जा सकती है। एलएलएएमए-7बी के केवीक्यूएंट विश्लेषण में, वजन लगभग 98 प्रतिशत मेमोरी के लिए जिम्मेदार होते हैं जब क्रम लंबाई 512 होती है, जबकि सक्रियण 2 प्रतिशत पर होते हैं। 128के संदर्भ में, अनुपात 16 प्रतिशत वजन और 84 प्रतिशत केवी कैश में बदल जाता है। जब हम किवी लेखकों द्वारा उद्धृत ओपीटी-175बी के विश्लेषण को देखते हैं, तो वे समान परिणाम पाते हैं। विशेष रूप से, 512 के बैच आकार के साथ 512-टोकन प्रॉम्प्ट पर, केवी कैश 1.2टीबी तक पहुंच जाता है — मॉडल वजन के कई गुना।
हालांकि, क्षमता यहाँ केवल आधी समस्या है। जीपीयू को प्रत्येक टोकन को उत्पन्न करने के लिए डिवाइस मेमोरी से पूरे केवी कैश को पढ़ना होगा। इसका मतलब है कि जब जीपीयू केवी कैश को पढ़ रहा होता है, तो कंप्यूट कोर निष्क्रिय रहते हैं। जैसे ही कैश के समग्र आकार को कम किया जाता है, यह उपलब्ध प्रसंस्करण हेडरूम को बढ़ाता है और डेटा हस्तांतरण के लिए प्रतीक्षा करने में बिताए गए समय को कम करता है।
क्वांटाइजेशन त्रुटि वास्तव में क्या बनाई गई है
सामान्य पूर्णांक क्वांटाइजेशन गणितीय रूप से सीधा है। एक संख्या समूह के लिए, आप सबसे छोटी संख्या को शून्य बिंदु के रूप में रिकॉर्ड करते हैं और फिर समूह की सीमा को प्रतिनिधित्व करने योग्य स्तरों की संख्या से विभाजित करके एक चरण आकार प्राप्त करते हैं। आप फिर प्रत्येक तत्व को निकटतम चरण में गोल करते हैं। दो तुरंत परिणाम होते हैं। पहला, प्रति तत्व त्रुटि आधा चरण से बंधी है। दूसरा, चरण आकार समूह की सीमा है जो 2^n – 1 से विभाजित है। 2 बिट्स पर, आपके पास केवल 4 स्तर हैं जो जो भी फैलाव है उसे कवर करने के लिए। इसलिए, एक तत्व जो अपने पड़ोसियों की तुलना में सौ गुना बड़ा है, खराब प्रदर्शन नहीं करता है। यह अपने सभी पड़ोसियों के लिए चरण आकार को फुलाता है, और वे सभी एक साथ मोटे हो जाते हैं। समूह नुकसान की इकाई है। अक्ष चुनने का अर्थ है यह तय करना कि कौन से तत्व साथ पीड़ित होंगे। इस प्रश्न को अलग तरह से फ्रेम करने के लिए, यह अब “मैं कितने बिट्स को छोड़ सकता हूँ?” नहीं है, बल्कि “अति मूल्य कहाँ हैं और क्या मैं उन्हें अलग कर सकता हूँ?” है।
कुंजियाँ: आउटलियर्स निश्चित चैनलों में रहते हैं
बड़े भाषा मॉडल में असामान्य रूप से बड़े सक्रियण होते हैं जो अधिकांश सक्रियणों की तुलना में बहुत बड़े होते हैं। सुन और उनके सहयोगियों ने विभिन्न मॉडल परिवारों में इन बहुत बड़े सक्रियणों को सूचीबद्ध किया है: मिक्सट्रल 8×7बी में, सबसे बड़ा परिमाण 7000 के पास है, जबकि विशेषता परिमाण का मध्य मान 0.3 के आसपास है — लगभग चार आदेश अलग। वे बहुत दुर्लभ हैं; वे दुर्लभ रूप से बदलते हैं जो इनपुट के साथ बदलते हैं, और वे आकस्मिक नहीं हैं। वे अंतर्निहित पूर्वाग्रह के रूप में कार्य करते हैं, और वे ध्यान को कुछ टोकन पर केंद्रित करते हैं: ध्यान सिंक व्यवहार। कुंजी कैश में, यह संरचना बहुत स्पष्ट है: विशिष्ट चैनल लगातार प्रत्येक टोकन क्रम में बहुत बड़े परिमाण ले जाते हैं। टोकन के साथ समूह, और प्रत्येक समूह में उन आउटलियर चैनल होते हैं, इसलिए प्रत्येक समूह का चरण आकार आउटलियर द्वारा निर्धारित किया जाता है, और सभी सामान्य चैनल इसके लिए भुगतान करते हैं। चैनल के साथ समूह, और आउटलियर चैनल अपने स्वयं के समूह बनाते हैं। उनकी आंतरिक सीमा बड़ी लेकिन स्व-निहित है; सामान्य चैनलों को अकेला छोड़ दिया जाता है। परिणाम मेल खाते हैं। एलामा-2-13बी पर किवी द्वारा रिपोर्ट किए गए प्रति-टोकन समूहन के तहत कुंजी पुनर्निर्माण त्रुटि 13.67 के खिलाफ प्रति-चैनल 4.55 है। — और अधिक महत्वपूर्ण रूप से, ध्यान स्कोर त्रुटि 47.00 के खिलाफ 9.60। प्रति-टोकन क्वांटाइजेशन कुंजी पांच गुना स्कोर त्रुटि पैदा करता है। स्कोर कुंजियों के लिए अर्थपूर्ण मेट्रिक्स से सहमत हैं; चैनल क्वांटाइजेशन दोनों मोर्चों पर उत्कृष्ट है।
मूल्य: जहां सहज ज्ञान टूट जाता है
मूल्य कैश चैनल-आउटलियर पैटर्न नहीं दिखाता है। यह काफी सपाट लगता है। अपने आप में, रेंज तर्क से, हम उम्मीद करेंगे कि या तो अक्ष समान गुणवत्ता का संपीड़न पैदा करेगा। वे नहीं करते हैं।
और यहाँ पकड़ है: यदि आप 2.80 और 2.88 परिणामों (कुंजी प्रबंधन के कार्यान्वयन) की परवाह किए बिना, प्रति-चैनल मूल्यों को संपीड़ित करते हैं, तो मॉडल ढह जाता है।
और यहाँ पकड़ है: यदि आप मूल टेंसर के लिए कच्ची पुनर्निर्माण त्रुटि का उपयोग करके इस नुकसान को मापते हैं जिसके लिए प्रत्येक मूल्य संपीड़ित किया गया था, तो प्रति-चैनल मूल्य क्वांटाइजेशन वास्तव में 3.73 के खिलाफ 4.57 पर थोड़ा बेहतर दिखता है। यदि आप संपीड़न को स्पष्ट तरीके से मान्य करते हैं, तो आप उस कॉन्फ़िगरेशन को चुनेंगे जो मॉडल को नष्ट कर देता है।
एलामा-2-13बी पर मूल्य कैश क्वांटाइजेशन त्रुटि, दो तरह से मापी गई। संग्रहीत-टेंसर मेट्रिक और उपभोगित-आउटपुट मेट्रिक एक क्रम से अधिक असहमत हैं।
संकल्प यह है कि मूल्य कैश को सीधे नहीं पढ़ा जाता है। यह एक मैट्रिक्स गुणा द्वारा खपत की जाती है: ध्यान आउटपुट वजनित औसत है मूल्य वेक्टरों के साथ टोकन भर में, सॉफ्टमैक्स ध्यान स्कोर के रूप में वजन के साथ। इसके कारण, प्रासंगिक त्रुटि यह है जो इस प्रक्रिया के दौरान पेश की जाती है और न ही खुद टेंसर में। ध्यान आउटपुट के संदर्भ में, क्रम पूरी तरह से उलटा हो गया था। किवी द्वारा रिपोर्ट की गई प्रति-टोकन मूल्य वेक्टर क्वांटाइजेशन के कारण ध्यान आउटपुट के लिए सापेक्ष त्रुटि 3.55 थी, प्रति-चैनल क्वांटाइजेशन के लिए 49.89 के खिलाफ — जो दिखाई देने वाले बेहतर विकल्प के लिए प्रति-चैनल क्वांटाइजेशन के लिए चौदह गुना अधिक था।
व्याख्या ध्यान स्पार्सिटी है, जिसे उन्होंने 84.3 प्रतिशत के रूप में मापा। अधिकांश जानकारी जो आउटपुट में निहित है, कुछ टोकनों के लिए जिम्मेदार है। प्रति-टोकन क्वांटाइजेशन प्रत्येक टोकन की त्रुटि को उस टोकन तक सीमित करता है, इसलिए गैर-महत्वपूर्ण टोकनों पर त्रुटियां लगभग-शून्य ध्यान वजन द्वारा गुणा की जाती हैं और प्रभावी रूप से गायब हो जाती हैं। प्रति-चैनल क्वांटाइजेशन प्रत्येक टोकन की त्रुटि को एक साझा चैनल स्केल में फैलाता है, इसलिए बुरी तरह से प्रतिनिधित्व टोकन महत्वपूर्ण लोगों के प्रतिनिधित्व को दूषित करते हैं। जो स्पार्सिटी ध्यान को कुशल बनाती है वही संपत्ति प्रति-टोकन क्वांटाइजेशन को सुरक्षित बनाती है।
स्थानांतरण योग्य सबक अधिक व्यापक है: मापें कि कैश को कहां खपत की जा रही है, न कि जहां यह संग्रहीत की जा रही है। ध्यान यह मान लेता है कि टेंसर के प्रत्येक घटक में अंतिम आउटपुट में योगदान देने में समान वजन है। कोई भी डाउनस्ट्रीम ऑपरेशन जो अपने इनपुट को भारित, गेट या स्पार्सिफाई करता है, वह धारणा को तोड़ता है। पुनर्प्राप्ति प्रणालियों में मेरे पिछले लेख के पाठकों को यह परिणाम पहले वर्णित विफलताओं के समान होंगे: आसानी से गणना की जाने वाली मेट्रिक्स जो कुछ और पर रिपोर्ट करती हैं।
रोटरी एम्बेडिंग कुंजियों को जटिल बनाती हैं
रोटरी पोज़िशन एम्बेडिंग (RoPE) का उपयोग करने में कुछ मुद्दे हैं। RoPE जोड़े के चैनलों को प्रत्येक टोकन की सापेक्ष स्थिति के आधार पर घुमाता है। यह मिश्रण आंशिक रूप से उस निश्चित-चैनल संरचना को भंग कर देता है जिसने प्रति-चैनल कुंजी क्वांटाइजेशन को पहले स्थान पर काम करने दिया — एक आउटलियर चैनल को अपने पड़ोसियों में घुमाया जाता है, और पड़ोसी सीमा विरासत में लेते हैं। किवीक्यूएंट का उत्तर क्रम है: रोटेशन लागू होने से पहले कुंजियों को क्वांटाइज़ करें, और डीक्वांटाइजेशन के बाद RoPE लागू करें। प्रति-चैनल कुंजी क्वांटाइजेशन, गैर-सर्वसमान डेटाटाइप, और एक छोटे से आउटलियर को अलग करने के साथ, यह उन्हें 3 बिट्स पर 0.1 पर्प्लेक्सिटी डिग्रेडेशन से नीचे प्राप्त करने में मदद करता है, और एलएलएएमए-7बी को 1 मिलियन टोकन के संदर्भ में एक एकल ए100-80जीबी पर परोसने की अनुमति देता है।
यह भी महत्वपूर्ण है कि रोटरी एम्बेडिंग के प्रभाव के स्तर को समझें। रोटेटकेवी के लेखकों ने रिपोर्ट की कि रोटरी एम्बेडिंग जोड़ने पर क्वांटाइजेशन त्रुटि में 145% की वृद्धि हुई, और ध्यान दिया कि आउटलियर चैनल ध्यान सिरों में भिन्न होते हैं — जो यह बताता है कि हर जगह एक साझा रोटेशन मैट्रिक्स लागू करना पर्याप्त नहीं है, और सिर-आधारित रोटेशन बेहतर करते हैं।
सिस्टम टैक्स, और यह विवरण क्यों नहीं है
प्रति-टोकन क्वांटाइजेशन डीकोडिंग के लिए उपयुक्त है। प्रत्येक टोकन आता है; आप इसे क्वांटाइज़ करते हैं, इसे क्रम में जोड़ते हैं (टोकन आयाम के साथ), कुछ और नहीं चलता है।
हालांकि, प्रति-चैनल क्वांटाइजेशन फिट नहीं है। चूंकि एक चैनल की सांख्यिकी टोकन को शामिल करती है जो अभी तक उत्पन्न नहीं हुए हैं, आप एक टोकन के आने पर एक स्केल फैक्टर की गणना नहीं कर सकते। किवी का काम-around है कि हाल के टोकनों को — 128 तक — पूर्ण सटीकता में एक अवशेष बफर में रखें, और एक बार पर्याप्त जमा हो जाने पर समूह में क्वांटाइज़ करें।
जैसा कि यह निकलता है, अवशेष बफर लोड-वहन हो जाता है, न कि केवल एक आकस्मिक चीज़। जीएसएम8के के साथ एलामा-2-7बी पर, पूर्ण सटीकता स्कोर 13.50 है। पूरी तरह से 2 बिट्स में क्वांटाइज़ किया गया, सही अक्ष के साथ, यह 5.76 स्कोर करता है। उन्हीं अक्षों और उन्हीं बिट्स के साथ, प्लस हाल ही में उत्पन्न टोकन का अवशेष बफर पूर्ण सटीकता में 12.74 स्कोर करता है। हाल ही में उत्पन्न टोकन का एक स्लाइडिंग विंडो पूर्ण सटीकता में होने पर कठिन बहु-चरण समस्याओं पर जो कुछ खो गया था उसे बहुत कुछ पुनर्प्राप्त करेगा — जो समझ में आता है अगर हम विचार करते हैं कि कौन से टोकन एक गणित की श्रृंखला द्वारा ध्यान केंद्रित किए गए थे।
सब कुछ सही से करने से एक महत्वपूर्ण लाभ होता है — जैसा कि किवी रिपोर्ट करता है, एलामा-2-7बी के लिए 2.6 गुना कम शिखर मेमोरी उपयोग, जो बैच के आकार को 4 गुना बड़ा करने की अनुमति देता है, साथ ही साथ 2.35 से 3.47 गुना बेहतर थ्रूपुट एक वास्तविक दुनिया के सेवा कार्य पर।
इसके साथ क्या करना है
- कभी भी दोनों के लिए एक क्वांटाइज़र का उपयोग न करें।कुंजियों (प्रति-चैनल) और मूल्यों (प्रति-टोकन) के लिए अलग क्वांटाइज़र का उपयोग करें। एक पाइपलाइन जो एक ही क्वांटाइज़र को “केवी कैश” पर लागू करती है, शायद पहले से ही छोटी संख्या में बिट्स का उपयोग करके संभावित गुणवत्ता का अधिकांश हिस्सा त्याग चुकी है।
- रोटरी एम्बेडिंग से पहले कुंजियों को क्वांटाइज़ करें।यह सही या गलत का मामला है, न कि पसंद का।
- हाल ही में उत्पन्न टोकन की पूर्ण सटीकता वाली एक खिड़की संग्रहीत करें।हालांकि ऐसी खिड़की संग्रहीत करना कैश की तुलना में बहुत कम मेमोरी लेता है, यह क्षेत्र ही कठिन कार्यों के लिए बहुत सारी सटीकता पैदा करता है।
- पुनर्निर्माण त्रुटि पर मान्य न करें।हमेशा ध्यान आउटपुट या अंतिम कार्य प्रदर्शन पर आधारित मान्य करें। संग्रहण मेट्रिक न केवल शोर है — मूल्यों के लिए यह गलत दिशा में इंगित करता है।
- छोटे-संदर्भ बहु-विकल्प बेंचमार्क पर मान्य न करें।किवी लेखक जानबूझकर इस मूल्यांकन के लिए बंद-सिर वाले कार्यों जैसे एमएमएलयू से बचते हैं, क्योंकि एक डिकोडिंग चरण जो आउटपुट लॉगिट को पढ़ता है कैश का बहुत कम अभ्यास करता है। कोई भी मूल्यांकन जो समय के साथ कैश नहीं बनाता है और फिर इसका उपयोग नहीं करता है, अपने सिस्टम डिज़ाइन में निहित विफलताओं का अवलोकन करने में सक्षम नहीं होगा।
काम कहां जा रहा है
हालांकि ज्यामितीय समस्या की प्रकृति के बारे में अभी भी कुछ काम करना बाकी है, कई शोधकर्ता आउटलियर चैनलों के वितरण के तरीकों का अध्ययन करना जारी रखते हैं जो विभिन्न ट्रांसफॉर्मर सिरों में होते हैं, और हार्डवेयर सीमाओं को कैसे प्रभावित करते हैं जो कौन से समूह सबसे सस्ते हैं: इनरक्यू चैनल-वार कुंजी सामान्यीकरण को प्रीफिल के दौरान कुंजी और प्रश्न वजन में मोड़ देता है। इसलिए, रनटाइम पर कोई अतिरिक्त ओवरहेड नहीं है। इसके अलावा, इनरक्यू हाल ही में उत्पन्न टोकन और ध्यान सिंक टोकन दोनों के लिए उच्च सटीकता वाली खिड़कियां संग्रहीत करता है। ऐसा करके, इनरक्यू सिंक चैनल में आउटलियर को पड़ोसी चैनलों को दूषित करने के अवसर को समाप्त करता है।
दूसरों का प्रस्ताव है कि हमें पूरे कैश को संग्रहीत करने के बजाय, हमें केवल इतनी जानकारी संग्रहीत करनी चाहिए कि हम मांग पर कुंजी और/या मूल्य(ों) को पुनः सामग्री कर सकें। एक छोटे से कैश्ड प्रतिनिधित्व से।
अंत में, यह याद रखना महत्वपूर्ण है कि सटीकता मात्र एकमात्र पैरामीटर नहीं है जिसे क्वांटाइजेशन प्रभावित करता है। हाल ही में प्रकाशित शोध ने केवी कैश को क्वांटाइज़ करने से संरेखण ह्रास का परिणाम दिखाया। इसके अलावा, इस शोध ने संरेखण ह्रास को भी दस्तावेज़ किया जो उत्पादन वीएलएलएम सर्विंग वातावरण में एफपी8 कैश के साथ होता है, जो एक प्रशिक्षण-मुक्त पुनर्प्राप्ति प्रोटोकॉल के साथ होता है जो 97% तक की संरेखण हानि को पुनर्प्राप्त करता है। जैसे कि एक कॉन्फ़िगरेशन बेंचमार्क परिणामों को बनाए रखने में सक्षम हो सकता है, इसका मतलब यह नहीं है कि यह सभी अन्य प्रासंगिक पैरामीटरों को बनाए रखता है जिसकी आप परवाह करते हैं।
सामान्य सिद्धांत
क्वांटाइजेशन की अवधारणा को “सटीकता बजट” के रूप में फ्रेम किया गया है: मैं कितने बिट्स को त्याग सकता हूँ? केवी कैश दिखाता है कि अधिक उपयोगी प्रश्न संरचनात्मक है। सटीकता समूहों में आवंटित की जाती है; समूह नुकसान की इकाई है; और आप जिस अक्ष के साथ समूह बनाते हैं वह तय करता है कि कौन से तत्व एक ही भाग्य साझा करते हैं। सही अक्ष वह है जिस पर आपका टेंसर खपत किया जा रहा है, अर्थात् आप अपने टेंसर का उपयोग कैसे कर रहे हैं और न कि यह मेमोरी में संग्रहीत कैसे दिखता है। कुंजियों का उपयोग डॉट-उत्पाद गणना के माध्यम से क्वेरी के खिलाफ किया जाता है। एक दूषित चैनल सभी स्कोर को जहर देता है। मूल्यों का उपयोग एक स्पार्स-वेटेड-अवरेज गणना के माध्यम से टोकन भर में किया जाता है। इसलिए, एक दूषित टोकन को शून्य के करीब ध्यान वजन द्वारा वजन दिया जाता है।
दो टेंसर जो समान आयामों के होते हैं और दो लगातार परतों द्वारा उत्पन्न होते हैं, उन्हें अलग तरह से माना जाता है। यह पूछना उचित है कि जब आप किसी सक्रियण को संपीड़ित करने की योजना बनाते हैं: कौन सी ऑपरेशन इसे अनुबंधित करती है, और क्या मेरा समूह इसका सम्मान करता है? इसलिए, एक दूषित टोकन को शून्य के करीब ध्यान वजन द्वारा वजन दिया जाता है। दो टेंसर जो समान आयामों के होते हैं और दो लगातार परतों द्वारा उत्पन्न होते हैं, उन्हें अलग तरह से माना जाता है। इसलिए, एक दूषित टोकन को शून्य के करीब ध्यान वजन द्वारा वजन दिया जाता है।












