Low-Rank Adaptation (LoRA) (FA)

From Systems analysis wiki
Jump to navigation Jump to search

Low-Rank Adaptation (LoRA) — روشی برای fine-tuning با کارایی پارامتری (PEFT) است که امکان تطبیق مدل‌های زبانی بزرگ (LLM) با وظایف جدید را با حداقل هزینه‌های محاسباتی فراهم می‌کند. این فناوری برای اولین بار در مقاله ادوارد هو (Edward Hu) و همکارانش در سال ۲۰۲۱ معرفی شد[1].

fine-tuning کامل (full fine-tuning) مدل‌های بزرگ مانند LLaMA یا GPT به منابع عظیمی نیاز دارد و آن را برای اکثر پژوهشگران و توسعه‌دهندگان غیرقابل دسترس می‌سازد. LoRA این مشکل را با امکان آموزش تنها بخش کوچکی از پارامترهای مدل حل می‌کند و در عین حال کیفیت و عملکرد بالایی قابل مقایسه با fine-tuning کامل را حفظ می‌نماید[2].

اصل کار

ایده اصلی LoRA این است که به جای تغییر وزن‌های اصلی مدل از پیش آموزش‌دیده، یک ماتریس «تصحیحی» کوچک به آن‌ها اضافه شود. به جای آموزش مستقیم ماتریس وزن بزرگ `W`، LoRA تغییر آن را به صورت حاصل‌ضرب دو ماتریس کوچک با رتبه پایین نمایش می‌دهد.

به طور رسمی، اگر ماتریس وزن اصلی لایه `W_0` دارای ابعاد `d × k` باشد، به‌روزرسانی آن به صورت `ΔW = BA` نمایش داده می‌شود، که در آن `B` ماتریسی با ابعاد `d × r` و `A` ماتریسی با ابعاد `r × k` است. رتبه `r` یک ابرپارامتر است و به مراتب کوچک‌تر از `d` و `k` می‌باشد (`r << d, k`). در فرآیند fine-tuning، وزن‌های اصلی `W_0` منجمد می‌شوند و تنها ماتریس‌های `A` و `B` آموزش می‌بینند. ماتریس وزن نهایی به صورت `W = W_0 + BA` محاسبه می‌شود.

این امر امکان کاهش تعداد پارامترهای قابل آموزش را تا هزاران برابر فراهم می‌کند. برای مثال، در fine-tuning GPT-3 (۱۷۵ میلیارد پارامتر)، LoRA تعداد پارامترهای قابل آموزش را ۱۰٬۰۰۰ برابر کاهش می‌دهد و نیاز به حافظه GPU را ۳ برابر کم می‌کند[1].

مزایای کلیدی

  • صرفه‌جویی در منابع: تعداد پارامترهای قابل آموزش به شدت کاهش می‌یابد (تا ۹۰٪ و بیشتر)، که این امر مصرف حافظه ویدیویی (VRAM) را به طور قابل توجهی کم می‌کند و فرآیند آموزش را تسریع می‌نماید.
  • عدم تأخیر در استنتاج (inference): پس از آموزش، ماتریس‌های `B` و `A` را می‌توان با ماتریس اصلی `W_0` «ادغام» کرد و `W = W_0 + BA` را محاسبه نمود. بدین ترتیب، در زمان استفاده از مدل هیچ محاسبه یا تأخیر اضافه‌ای ایجاد نمی‌شود[1].
  • پیمانه‌ای بودن و تغییر سریع وظیفه: adapter‌های آموزش‌دیده LoRA فایل‌های کوچکی هستند (چند مگابایت). این امر امکان ذخیره‌سازی آسان ده‌ها adapter برای وظایف مختلف و جابجایی سریع بین آن‌ها را بدون تغییر مدل اصلی فراهم می‌کند[3].

محدودیت‌ها و اصلاحات

اگرچه LoRA بسیار کارآمد است، ماهیت رتبه پایین آن می‌تواند برای وظایفی که نیاز به حفظ حجم زیادی از اطلاعات جدید دارند، محدودیت‌ساز باشد. برای رفع این و دیگر مشکلات، اصلاحات گوناگونی پیشنهاد شده است.

QLoRA

QLoRA (Quantized Low-Rank Adaptation) یکی از محبوب‌ترین اصلاحات است که در سال ۲۰۲۳ پیشنهاد شد. این روش LoRA را با کوانتیزاسیون ۴ بیتی مدل پایه ترکیب می‌کند[4]. این امر امکان کاهش بیشتر نیاز به حافظه را فراهم می‌کند و fine-tuning مدل‌هایی با ده‌ها میلیارد پارامتر (مانند مدل‌های ۶۵ میلیارد پارامتری) را روی یک GPU مصرفی ممکن می‌سازد. بر اساس QLoRA، به ویژه مدل Guanaco ساخته شد که نتایجی قابل مقایسه با ChatGPT نشان داد.

سایر اصلاحات

  • MoRA (High-Rank Updating): برای وظایفی پیشنهاد شده که LoRA به دلیل محدودیت رتبه عملکرد کافی ندارد. MoRA از روش‌هایی استفاده می‌کند که امکان به‌روزرسانی وزن‌ها با رتبه بالا را با حفظ کارایی پارامتری فراهم می‌سازد[5].

پیاده‌سازی و کاربرد

فناوری LoRA به دلیل کارایی و سادگی یکپارچه‌سازی، کاربرد گسترده‌ای یافته است. کتابخانه PEFT (Parameter-Efficient Fine-Tuning) از شرکت Hugging Face نقش کلیدی در محبوبیت آن ایفا کرده است. PEFT یک رابط یکپارچه برای اعمال LoRA و دیگر روش‌های PEFT به مدل‌های اکوسیستم Transformers فراهم می‌کند[6].

LoRA به طور فعال برای موارد زیر استفاده می‌شود:

  • تطبیق چت‌بات‌ها و سیستم‌های مکالمه‌ای (مانند fine-tuning مدل‌های LLaMA و Mistral).
  • ساخت مدل‌هایی برای طبقه‌بندی و تولید متن در حوزه‌های تخصصی.
  • شخصی‌سازی مدل‌ها بر اساس سبک یا قالب داده‌ای خاص.

پیوندها

  • مستندات رسمی کتابخانه PEFT از Hugging Face

منابع

  • Hu, E.J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685.
  • Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314.
  • Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. arXiv:2303.10512.
  • Chen, Y. et al. (2023). LongLoRA: Efficient Fine-Tuning of Long-Context Large Language Models. arXiv:2309.12307.
  • Mao, K. et al. (2024). A Survey on LoRA of Large Language Models. arXiv:2407.11046.
  • Jiang, T. et al. (2024). MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning. arXiv:2405.12130.
  • Liu, Z. et al. (2024). ALoRA: Allocating Low-Rank Adaptation for Fine-Tuning Large Language Models. arXiv:2403.16187.
  • Liu, J. et al. (2025). RoRA: Efficient Fine-Tuning of LLM with Reliability Optimization for Rank Adaptation. arXiv:2501.04315.
  • Albert, P. et al. (2025). RandLoRA: Full-Rank Parameter-Efficient Fine-Tuning of Large Models. arXiv:2502.00987.
  • Tastan, N. et al. (2025). LoFT: Low-Rank Adaptation That Behaves Like Full Fine-Tuning. arXiv:2505.21289.

یادداشت‌ها

  1. 1.0 1.1 1.2 Hu, E.J., et al. «LoRA: Low-Rank Adaptation of Large Language Models». arXiv:2106.09685. [۱]
  2. Mao, K., et al. «A Survey on LoRA of Large Language Models». arXiv:2407.11046. [۲]
  3. Noble, Joshua. «What is LoRA (Low-Rank Adaption)?». IBM Technology. [۳]
  4. Dettmers, T., et al. «QLoRA: Efficient Finetuning of Quantized LLMs». arXiv:2305.14314. [۴]
  5. Jiang, Z., et al. «MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning». arXiv:2405.12130. [۵]
  6. «LoRA (Low-Rank Adaptation)». Hugging Face LLM Course. [۶]