एआई मॉडल और प्लेटफ़ॉर्म
PowerInfer: तेज़ बड़ा भाषा मॉडल उपभोक्ता-ग्रेड जीपीयू के साथ
अपनी असाधारण सामग्री निर्माण क्षमताओं के कारण, व्युत्पन्न बड़े भाषा मॉडल अब एआई क्रांति के सबसे आगे हैं, और उनकी व्युत्पन्न क्षमताओं को बढ़ाने के लिए चल रहे प्रयास हैं। हालांकि, तेजी से प्रगति के बावजूद, इन मॉडलों को महत्वपूर्ण गणनात्मक शक्ति और संसाधनों की आवश्यकता होती है। यह मुख्य रूप से इसलिए है क्योंकि वे सैकड़ों अरबों पैरामीटर से बने होते हैं। इसके अलावा, सुचारु रूप से संचालित करने के लिए, व्युत्पन्न एआई मॉडल हजारों जीपीयू पर निर्भर करते हैं, जिससे महत्वपूर्ण संचालन लागतें होती हैं। उच्च संचालन मांगें एक प्रमुख कारण हैं कि व्युत्पन्न एआई मॉडल अभी तक व्यक्तिगत-ग्रेड उपकरणों पर प्रभावी ढंग से तैनात नहीं हुए हैं।
इस लेख में, हम PowerInfer पर चर्चा करेंगे, एक उच्च गति वाला एलएलएम अनुमान इंजन जो एकल उपभोक्ता-ग्रेड जीपीयू द्वारा संचालित मानक कंप्यूटरों के लिए डिज़ाइन किया गया है। PowerInfer फ्रेमवर्क एलएलएम अनुमान में निहित उच्च स्थानीयता का लाभ उठाने का प्रयास करता है, जो न्यूरॉन सक्रियण के शक्ति-कानून वितरण द्वारा चिह्नित किया जाता है। इसका अर्थ है कि किसी भी समय, ‘गर्म’ न्यूरॉन्स का एक छोटा सा उपसेट लगातार सक्रिय रहता है इनपुट के माध्यम से, जबकि शेष, ‘ठंडे’ न्यूरॉन्स, विशिष्ट इनपुट या आवश्यकताओं के आधार पर सक्रिय होते हैं। यह दृष्टिकोण PowerInfer फ्रेमवर्क को व्युत्पन्न एआई के लिए वांछित आउटपुट उत्पन्न करने के लिए आवश्यक गणनात्मक शक्ति को कम करने में सक्षम बनाता है।
हम PowerInfer फ्रेमवर्क की विस्तार से जांच करेंगे, इसकी विधि का अन्वेषण करेंगे, पाइपलाइन और व्यावहारिक अनुप्रयोग परिणाम। आइए शुरू करें।
PowerInfer: उपभोक्ता-ग्रेड जीपीयू के साथ तेज़ बड़ा भाषा मॉडल
व्युत्पन्न बड़े भाषा मॉडल, जैसे कि ChatGPT और DALL-E, जटिल व्युत्पन्न और प्राकृतिक भाषा प्रसंस्करण कार्यों के लिए जाने जाते हैं। उनकी उच्च गणनात्मक आवश्यकताओं के कारण, इन मॉडलों को आमतौर पर उन्नत जीपीयू के साथ डेटा केंद्रों में तैनात किया जाता है। इतनी अधिक गणनात्मक शक्ति की आवश्यकता उनकी तैनाती को डेटा केंद्रों तक सीमित करती है, जो बड़े भाषा मॉडल को अधिक सुलभ स्थानीय प्लेटफार्मों जैसे व्यक्तिगत कंप्यूटरों पर तैनात करने की आवश्यकता पर प्रकाश डालती है।
बड़े भाषा मॉडल की पहुंच बढ़ाने से अनुमान और सामग्री निर्माण की लागत कम हो सकती है, डेटा गोपनीयता में सुधार हो सकता है, और मॉडल अनुकूलन की अनुमति मिल सकती है। इसके अलावा, जबकि डेटा केंद्र तैनाती उच्च थ्रूपुट को प्राथमिकता देते हैं, स्थानीय एलएलएम तैनाती कम लेटेंसी पर ध्यान केंद्रित कर सकती है क्योंकि छोटे बैच आकार होते हैं।
हालांकि, इन मॉडलों को स्थानीय उपकरणों पर तैनात करना उनकी महत्वपूर्ण मेमोरी आवश्यकताओं के कारण महत्वपूर्ण चुनौतियों का सामना करता है। बड़े भाषा मॉडल, स्व-रिग्रेसिव ट्रांसफॉर्मर के रूप में कार्य करते हुए, टोकन-दर-टोकन पाठ उत्पन्न करते हैं, जिसमें प्रत्येक टोकन को पूरे मॉडल तक पहुंच की आवश्यकता होती है, जिसमें सैकड़ों अरबों पैरामीटर शामिल होते हैं। यह कई उच्च-अंत जीपीयू की आवश्यकता को कम लेटेंसी के साथ आउटपुट उत्पन्न करने के लिए आवश्यक बनाता है। इसके अलावा, स्थानीय तैनाती आमतौर पर अनुरोधों को क्रमिक रूप से संसाधित करती है, जो समानांतर प्रसंस्करण की संभावना को सीमित करती है।
व्युत्पन्न एआई फ्रेमवर्क की जटिल मेमोरी आवश्यकताओं को संबोधित करने के लिए, मौजूदा समाधान मॉडल ऑफलोडिंग और संपीड़न जैसी विधियों का उपयोग करते हैं। जैसे कि ज्ञान संकुचन, छंटनी और स्क्वांटीकरण मॉडल के आकार को कम करते हैं, लेकिन वे अभी भी मानक-ग्रेड जीपीयू के लिए बहुत बड़े हैं। मॉडल ऑफलोडिंग, जो ट्रांसफॉर्मर लेयर के बीच सीपीयू और जीपीयू के बीच मॉडल को विभाजित करता है, सीपीयू और जीपीयू मेमोरी में वितरित परत प्रसंस्करण की अनुमति देता है। हालांकि, यह विधि धीमी पीसीआईई इंटरकनेक्शन और सीपीयू की सीमित गणनात्मक क्षमताओं द्वारा सीमित है, जिससे उच्च अनुमान लेटेंसी होती है।
PowerInfer फ्रेमवर्क का तर्क है कि एलएलएम अनुमान और हार्डवेयर संरचना के बीच मिलान की कमी एलएलएम अनुमान में मेमोरी समस्याओं का प्राथमिक कारण है। आदर्श रूप से, बार-बार एक्सेस की जाने वाली डेटा को उच्च-बैंडविड्थ, सीमित-क्षमता जीपीयू में संग्रहीत किया जाना चाहिए, जबकि कम बार एक्सेस की जाने वाली डेटा को कम-बैंडविड्थ, उच्च-क्षमता सीपीयू में होना चाहिए। हालांकि, प्रत्येक एलएलएम अनुमान पुनरावृत्ति के दौरान पैरामीटर की बड़ी मात्रा जीपीयू के लिए काम करने वाले सेट को बहुत बड़ा बना देती है, जिससे स्थानीयता का अकुशल शोषण होता है।
बड़े भाषा मॉडल में अनुमान प्रक्रिया उच्च स्थानीयता प्रदर्शित करती है, जिसमें प्रत्येक पुनरावृत्ति में एक सीमित संख्या में न्यूरॉन्स सक्रिय होते हैं। PowerInfer फ्रेमवर्क इस स्थानीयता का लाभ उठाने का प्रयास करता है जीपीयू के साथ एक छोटी संख्या में गर्म न्यूरॉन्स का प्रबंधन करता है, जबकि सीपीयू ठंडे न्यूरॉन्स को संभालता है। यह जीपीयू में गर्म न्यूरॉन्स को प्रीलोड करता है और रनटाइम के दौरान सक्रिय न्यूरॉन्स की पहचान करता है। यह दृष्टिकोण महंगी पीसीआईई डेटा ट्रांसफर को कम करता है, जिससे जीपीयू और सीपीयू को स्वतंत्र रूप से अपने निर्दिष्ट न्यूरॉन्स को संसाधित करने की अनुमति मिलती है।
हालांकि, स्थानीय उपकरणों पर एलएलएम तैनात करना चुनौतियों का सामना करता है। ऑनलाइन भविष्यवाणियां, जो सक्रिय न्यूरॉन्स की पहचान करने के लिए महत्वपूर्ण हैं, जीपीयू मेमोरी का काफी हिस्सा खपत करती हैं। PowerInfer फ्रेमवर्क एक अनुकूली विधि का उपयोग करके उच्च सक्रियण विचलन और स्पार्सिटी वाली परतों के लिए छोटे भविष्यवाणियों का निर्माण करता है, सटीकता को बनाए रखते हुए आकार को कम करता है। इसके अलावा, एलएलएम फ्रेमवर्क विशेष स्पार्स ऑपरेटरों की आवश्यकता होती है। PowerInfer फ्रेमवर्क न्यूरॉन-जागरूक स्पार्स ऑपरेटरों का उपयोग करता है जो सीधे जीपीयू और सीपीयू पर न्यूरॉन्स और उनके वजन की गणना करते हैं, जिससे रनटाइम के दौरान घने प्रारूप में रूपांतरण की आवश्यकता समाप्त हो जाती है।
अंत में, सक्रिय न्यूरॉन्स को सीपीयू और जीपीयू के बीच इष्टतम रूप से रखना चुनौतीपूर्ण है। PowerInfer फ्रेमवर्क एक ऑफलाइन चरण का उपयोग करके एक न्यूरॉन प्लेसमेंट नीति बनाता है, जो प्रत्येक न्यूरॉन के एलएलएम अनुमान परिणामों पर प्रभाव को मापता है और इसे एक पूर्णांक रैखिक समस्या के रूप में फ्रेम करता है।
आर्किटेक्चर और विधि
निम्नलिखित आंकड़ा PowerInfer फ्रेमवर्क की वास्तुकला को विस्तार से बताता है, जिसमें पाइपलाइन में ऑफलाइन और ऑनलाइन घटक शामिल हैं।

बड़े भाषा मॉडलों के बीच स्थानीयता गुणों में परिवर्तन के कारण, ऑफलाइन घटक एलएलएम फ्रेमवर्क की सक्रियण स्पार्सिटी को प्रोफाइल करता है, जिससे गर्म और ठंडे न्यूरॉन्स के बीच अंतर करने में मदद मिलती है। ऑफलाइन चरण में, दो प्रकार के न्यूरॉन्स को अनुमान इंजन द्वारा सीपीयू और जीपीयू दोनों में लोड किया जाता है, जिससे रनटाइम के दौरान एलएलएम अनुरोधों को कम लेटेंसी के साथ सेवा मिल सके।
ऑफलाइन चरण : नीति समाधानकर्ता और एलएलएम प्रोफाइलर
ऑफलाइन चरण में, एलएलएम प्रोफाइलर घटक सामान्य डेटासेट से व्युत्पन्न अनुरोधों से अनुमान प्रक्रिया से सक्रियण डेटा एकत्र करता है। पहले चरण में, यह सभी परतों में न्यूरॉन्स की सक्रियण की निगरानी करता है, और फिर नीति समाधानकर्ता घटक का उपयोग करके न्यूरॉन्स को गर्म या ठंडे के रूप में वर्गीकृत करता है। नीति समाधानकर्ता का प्राथमिक उद्देश्य अधिक बार सक्रिय न्यूरॉन्स को जीपीयू परतों में आवंटित करना है, जबकि शेष को सीपीयू परतों में आवंटित करना है। दूसरे चरण में, नीति समाधानकर्ता घटक न्यूरॉन प्रभाव मेट्रिक्स और हार्डवेयर विशिष्टताओं का उपयोग करके परतों के बीच कार्यभार को संतुलित करता है, और पूर्णांक रैखिक प्रोग्रामिंग का उपयोग करके जीपीयू के लिए न्यूरॉन्स के प्रभाव मेट्रिक्स को अधिकतम करता है।
ऑनलाइन चरण : न्यूरॉन जागरूक एलएलएम अनुमान इंजन
एक बार ऑफलाइन चरण सफलतापूर्वक निष्पादित हो जाने के बाद, फ्रेमवर्क ऑनलाइन चरण को निष्पादित करने के लिए आगे बढ़ता है। प्रक्रिया के तीसरे चरण में, ऑनलाइन इंजन जीपीयू और सीपीयू को उनके संबंधित प्रोसेसिंग यूनिटों में असाइन करता है, जो ऑफलाइन नीति समाधानकर्ता के आउटपुट के अनुसार होता है। रनटाइम के दौरान, और चौथे चरण में, ऑनलाइन इंजन जीपीयू-सीपीयू गणना को सीपीयू और जीपीयू पर चलने वाले थ्रेड्स के रूप में सीपीयू और जीपीयू एक्जीक्यूटर बनाकर प्रबंधित करता है। इंजन तब सक्रिय न्यूरॉन्स की भविष्यवाणी करता है और निष्क्रिय न्यूरॉन्स को छोड़ देता है। सक्रिय न्यूरॉन्स को तब जीपीयू में प्रीलोड किया जाता है और सीपीयू द्वारा उनके न्यूरॉन्स के परिणामों की गणना की जाती है और जीपीयू के साथ एकीकृत किया जाता है। ऑनलाइन इंजन जीपीयू और सीपीयू दोनों पर न्यूरॉन-जागरूक स्पार्स ऑपरेटरों का उपयोग करके मैट्रिक्स के भीतर व्यक्तिगत पंक्ति और स्तंभ वेक्टर पर ध्यान केंद्रित करने में सक्षम है।

अनुकूली स्पार्सिटी भविष्यवाणी
PowerInfer फ्रेमवर्क में ऑनलाइन अनुमान इंजन द्वारा गणनात्मक भार को कम करने का प्राथमिक概念 यह है कि यह केवल उन न्यूरॉन्स को संसाधित करता है जिन्हें यह सक्रिय होने की भविष्यवाणी करता है। पारंपरिक रूप से, प्रत्येक ट्रांसफॉर्मर परत में, फ्रेमवर्क एमएलपी और स्व-ध्यान ब्लॉकों में न्यूरॉन्स की सक्रियण की भविष्यवाणी करने के लिए दो अलग-अलग भविष्यवाणियों का उपयोग करता है, जिसके परिणामस्वरूप अनुमान गणना केवल उन न्यूरॉन्स तक सीमित होती है जिन्हें सक्रिय होने की भविष्यवाणी की जाती है। हालांकि, स्थानीय तैनाती के लिए प्रभावी भविष्यवाणियों को डिज़ाइन करना मुश्किल है क्योंकि सीमित संसाधनों के कारण मॉडल के आकार और भविष्यवाणी सटीकता के बीच संतुलन बनाना मुश्किल है। चूंकि इन भविष्यवाणियों को अक्सर सक्रिय न्यूरॉन्स की भविष्यवाणी करने के लिए तैनात किया जाता है, उन्हें जीपीयू में संग्रहीत किया जाना चाहिए ताकि तेजी से एक्सेस की अनुमति मिल सके। हालांकि, फ्रेमवर्क आमतौर पर एक बड़ी संख्या में भविष्यवाणियों को तैनात करता है जो महत्वपूर्ण मेमोरी का उपभोग करते हैं, यहां तक कि एलएलएम पैरामीटर संग्रहीत करने के लिए आवश्यक मेमोरी से भी अधिक।
इसके अलावा, भविष्यवाणियों का आकार आमतौर पर दो कारकों द्वारा निर्धारित किया जाता है: आंतरिक विचलन और एलएलएम परतों की स्पार्सिटी।

इन कारकों के लिए अनुकूलन करने के लिए, PowerInfer फ्रेमवर्क प्रत्येक भविष्यवाणी के लिए एक पुनरावृत्ति प्रशिक्षण विधि का उपयोग करता है, जिसमें एक निश्चित आकार नहीं होता है। प्रशिक्षण विधि के पहले चरण में, मॉडल की स्पार्सिटी प्रोफाइल के आधार पर बेसलाइन मॉडल का आकार स्थापित किया जाता है, और फिर आंतरिक सक्रियण विचलन को ध्यान में रखते हुए आकार को पुनरावृत्ति रूप से समायोजित किया जाता है ताकि सटीकता बनी रहे।
न्यूरॉन प्लेसमेंट और प्रबंधन
जैसा कि पहले उल्लेख किया गया है, जबकि ऑफलाइन नीति समाधानकर्ता घटक न्यूरॉन प्लेसमेंट नीति का निर्धारण कर रहा है, ऑनलाइन अनुमान इंजन घटक मॉडल को जीपीयू और सीपीयू मेमोरी में लोड करता है, जो उत्पन्न नीति के अनुसार है। प्रत्येक परत के लिए, जिसमें एक या एक से अधिक वजन मैट्रिक्स हो सकते हैं, PowerInfer फ्रेमवर्क प्रत्येक न्यूरॉन को सीपीयू या जीपीयू को आवंटित करता है, यह निर्धारित करता है कि क्या न्यूरॉन गर्म-सक्रिय है। सीक्वेंस में खंडित न्यूरॉन्स की गणना को सटीक रूप से सुनिश्चित करना आवश्यक है। इसे संबोधित करने के लिए, PowerInfer फ्रेमवर्क दो न्यूरॉन तालिकाएं उत्पन्न करता है: एक जीपीयू मेमोरी में और एक सीपीयू मेमोरी में, प्रत्येक तालिका व्यक्तिगत न्यूरॉन्स को मैट्रिक्स में उनकी मूल स्थिति से संबंधित करती है।
न्यूरॉन जागरूक ऑपरेटर
बड़े भाषा मॉडल में देखी गई सक्रियण स्पार्सिटी के कारण, निष्क्रिय न्यूरॉन्स और उनके वजन को मैट्रिक्स गुणा ऑपरेशन द्वारा बायपास किया जा सकता है, जिससे स्पार्स ऑपरेटरों के उपयोग की आवश्यकता होती है। स्पार्स ऑपरेटरों का उपयोग करने के बजाय जो कई सीमाओं को प्रस्तुत करते हैं, PowerInfer फ्रेमवर्क न्यूरॉन-जागरूक ऑपरेटरों का उपयोग करता है जो सीधे जीपीयू और सीपीयू पर न्यूरॉन्स और उनके वजन की गणना करते हैं, जिससे रनटाइम के दौरान घने प्रारूप में रूपांतरण की आवश्यकता समाप्त हो जाती है। न्यूरॉन-जागरूक ऑपरेटर पारंपरिक स्पार्स ऑपरेटरों से भिन्न होते हैं क्योंकि वे एक मैट्रिक्स के भीतर व्यक्तिगत पंक्ति और स्तंभ वेक्टर पर ध्यान केंद्रित करते हैं, पूरे मैट्रिक्स पर नहीं।
न्यूरॉन प्लेसमेंट नीति
सीपीयू और जीपीयू की गणनात्मक क्षमताओं का लाभ उठाने के लिए, PowerInfer फ्रेमवर्क का ऑफलाइन घटक एक न्यूरॉन प्लेसमेंट नीति उत्पन्न करता है जो फ्रेमवर्क को न्यूरॉन्स को सीपीयू या जीपीयू परतों में आवंटित करने के लिए मार्गदर्शन करता है। नीति समाधानकर्ता यह नीति उत्पन्न करता है और प्रत्येक परत के भीतर न्यूरॉन प्लेसमेंट को नियंत्रित करता है, जो व्यक्तिगत प्रोसेसिंग यूनिटों के लिए गणनात्मक कार्यभार को निर्धारित करने में मदद करता है। नीति को उत्पन्न करते समय, नीति समाधानकर्ता घटक विभिन्न कारकों पर विचार करता है, जिनमें प्रत्येक न्यूरॉन की सक्रियण आवृत्ति, संचार ओवरहेड, और प्रत्येक प्रोसेसिंग यूनिट की गणनात्मक क्षमताएं, जैसे बैंडविड्थ और मेमोरी आकार शामिल हैं।
परिणाम और कार्यान्वयन
PowerInfer फ्रेमवर्क की सामान्यीकरण क्षमताओं को विभिन्न हार्डवेयर कॉन्फ़िगरेशन वाले उपकरणों पर प्रदर्शित करने के लिए, प्रयोग दो अलग-अलग व्यक्तिगत कंप्यूटरों पर किए जाते हैं: एक इंटेल i9-13900K प्रोसेसर, एनवीडिया आरटीएक्स 4090 जीपीयू और 192 जीबी होस्ट मेमोरी के साथ, जबकि दूसरा इंटेल i7-12700K प्रोसेसर, एनवीडिया आरटीएक्स 2080Ti जीपीयू और 64 जीबी होस्ट मेमोरी के साथ संचालित होता है।
PowerInfer फ्रेमवर्क का एंड-टू-एंड प्रदर्शन बैच आकार 1 के साथ llama.cpp के खिलाफ तुलना की जाती है, और डिफ़ॉल्ट तैनाती सेटिंग्स के साथ। फ्रेमवर्क तब ChatGPT और Alpaca डेटासेट से प्रॉम्प्ट्स का नमूना लेता है, जो वास्तविक दुनिया के संवाद इनपुट और आउटपुट में देखी जाने वाली लंबाई की परिवर्तनशीलता को देखते हुए। निम्नलिखित आंकड़ा विभिन्न मॉडलों के लिए उत्पन्न गति को प्रदर्शित करता है।

जैसा कि देखा जा सकता है, PowerInfer फ्रेमवर्क 8.32 टोकन प्रति सेकंड की दर से टोकन उत्पन्न करता है, और 16 टोकन प्रति सेकंड तक पहुंच जाता है, जिससे यह llama.cpp फ्रेमवर्क को एक महत्वपूर्ण मार्जिन से पार करता है। इसके अलावा, जैसे-जैसे आउटपुट टोकन की संख्या बढ़ती है, PowerInfer फ्रेमवर्क का प्रदर्शन भी सुधरता है, क्योंकि उत्पन्न चरण समग्र अनुमान समय को महत्वपूर्ण रूप से प्रभावित करता है।

इसके अलावा, जैसा कि ऊपर दिए गए आंकड़े में देखा जा सकता है, PowerInfer फ्रेमवर्क कम-अंत कंप्यूटरों पर llama.cpp फ्रेमवर्क को पार करता है, जिसमें 7 टोकन प्रति सेकंड की चोटी उत्पन्न दर होती है, और 5 टोकन प्रति सेकंड की औसत टोकन उत्पन्न गति होती है।

उपरोक्त आंकड़ा दोनों फ्रेमवर्क के लिए जीपीयू और सीपीयू के बीच न्यूरॉन लोड के वितरण को प्रदर्शित करता है। जैसा कि देखा जा सकता है, PowerInfer फ्रेमवर्क जीपीयू के न्यूरॉन लोड हिस्से को काफी बढ़ाता है, 20 से 70 प्रतिशत तक।

उपरोक्त आंकड़ा दो अलग-अलग विन्यास वाले दो कंप्यूटरों पर दोनों फ्रेमवर्क के प्रदर्शन की तुलना करता है। जैसा कि देखा जा सकता है, PowerInfer फ्रेमवर्क लगातार llama.cpp फ्रेमवर्क की तुलना में उच्च आउटपुट टोकन उत्पन्न गति प्रदान करता है।
अंतिम विचार
इस लेख में, हमने PowerInfer पर चर्चा की, एक उच्च गति वाला एलएलएम अनुमान इंजन जो एकल उपभोक्ता-ग्रेड जीपीयू द्वारा संचालित मानक कंप्यूटरों के लिए डिज़ाइन किया गया है। PowerInfer फ्रेमवर्क का मूल एलएलएम अनुमान में निहित उच्च स्थानीयता का लाभ उठाने का प्रयास करता है, जो न्यूरॉन सक्रियण के शक्ति-कानून वितरण द्वारा चिह्नित किया जाता है। PowerInfer फ्रेमवर्क एक तेज़ हस्तक्षेप प्रणाली है जो बड़े भाषा मॉडल के लिए डिज़ाइन की गई है, जो अनुकूली भविष्यवाणियों और न्यूरॉन-जागरूक ऑपरेटरों का उपयोग करके न्यूरॉन्स और गणनात्मक स्पार्सिटी को सक्रिय करती है।












