इस ब्लॉग पोस्ट में, मैं LoRA (लो-रैंक एडैप्टेशन ऑफ लार्ज लैंग्वेज मॉडल्स) पद्धति के विवरण और सिद्धांतों के बारे में विस्तार से चर्चा करूँगा, साथ ही शोध पत्र का भी विश्लेषण करूँगा । शोध पत्र का मुख्य उद्देश्य एक ऐसी नई संरचना प्रस्तुत करना है जो मॉडल के फाइन-ट्यूनिंग की लागत को कम करते हुए उसके प्रदर्शन को बढ़ाती है। फाइन-ट्यूनिंग ऑपरेशन प्राकृतिक भाषा प्रसंस्करण के अध्ययन में काफी समय से महत्वपूर्ण भूमिका निभा रहे हैं। मान लीजिए आपके पास एक प्रशिक्षित मॉडल है और आप उसके ज्ञान का विस्तार करना चाहते हैं। आप इसे फाइन-ट्यूनिंग के माध्यम से कर सकते हैं, मॉडल को शुरू से प्रशिक्षित किए बिना।
मान लीजिए कि प्रशिक्षण के बाद मॉडल में n पैरामीटर हैं और आपको इसे फाइन-ट्यून करने की आवश्यकता है। यदि आप पूर्ण फाइन-ट्यूनिंग विधि का उपयोग करते हैं, तो मॉडल के सभी पैरामीटर अपडेट होने जा रहे हैं। जब हम ऐसे मॉडल पर विचार करते हैं जिनमें अरबों पैरामीटर होते हैं, तो सभी पैरामीटर पर अपडेट समय और भंडारण की समस्याएँ पैदा करेगा। पेपर में, LoRA विधि का उपयोग करके RoBERTa, DeBERTa, GPT-2 और GPT-3 मॉडल के लिए बेहतर या बराबर प्रदर्शन परिणामों पर जोर दिया गया है।
पेपर में बताया गया है कि LoRA विधि ली एट अल. (2018a) और अघाजयान एट अल. (2020) के अध्ययनों से प्रेरित है। ये अध्ययन इस बात पर जोर देते हैं कि ओवर-पैरामीटराइज्ड मॉडल की सफलता वास्तव में कम आंतरिक आयाम पर आधारित है। यह वह बिंदु बन गया जिसने LoRA विधि की परिकल्पना को आकार दिया।
LoRA विधि पूरी तरह से रैंक फैक्टराइजेशन पर आधारित एक अध्ययन है। इस विधि में, दो अनुक्रमिक मैट्रिसेस को चित्र 1 में दिखाए अनुसार तंत्रिका नेटवर्क में कुछ सघन परतों के समानांतर जोड़ा जाता है। ये अनुक्रमिक मैट्रिसेस एक दिए गए रैंक कॉन्फ़िगरेशन द्वारा बनते हैं। नीचे दिया गया चित्र दिखाता है कि अनुक्रमिक रैंक मैट्रिसेस को जोड़ने के बाद एक सघन परत कैसी दिखती है। इनपुट चर मूल प्रीट्रेनिंग वेट मैट्रिक्स और अनुक्रमिक मैट्रिसेस के पहले मैट्रिक्स दोनों के माध्यम से भेजे जाते हैं। फिर, इन दो समानांतर मैट्रिसेस के आउटपुट को जोड़कर आउटपुट मानों की गणना की जाती है।

लोरा विधि
न्यूरल नेटवर्क में कई सघन परतें होती हैं जो मैट्रिक्स गुणन करती हैं। इन परतों में भार मैट्रिक्स वास्तव में पूर्ण-रैंक मैट्रिक्स होते हैं (सभी पंक्तियाँ और स्तंभ स्वतंत्र होते हैं)। लेकिन अघाजान्यान एट अल. ने अपने शोध पत्र में उल्लेख किया है कि पूर्व-प्रशिक्षित भाषा मॉडलों का "आंतरिक आयाम" कम होता है। इसी पहलू ने LoRA परिकल्पना को आकार दिया। इस प्रकार LoRA परिकल्पना यह बन गई कि मॉडल किसी विशिष्ट कार्य के अनुकूलन के दौरान भार मैट्रिक्स में कम-आयामी परिवर्तनों के साथ सीख सकते हैं।
इस मैट्रिक्स का अद्यतन मैट्रिक्स के माध्यम से किया गया था

निम्न-रैंक द्वारा अलग किया गया। यहाँ, B एक dxr मैट्रिक्स है, A एक rxk मैट्रिक्स है, जबकि r (रैंक) d और k से बहुत छोटा है। फ़ाइन-ट्यूनिंग के दौरान, Wo के ग्रेडिएंट अपडेट को रोका जाता है। Wo और ∆W दोनों मैट्रिसेस को समान इनपुट मानों से गुणा किया जाता है और परिणामों को जोड़ा जाता है और आउटपुट h= w0 + ∆Wx = w0 +BAx बनता है।
प्रशिक्षण की शुरुआत में, उन्होंने A मैट्रिक्स मानों के लिए यादृच्छिक गॉसियन आरंभीकरण और B मैट्रिक्स मानों के लिए पूर्ण शून्य आरंभीकरण का उपयोग किया। दूसरे शब्दों में, BA शुरुआत में शून्य के बराबर है।
ट्रांसफॉर्मर आर्किटेक्चर में LoRA अनुप्रयोग
ट्रांसफॉर्मर आर्किटेक्चर में सेल्फ-अटेंशन मॉड्यूल में 4 वेट मैट्रिसेस Wq, Wk,Wv,Wo और MLP मॉड्यूल में 2 वेट मैट्रिसेस हैं। LoRA अनुकूलन के दौरान, उन्होंने MLP मॉड्यूल में वेट को स्थिर कर दिया, और प्रशिक्षण को सरल रखने के लिए अटेंशन वेट पर विधि लागू की।
फायदे
- LoRA द्वारा प्रदान की जाने वाली सबसे बड़ी सुविधा मेमोरी और स्टोरेज उपयोग हैं। उदाहरण के लिए, लेख में, यह उल्लेख किया गया है कि एडम के साथ प्रशिक्षित एक बड़े ट्रांसफॉर्मर मॉडल के लिए, यदि << r d है, तो VRAM का उपयोग 2/3 तक कम हो जाता है। ऐसा इसलिए है क्योंकि फ्रोजन पैरामीटर के लिए ऑप्टिमाइज़र स्टेट्स को नहीं रखा जाता है।
- GPT-3 175B मॉडल के लिए, VRAM खपत 1.2TB से घटकर 350GB हो गई।
- उस परिदृश्य में जहाँ r=4 था और केवल मान और क्वेरी मैट्रिसेस के भार बदले गए थे, चेकपॉइंट का आकार 350GB से घटाकर 35MB कर दिया गया था। इससे कम GPU के साथ प्रशिक्षण करना संभव हो गया।
- इसके अलावा, चूंकि अधिकांश मापदंडों में कोई ग्रेडिएंट अपडेट नहीं है, इसलिए पूर्ण फाइन-ट्यूनिंग प्रक्रिया की तुलना में LoRA के साथ GPT-25 3B को प्रशिक्षित करने पर 175% त्वरण प्राप्त किया गया।
लेख में यह भी उल्लेख किया गया है कि यदि किसी भिन्न भाषा के लिए फाइन-ट्यूनिंग प्रक्रिया की आवश्यकता है, तो LoRA के बजाय संपूर्ण मॉडल का उपयोग किया जाना चाहिए।
अतिरिक्त ज्ञान
रैंक क्या है?
किसी मैट्रिक्स में रैखिक रूप से स्वतंत्र स्तंभों या पंक्तियों की कुल संख्या को रैंक कहते हैं। मान लीजिए हमारे पास n स्तंभों वाला एक मैट्रिक्स है और सभी स्तंभ एक दूसरे से स्वतंत्र हैं, तो हम कह सकते हैं कि इस मैट्रिक्स का स्तंभ रैंक n है। इसी प्रकार, यदि n पंक्तियों वाले मैट्रिक्स की सभी पंक्तियाँ एक दूसरे से स्वतंत्र हैं, तो हम फिर से कह सकते हैं कि मैट्रिक्स का पंक्ति रैंक n है।
मैट्रिक्स की पंक्ति रैंक और कॉलम रैंक बराबर होनी चाहिए। उदाहरण के लिए, हम नीचे दिए गए मैट्रिक्स को देख सकते हैं।
मैट्रिक्स A = [[1,2,5], [ 2, 4, 10] ]
अगर हम मैट्रिक्स को ध्यान से देखें, तो हम देख सकते हैं कि दूसरी पंक्ति पहली पंक्ति से दोगुनी है। इसी तरह, मैट्रिक्स के दूसरे और तीसरे कॉलम क्रमशः पहले कॉलम के 2 और 1 गुना हैं। दूसरे शब्दों में, जबकि मैट्रिक्स में पंक्ति के आधार पर एक ही लाइन पर दो वेक्टर हैं, और कॉलम के आधार पर दूसरी लाइन पर तीन अलग-अलग वेक्टर हैं, प्रत्येक पंक्ति और कॉलम के आधार पर केवल एक अद्वितीय वेक्टर है। इसका मतलब है कि मैट्रिक्स की रैंक 2 है।
रैंक ज्ञात करने के लिए, हम मैट्रिक्स को उसके सोपानक रूप में परिवर्तित करते हैं, और फिर हम उन पंक्तियों की संख्या की गणना करते हैं जिनमें कम से कम एक गैर-शून्य मान होता है।
निम्न रैंक मैट्रिक्स क्या है?
मैट्रिसेस में, रैंक कॉलम या पंक्तियों की संख्या के बराबर या उससे कम हो सकती है। जिन मैट्रिसेस में पंक्तियों या स्तंभों की वर्तमान संख्या की तुलना में छोटी रैखिक रूप से स्वतंत्र पंक्तियाँ या स्तंभ होते हैं, उन्हें निम्न-रैंक मैट्रिसेस कहा जाता है। जिन मैट्रिसेस में सभी पंक्तियाँ या स्तंभ स्वतंत्र होते हैं, उन्हें पूर्ण-रैंक मैट्रिसेस कहा जाता है।
रैंक फैक्टराइजेशन/डीकम्पोजिशन क्या है
हम एक मैट्रिक्स को, जिसकी रैंक r है, L और R मैट्रिक्स में विभाजित करके B=LR^T के रूप में पुनः लिख सकते हैं। यहाँ, L एक मैट्रिक्स है जिसकी विमाएँ mxr हैं, जबकि R^T एक मैट्रिक्स है जिसकी विमाएँ rxn हैं। इस प्रक्रिया को रैंक अपघटन कहा जाता है ।
रैंक फैक्टराइजेशन का महत्व:
रैंक गुणनखंडन प्रक्रिया का महत्व यह है कि यह हमें एक मैट्रिक्स को छोटे मैट्रिक्स L और R में विभाजित करने और उन्हें कम स्थान में रखने की अनुमति देता है। इसका अर्थ है कि आप B को उसके गुणनखंड L और R को संग्रहित करके रख सकते हैं। इससे B की भंडारण आवश्यकता mn से घटकर (m+n)r हो जाती है। एक और महत्वपूर्ण बात यह है कि मैट्रिक्स को इन दो छोटे मैट्रिक्स में विभाजित करने के बाद, उसी मैट्रिक्स को दोबारा बनाए बिना ही उस पर कई गणनाएँ की जा सकती हैं। इसलिए, कम रैंक वाले मैट्रिक्स से निपटते समय, रैंक गुणनखंडन को हमेशा एक महत्वपूर्ण प्रारंभिक चरण माना जाता है। रैंक गुणनखंडन के बाद, गणनाएँ बहुत तेज़ी से और कम मेमोरी का उपयोग करके की जा सकती हैं।
और भी
लो रैंक मैट्रिक्स के बारे में अधिक विस्तृत जानकारी के लिए, आप एथन आर. एपरली का ब्लॉग और LoRA पेपर पढ़ सकते हैं । इसके अतिरिक्त, आप Microsoft/LoRA GitHub रिपॉजिटरी पर LoRA के कोड-आधारित अनुप्रयोगों का विस्तार से अध्ययन कर सकते हैं ।
गिज़ेम अबाली, एमएससी. / टीम लीड