7.0. LoRA Improvements in fine-tuning
Last updated
Last updated
LoRA का उपयोग बहुत सारी गणना को कम करता है जो पहले से प्रशिक्षित मॉडलों को फाइन ट्यून करने के लिए आवश्यक है।
LoRA बड़े मॉडलों को प्रभावी ढंग से फाइन-ट्यून करना संभव बनाता है, केवल छोटी भाग को बदलकर। यह उन पैरामीटर की संख्या को कम करता है जिन्हें आपको प्रशिक्षित करने की आवश्यकता होती है, मेमोरी और गणनात्मक संसाधनों की बचत करता है। इसका कारण है:
प्रशिक्षण योग्य पैरामीटर की संख्या को कम करता है: मॉडल में पूरे वजन मैट्रिक्स को अपडेट करने के बजाय, LoRA वजन मैट्रिक्स को दो छोटे मैट्रिक्स (जिसे A और B कहा जाता है) में विभाजित करता है। इससे प्रशिक्षण तेज़ हो जाता है और कम मेमोरी की आवश्यकता होती है क्योंकि कम पैरामीटर को अपडेट करने की आवश्यकता होती है।
इसका कारण यह है कि एक परत (मैट्रिक्स) के पूर्ण वजन अपडेट की गणना करने के बजाय, यह इसे 2 छोटे मैट्रिक्स के उत्पाद के रूप में अनुमानित करता है, अपडेट को गणना करने के लिए कम करता है:\
2. **मूल मॉडल के वजन को अपरिवर्तित रखता है**: LoRA आपको मूल मॉडल के वजन को समान रखने की अनुमति देता है, और केवल **नए छोटे मैट्रिक्स** (A और B) को अपडेट करता है। यह सहायक है क्योंकि इसका मतलब है कि मॉडल का मूल ज्ञान संरक्षित है, और आप केवल आवश्यक चीजों को समायोजित करते हैं। 3. **कार्य-विशिष्ट फाइन-ट्यूनिंग में दक्षता**: जब आप मॉडल को **नए कार्य** के लिए अनुकूलित करना चाहते हैं, तो आप केवल **छोटे LoRA मैट्रिक्स** (A और B) को प्रशिक्षित कर सकते हैं जबकि बाकी मॉडल को वैसा ही छोड़ सकते हैं। यह पूरे मॉडल को फिर से प्रशिक्षित करने की तुलना में **बहुत अधिक कुशल** है। 4. **स्टोरेज दक्षता**: फाइन-ट्यूनिंग के बाद, प्रत्येक कार्य के लिए **एक नया पूरा मॉडल** सहेजने के बजाय, आपको केवल **LoRA मैट्रिक्स** को स्टोर करने की आवश्यकता होती है, जो पूरे मॉडल की तुलना में बहुत छोटे होते हैं। इससे मॉडल को कई कार्यों के लिए अनुकूलित करना आसान हो जाता है बिना बहुत अधिक स्टोरेज का उपयोग किए।
LoraLayers को फाइन ट्यूनिंग के दौरान Linear के बजाय लागू करने के लिए, यहां यह कोड प्रस्तावित किया गया है https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01_main-chapter-code/appendix-E.ipynb: