Accelerating GPU Inference of Large Language Models with Moderately Unstructured Sparse Weight Matrices
यह शोध पत्र एक नवीन तीन-स्तरीय मैट्रिक्स स्टोरेज फॉर्मेट और एक हाइब्रिड SpMM कर्नेल प्रस्तावित करता है जो आधुनिक GPU पर मध्यम रूप से अनस्ट्रक्चर्ड स्पार्स LLM इन्फरेंस को सक्षम करने के लिए स्पार्स और CUDA कोर्स का संयुक्त रूप से लाभ उठाते हैं, जिससे डेंस मैट्रिक्स मल्टीप्लिकेशन पर पहला कर्नेल-स्तरीय स्पीडअप प्राप्त होता है और SpInfer एवं FlashLLM जैसी अत्याधुनिक विधियों से बेहतर प्रदर्शन होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास किताबों का एक विशाल पुस्तकालय (एक लार्ज लैंग्वेज मॉडल) है जो कहानियाँ लिख सकता है, सवालों के जवाब दे सकता है और कोड लिख सकता है। इन किताबों को चलाने के लिए, एक सुपर-फास्ट रोबोट (GPU) को अगले शब्द का पता लगाने के लिए नंबरों के लाखों पन्नों (वेट्स) को पढ़ना पड़ता है। समस्या क्या है? रोबोट पढ़ने में इतना व्यस्त है कि वह थक जाता है और उसे चलाना महंगा पड़ता है।
वैज्ञानिकों ने एक चतुर तरकीब आजमाई: उन्होंने लाइब्रेरी को हल्का बनाने के लिए उबाऊ, महत्वहीन पन्नों को फेंक दिया। इसे "प्रूनिंग" (pruning) कहा जाता है। लेकिन इसमें एक पेंच है: यदि आप बहुत अधिक पन्ने फेंक देते हैं, तो कहानी अजीब हो जाती है और उसका कोई अर्थ नहीं रह जाता। सही संतुलन तब होता है जब आप लगभग आधे पन्ने (50% स्पैरसिटी) रखते हैं।
बड़ी समस्या
आप सोचेंगे कि एक हल्का पुस्तकालय पढ़ना तेज़ होगा, है ना? बिल्कुल नहीं। रोबोट की पढ़ने वाली मशीन (GPU) घने, पूरे पन्नों को बहुत तेज़ी से पढ़ने के लिए बनी है। जब पन्ने बिखरे हुए और टुकड़ों में गायब होते हैं (अनस्ट्रक्चर्ड स्पैरसिटी), तो रोबोट भ्रमित हो जाता है। वह गायब पन्नों को खोजने और टुकड़ों को व्यवस्थित करने में इतना समय बिता देता है कि वह भारी, पूर्ण लाइब्रेरी को पढ़ने की तुलना में वास्तव में धीमा हो जाता है। इस "बिखरे हुए" पढ़ने के मौजूदा टूल्स या तो बहुत धीमे थे या उनके लिए रोबोट को अतिरिक्त गणित करने की आवश्यकता थी जिससे गति का लाभ रद्द हो जाता था।
नया समाधान: एक तीन-परत वाली फाइलिंग प्रणाली
लेखकों ने इस बिखरे हुए पन्नों को कुशलतापूर्वक पढ़ने में मदद करने के लिए एक बिल्कुल नई फाइलिंग प्रणाली बनाई है। वे इसे "थ्री-लेयर" (तीन-परत) फॉर्मेट कहते हैं, और यह एक बहुत ही व्यवस्थित लाइब्रेरियन की तरह काम करता है:
- "स्पार्स-टीसी" लेयर (VIP सेक्शन): लाइब्रेरियन पहले उन पन्नों को उठाता है जो एक निश्चित, पूर्व-अनुमोदित पैटर्न में फिट बैठते हैं (जैसे कि हर चौथे पन्ने में 2 महत्वपूर्ण नोट्स होना)। ये सीधे रोबोट के सबसे तेज़, विशिष्ट पढ़ने वाले हाथों (Sparse Tensor Cores) के पास जाते हैं। खोजने की कोई ज़रूरत नहीं!
- "स्लॉट-फिलिंग" लेयर (पहेली का टुकड़ा): उन अतिरिक्त नोट्स का क्या हुआ जो VIP पैटर्न में फिट नहीं हुए? उन्हें फेंकने या एक अव्यवस्थित सूची बनाने के बजाय, लाइब्रेरियन उन्हें VIP पन्नों द्वारा छोड़ी गई खाली जगहों में ठूँस देता है। बिना एक बड़ी एड्रेस बुक लिखे, यह ट्रैक रखने के लिए कि वे कहाँ गए, वे एक "पैरेलल डिफरेंशियल डिस्टेंस" (Parallel Differential Distance) कोड का उपयोग करते हैं। इसे एक खजाने के नक्शे की तरह समझें जो बस कहता है, "अगला सुराग 3 कदम दाईं ओर है," बजाय इसके कि हर बार पूरा पता लिखा जाए। यह बहुत सारा स्थान बचाता है और इसे जल्दी से डिकोड करना आसान है।
- "रेसिड्यूअल" लेयर (कचरे का दराज): बहुत ही कम मात्रा में नोट्स (1% से भी कम) ऐसे होते हैं जो बहुत अजीब होते हैं और कहीं भी फिट नहीं होते। ये एक मानक, पुराने ढंग के फाइलिंग कैबिनेट (CSR फॉर्मेट) में जाते हैं। चूंकि वे बहुत कम हैं, इसलिए रोबलेट को इस दराज को चेक करने में कोई आपत्ति नहीं होती।
सुपर-पाइपलाइन
असली जादू केवल फाइलिंग सिस्टम नहीं है; यह है कि रोबोट इसे कैसे पढ़ता है। लेखकों ने एक वर्कफ़्लो डिज़ाइन किया जहाँ रोबोट एक ही समय में तीन चीजें करता है:
- वह बड़े मेमोरी शेल्फ (ग्लोबल मेमोरी) से पन्जों का अगला हिस्सा उठाता है।
- वह "3 कदम दाईं ओर" वाले खजाने के नक्शे के सुरागों को डिकोड करता है (मानक कोर्स का उपयोग करके)।
- वह VIP पन्जों के लिए नंबरों की गणना करता है (तेज़ विशिष्ट कोर्स का उपयोग करके)।
इन कार्यों को ओवरलैप करके, रोबोट डेटा की प्रतीक्षा में कभी खाली नहीं बैठता। यह एक शेफ की तरह है जो एक साथ सब्जियां काटता है, बर्तन चलाता है और मेज सजाता है, बजाय इसके कि वह एक समय में एक काम करे।
परिणाम: पहले से तेज़
जब उन्होंने एक आधुनिक, हाई-स्पीड रोबोट (80 GB मेमोरी वाला NVIDIA H100 GPU) पर इसका परीक्षण किया, तो परिणाम प्रभावशाली थे।
- गति: उनका तरीका कर्नल स्तर पर पिछले सबसे अच्छे टूल (SpInfer) की तुलना में 1.64 गुना तेज़ था। यह वास्तव में भारी, पूर्ण लाइब्रेरी को पढ़ने की गति को मात देने वाला पहला तरीका था।
- एंड-टू-एंड: टेक्स्ट जेनरेट करने की पूरी प्रक्रिया के लिए, यह FlashLLM की तुलना में 1.41 गुना तेज़ था।
- मेमोरी: इसने पूर्ण लाइब्रेरी को पढ़ने की तुलना में मेमोरी स्पेस में लगभग 21.4% की बचत भी की।
यह क्या नहीं करता
लेखक सावधानी से यह भी बताते हैं कि यह क्या नहीं है। यह तब सबसे अच्छा काम नहीं करता जब लाइब्रेरी लगभग खाली हो (90%+ उच्च स्पैरसिटी); उन मामलों में, पुराने तरीके अभी भी बेहतर हैं। साथ ही, यह "डिकोड" चरण (जहाँ रोबोट एक बार में एक शब्द लिखता है) के लिए अनुकूलित है, जो सबसे आम कार्य है। जब रोबोट को एक साथ टेक्स्ट का एक बड़ा ब्लॉक पढ़ना होता है (जिसे "प्रीफिल" चरण कहा जाता है), तो यह नया तरीका मानक भारी-रीडिंग टूल्स की तुलना में थोड़ा धीमा हो सकता है, लेकिन यह एक विशिष्ट परिदृश्य है जिसे वे अभी ठीक करने की कोशिश नहीं कर रहे हैं।
संक्षेप में, बिखरे हुए पन्जों को एक स्मार्ट, तीन-परत वाली प्रणाली में व्यवस्थित करके और रोबोट को लगातार व्यस्त रखकर, उन्होंने चैटबॉट्स को कम बुद्धिमान बनाए बिना उन्हें तेज़ और सस्ता चलाने में सक्षम बनाया है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।