1 पॉइंट द्वारा GN⁺ 2024-01-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें

LoRA तकनीक के साथ LLM को कुशलतापूर्वक fine-tune करना

  • LoRA(Low-Rank Adaptation) LLM(Large Language Models) को अधिक कुशलता से fine-tune करने की एक तकनीक है.
  • पूरे neural network parameters को समायोजित करने के बजाय, LoRA केवल कुछ low-rank matrices को update करता है.

code example के साथ चलें

  • लेख में दिए गए सभी code साथ वाले Studio में मिल सकते हैं.
  • "Run" पर क्लिक करके code environment की पूरी copy प्राप्त करें और code files चलाने के लिए तैयार हो जाएँ.

LoRA को समझना

  • pre-trained LLM को विभिन्न कार्यों में उनकी generality के कारण base model कहा जाता है.
  • किसी pre-trained LLM को किसी specific dataset या task के अनुसार समायोजित करना fine-tuning के माध्यम से किया जाता है.
  • LoRA training के दौरान layer weights में बदलाव को low-rank format में approximate करके एक अधिक कुशल विकल्प प्रदान करता है.

Scratch से LoRA को code करना

  • PyTorch में LoRA layer को इस तरह implement किया जा सकता है.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA मुख्य रूप से neural network की linear (feedforward) layers पर लागू होता है.

LoRA के साथ fine-tuning -- hands-on example

  • LoRA केवल GPT या image generation models ही नहीं, बल्कि विभिन्न प्रकार के neural networks पर भी लागू किया जा सकता है.
  • text classification task के लिए एक छोटे BERT model पर आधारित hands-on example दिया गया है.

पारंपरिक fine-tuning से तुलना

  • LoRA की default settings के साथ 89.44% test accuracy हासिल की गई.
  • पारंपरिक fine-tuning की तुलना में, LoRA कम parameters के साथ बेहतर performance दिखाता है.

LoRA settings का optimization

  • LoRA के hyperparameter settings को समायोजित करके performance में सुधार किया जा सकता है.
  • विभिन्न hyperparameter combinations का प्रयोग करके optimal settings खोजी जा सकती हैं.

निष्कर्ष

  • Scratch से LoRA को code करते हुए सीखा गया, और DistilBERT model को classification task के लिए fine-tune करके यह पुष्टि हुई कि LoRA, model की केवल आखिरी layer को fine-tune करने की तुलना में बेहतर performance देता है.

GN⁺ की राय

  • LoRA बड़े language models को कुशलतापूर्वक fine-tune करने के लिए एक महत्वपूर्ण तकनीक है, और model का आकार बढ़ने के साथ इसमें computation cost कम करने की क्षमता है.
  • वास्तविक examples के माध्यम से LoRA को लागू करने का तरीका समझा जा सकता है और उसे वास्तविक समस्याओं पर लागू करने की क्षमता विकसित की जा सकती है.
  • LoRA के hyperparameters को समायोजित करके performance optimize करने की प्रक्रिया, machine learning models की tuning के लिए एक सामान्य approach को दिखाती है.

1 टिप्पणियां

 
GN⁺ 2024-01-23
Hacker News राय
  • Maxime Labonne के LLMs 101 के ज़रिए इस तकनीक को फ़ॉलो कर रहा हूँ। अभी भी कंप्यूटर साइंस में यह कहना अजीब लगता है कि "हमें ठीक-ठीक नहीं पता कि hyperparameter परिणामों को कैसे प्रभावित करते हैं, इसलिए अलग-अलग मान आज़माओ और जो सबसे अच्छा हो उसे चुन लो।"
  • LoRA और LoRa अलग हैं, और एक ही संक्षेप का इस्तेमाल होने से होने वाली उलझन पर नाराज़गी है।
  • फाइनट्यूनिंग कब करनी चाहिए, यह अभी भी स्पष्ट नहीं है। पहले लगता था कि इसका उपयोग मॉडल के व्यवहार को बदलने के लिए होता है, लेकिन हाल में ऐसा दिखता है कि कुछ कंपनियाँ ज्ञान जोड़ने के लिए फाइनट्यूनिंग का उपयोग कर रही हैं।
  • फाइनट्यूनिंग के मुख्य use case क्या हैं, इस पर सवाल है।
  • यह LoRA पर एक अच्छा लेख है। मैं इस क्षेत्र का विशेषज्ञ नहीं हूँ, लेकिन मेरी समझ यह है कि मूल पेपर में LoRA केवल आख़िरी dense layer पर लागू किया गया था। यह ध्यान देने लायक है कि QLoRA में इस तरीके का उपयोग किया जाता है और लगता है कि इसके दिलचस्प प्रभाव हैं।
  • यह पूरी तरह समझ नहीं आता कि LoRA काम क्यों करता है। इसे आख़िरी layer पर लागू करना समझ में आता है, लेकिन हर linear layer पर इसे बार-बार लागू करने के पीछे की तर्कशक्ति समझ नहीं आती। क्या कोई इसकी intuition समझा सकता है?
  • इच्छा है कि wireless LoRa protocol open source होता।
  • लगा था कि यह software-defined radio के बारे में होगा, लेकिन फिर भी यह दिलचस्प है।
  • LoRA forward pass को scratch से implement करने का अभ्यास जोड़ा है। LoRA का विचार सुंदर है और इसका implementation काफ़ी सरल है।
  • फाइनट्यूनिंग के लिए सबसे लोकप्रिय library कौन-सी है, इस पर सवाल है।
  • scratch से शुरू करने के बजाय Axolotl के config-based approach को पसंद करता हूँ। Axolotl mistral, llama-2 को support करता है और कई latest techniques भी support करता है।
  • डेटा-केंद्रित फाइनट्यूनिंग पर ध्यान है, और LoRA को scratch से सीखने के बजाय फाइनट्यूनिंग डेटा इकट्ठा करने और curate करने पर फ़ोकस है।