فکر کردی LoRA همیشه سریع‌تره؟ نه به اون سادگی که فکر می‌کنی!

Fall Back

اگه سر و کارت با مدل‌های زبانی بزرگ (همونا LLM یا Large Language Models که مثلا ChatGPT هم یکی از اوناست) افتاده باشه، احتمالاً اسم LoRA به گوشت خورده. LoRA یا همون Low-Rank Adaptation یه روش خیلی معروفه برای فاین‌تیون کردن این مدل‌های غول‌پیکر. یعنی اگه یه مدل آماده داری ولی می‌خوای متناسب با یه کار یا دیتای خاص دوباره آموزش بدی، LoRA کمک می‌کنه فقط یه بخش کوچیک از وزن‌های مدل رو با یه چیز جمع و جور و کم‌حجم به اسم وزن‌های «Low-Rank» آموزش بدی و لازم نباشه همه‌چیزو آپدیت کنی.

تا اینجا همه چی عالی به نظر میاد! چرا؟ چون LoRA به خاطر همین ترفندش هم مصرف حافظه رو میاره پایین، هم سرعت آموزش رو (روی کاغذ!) می‌بره بالا و باعث میشه فاین‌تیون کردن مدل‌های بزرگ خیلی راحت‌تر بشه. همه، از محقق گرفته تا مهندسین شرکت‌ها، عاشقشن چون دیگه لازم نیست سرِ هر مدل کلی هزینه سخت‌افزاری پرداخت کنن.

اما خب، حالا یه تیم از بچه‌های پژوهشگر (که مقاله‌شون هم تو arXiv منتشر شده) اومدن روی این قضیه دقیق‌تر زوم کردن و متوجه شدن اوضاع همیشه اینقدر گل‌وبلبل نیست! یعنی اصطلاحاً LoRA همیشه اون سرعتی که انتظار داری رو تو همه مدل‌ها و شرایط مختلف تحویلت نمی‌ده.

خلاصه داستان چیه؟
اینا کلی آزمایش و بررسی کردن، فهمیدن که بسته به اینکه چه مدل و چه تنظیماتی داری، LoRA گاهی اصلاً اونجوری که تبلیغ می‌کنن سریع‌تر نمی‌شه و حتی ممکنه کندتر هم باشه. یعنی فیلترینگ و بهینه‌سازی رو یه جورایی محدود می‌کنه. مثلاً تو بعضی معماری‌های مدل، ساختار لو-رنک باعث میشه حافظه کمتر مصرف بشه، ولی در عمل سرعت رشد نمی‌کنه یا خیلی کمتر از انتظار زیاد میشه.

خوب، حالا گره کار کجاست؟
توی این مقاله، اومدن دقیق نگاه کردن ببینن چرا LoRA اینجوریه و چه چیزهایی باعث محدودیت سرعتش میشه. گفتن فقط بحث تعداد پارامتر نیست، بعضی وقتا شیوه پیاده‌سازی، معماری مدل، یا حتی منابع سخت‌افزاری می‌تونه به شدت تاثیر بذاره تو اینکه LoRA واقعاً سریعتر باشه یا نه. یعنی همه‌چی فقط این نیست که یه روش کم‌حجم باشه و کارت راه بیفته!

پیشنهادشون چیه؟
این بچه‌ها، روی همین آزمایش و ایراداتی که پیدا کردن، یه سری روش جدید معرفی کردن برای اینکه بتونی مدل‌های زبانی بزرگ رو بهتر و سریع‌تر فاین‌تیون کنی. یعنی اومدن چندتا ترفند عملیاتی پیشنهاد دادن که نه تنها مثل LoRA (یا حتی بهتر از اون) عملکرد خوبی داره، بلکه تو سرعت تمرین هم ثبات بیشتری پیدا می‌کنی و خیالت راحت‌تره.

نتیجه آزمایشاشون هم جالبه: میانگیناً با روش‌های خودشون تونستن یا مثل LoRA نتیجه بگیرن یا حتی مدل‌ها سریع‌تر و بهتر یاد بگیرن. خلاصه اگه محدودیت منابع سخت‌افزاری داری (یعنی مثل بیشتر ماها مجبوری با رم و کارت گرافیک کم بسازی)، این مقاله کلی نکته کاربردی و آموزنده برات داره.

در آخر، این مقالهٔ بچه‌ها اومده یه دید واقع‌بینانه و عملیاتی درباره LoRA بده؛ یعنی اگه فقط شنیدی LoRA همه‌جا معجزه می‌کنه، بهتره قبلش این نتایج رو هم ببینی و بعد تصمیم بگیری چه روشی برای فاین‌تیون مدل‌ت مناسب‌تره.

خلاصه هر وقت خواستی مدل زبانی بزرگ رو با منابع محدود فاین‌تیون کنی، به LoRA فقط دل نبند و این روش‌ها و پیشنهادهای تازه رو هم تو جعبه ابزار پیشن داشته باش!

(راستی: فاین‌تیون کردن یعنی یه مدل از قبل آموزش دیده رو با یه دیتای جدید و کاربری متفاوت دوباره تربیت کردن تا تو چیزای خاص، بهتر جواب بده!)

منبع: +