Connect with us

PowerInfer: एक उपभोक्ता-ग्रेड जीपीयू के साथ तेजी से बड़े भाषा मॉडल सर्विंग

कृत्रिम बुद्धिमत्ता

PowerInfer: एक उपभोक्ता-ग्रेड जीपीयू के साथ तेजी से बड़े भाषा मॉडल सर्विंग

mm

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

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

हम PowerInfer फ्रेमवर्क की विस्तार से जांच करेंगे, इसकी विधि, पाइपलाइन और व्यावहारिक अनुप्रयोग परिणामों का अन्वेषण करेंगे। आइए शुरू करें।

PowerInfer: उपभोक्ता-ग्रेड जीपीयू के साथ तेजी से बड़ा भाषा मॉडल

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

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

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

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

PowerInference फ्रेमवर्क का तर्क है कि एलएलएम अनुमान विशेषताओं और हार्डवेयर संरचना के बीच असंगति एलएलएम अनुमान में मेमोरी समस्याओं का प्राथमिक कारण है। आदर्श रूप से, बार-बार एक्सेस की जाने वाली डेटा को उच्च-बैंडविड्थ, सीमित-क्षमता जीपीयू में संग्रहीत किया जाना चाहिए, जबकि कम बार एक्सेस की जाने वाली डेटा को निम्न-बैंडविड्थ, उच्च-क्षमता सीपीयू में होना चाहिए। हालांकि, प्रत्येक एलएलएम अनुमान पुनरावृत्ति के पैरामीटर की बड़ी मात्रा एकल जीपीयू के लिए कार्यसेट बनाती है जो बहुत बड़ा है, जिससे स्थानीयता का अक्षम शोषण होता है।

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

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

अंत में, सीपीयू और जीपीयू के बीच सक्रिय न्यूरॉन्स को इष्टतम रूप से रखना चुनौतीपूर्ण है। PowerInfer फ्रेमवर्क एक ऑफलाइन चरण का उपयोग करता है जो एक न्यूरॉन प्लेसमेंट नीति बनाता है, प्रत्येक न्यूरॉन के प्रभाव को एलएलएम अनुमान परिणामों पर मापता है और इसे एक पूर्णांक रैखिक समस्या के रूप में ढालता है।

वास्तुकला और विधि

निम्नलिखित चित्र PowerInfer फ्रेमवर्क की वास्तुकला को विस्तार से बताता है, जिसमें पाइपलाइन में ऑफलाइन और ऑनलाइन घटक शामिल हैं।

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

ऑफलाइन चरण : नीति समाधानकर्ता और एलएलएम प्रोफाइलर

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

ऑनलाइन चरण : न्यूरॉन जागरूक एलएलएम अनुमान इंजन

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

अनुकूली शून्यता पूर्वानुमानकर्ता

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

इसके अलावा, पूर्वानुमानकर्ताओं का आकार आमतौर पर दो कारकों द्वारा निर्धारित किया जाता है: एलएलएम परतों की आंतरिक विचलन और शून्यता।

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

न्यूरॉन प्लेसमेंट और प्रबंधन

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

न्यूरॉन जागरूक ऑपरेटर

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

न्यूरॉन प्लेसमेंट नीति

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

परिणाम और कार्यान्वयन

PowerInfer फ्रेमवर्क की सामान्यीकरण क्षमताओं को विभिन्न हार्डवेयर कॉन्फ़िगरेशन वाले उपकरणों पर प्रदर्शित करने के लिए, प्रयोग दो अलग-अलग व्यक्तिगत कंप्यूटरों पर किए जाते हैं: एक इंटेल i9-13900K प्रोसेसर, एनवीडिया आरटीएक्स 4090 जीपीयू और 192 जीबी होस्ट मेमोरी के साथ, जबकि दूसरा इंटेल i7-12700K प्रोसेसर, एनवीडिया आरटीएक्स 2080Ti जीपीयू और 64 जीबी होस्ट मेमोरी के साथ संचालित होता है।

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

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

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

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

उपरोक्त छवि दो पीसी पर दो फ्रेमवर्क के प्रदर्शन की तुलना करती है, जिनमें विभिन्न विशिष्टताएं हैं। जैसा कि देखा जा सकता है, PowerInfer फ्रेमवर्क लगातार उच्च आउटपुट टोकन पीढ़ी गति प्रदान करता है, जब llama.cpp फ्रेमवर्क के साथ तुलना की जाती है।

अंतिम विचार

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

एक इंजीनियर पेशे से, एक लेखक दिल से। कुनाल एक तकनीकी लेखक हैं जिन्हें एआई और एमएल के प्रति गहरा प्यार और समझ है, जो अपने आकर्षक और जानकारीपूर्ण दस्तावेज़ के माध्यम से इन क्षेत्रों में जटिल अवधारणाओं को सरल बनाने के लिए समर्पित हैं।