عبارت LoRA مخفف Low Rank Adaptation (همگامسازی با رتبه پایین) است. تکنیک LoRA در سال ۲۰۲۱ و در این مقاله به عنوان یک راه بهینه برای Fine-tuning مدلها معرفی شده است. پیشفرض اصلی تکنیک این است که رتبهٔ ماتریس وزنهای مدل به قدری پایین است که میتوان با یک ماتریس به مراتب کوچکتر، عملکرد آن را تکرار کرد.
کارکرد LoRA
تکنیک LoRA بر خلاف Fine-tuning کلاسیک، نیازی به تنظیم کل مدل ندارد. در مدل کلاسیک، کل وزنهای مدل یک دور از ابتدا محاسبه میشوند که فرآیندی بسیار زمانبر و هزینهزاست.
در تکنیک LoRA، معماری شبکهٔ عصبی به دو ماتریس همرده تقسیم میشود. یک ماتریس همان مدل اصلی است که به اصطلاح «فریز1» میشود و دستنخورده به شکل Read-Only باقی میماند؛ موازی با این ماتریس، دو ماتریس دیگر با نامهای A
و B
تشکیل میدهیم. اگر ماتریس اصلی W
به مرتبهٔ d x k
باشد، آنگاه ماتریس B
به مرتبهٔ d x r
و ماتریس A به مرتبهٔ r x k
خواهد بود که ضرب BA
در نهایت ماتریس ΔW
با مرتبهٔ d x k
خروجی دهد. مقدار انتخاب شده برای r
همیشه برابر عددی بسیار کوچکتر از d
و k
خواهد بود. این مقدار کم باعث میشود که ماتریس BA با داشتن پارامترهای کمتر، همچنان خروجی به مرتبهٔ d x k
تولید میکند2.
- از ترکیب این دو ماتریس، یک خروجی واحد تولید میشود. مقدار Loss این خروجی تعیین شده و با تکنیک انتشار معکوس، وزنهای ماتریس BA اصلاح میشود. دقت کنید که در این حالت مدل اصلی در این حالت هیچ تغییری نمیکند.
منابع بیشتر
Footnotes
-
Freeze ↩
-
فرضاً با
d = 1000
،k = 3000
وr = 5
، پارامترهای مدل اصلی برابر ۳٫۰۰۰٫۰۰۰ است. اما پارامترهای ماتریسهای B و A مجموعاً ۲۳٫۰۰۰ هستند. یعنی کمتر از ۱٪. پارامتر کمتر یعنی حجم کمتر، انتشار معکوس سریعتر و سرعت بیشتر در اجرا. ↩