ریزتنظیم با LoRA ابرپارامترهای اندکی دارد، اما تعیین دقیق همین چند متغیر ساده میتواند مرز میان یک آموزش موفق و خروجی نامفهوم را مشخص کند. خوشبختانه با درک کارکرد هر یک از این پارامترها، دیگر نیازی به حدس و گمان برای انتخاب آنها نخواهد بود. در ادامه هرکدام را به تفصیل بررسی میکنیم.
رتبه: ابعاد و ظرفیت یادگیری
رتبه (r) ابعاد ماتریسهای کمرتبهای را که LoRA آموزش میدهد مشخص میکند و به تبع آن، ظرفیت یادگیری مدل را تعیین میکند. رتبه بزرگتر ظرفیت بیشتری در اختیار مدل میگذارد، اما خطر بیشبرازش و هزینههای محاسباتی را نیز افزایش میدهد. راهنمای کاربردی زیر متناسب با نوع وظیفه تنظیم شده است:
- سبکسازی و قالبدهی: r=4 تا 8
- پیروی از دستورالعملها: r=8 تا 16
- یادگیری دانش تخصصی: r=16 تا 32
- وظایف پیچیده: r=32 تا 64
قاعده طلایی این است: کار را با r=16 آغاز کنید. اگر مدل دچار کمبرازش شد (یعنی خطای آموزش به حداقل ممکن نرسید)، رتبه را افزایش دهید؛ اما اگر با بیشبرازش مواجه شدید (یعنی خطای اعتبارسنجی رو به افزایش گذاشت)، رتبه را کاهش دهید.
آلفا و نسبت مقیاسگذاری آلفا به رتبه
پارامتر آلفا (lora_alpha) به تنهایی معنایی ندارد؛ آنچه اهمیت دارد نسبت α/r است، زیرا میزان تاثیرگذاری وزنهای LoRA بر خروجی نهایی با این نسبت مقیاسگذاری میشود. یک قاعده رایج، تنظیم مقدار آلفا به صورت α = 2r است (به طوری که نسبت α/r = 2 حفظ شود). مزیت این روش در آن است که با تغییر بعدی رتبه، تاثیر وزنهای LoRA بدون تغییر باقی میماند. در صورت ناپایداری فرآیند آموزش، انتخاب α = r رویکردی محتاطانهتر است؛ همچنین اگر مقدار α را بسیار بزرگ در نظر بگیرید، ناگزیر باید نرخ یادگیری را کاهش دهید.
نرخ یادگیری
در روش LoRA میتوان نرخ یادگیری بالاتری را نسبت به فرآیند ریزتنظیم کامل در نظر گرفت؛ چرا که در این روش تنها چند ماتریس کوچک آموزش داده میشوند. محدوده مناسب برای این پارامتر بین 1e-4 تا 3e-4 است. مقدار استاندارد 2e-4 همراه با زمانبند cosine و حدود سه درصد warmup، نقطه شروع مطمئنی خواهد بود. اگر خروجیهای مدل نامفهوم شد، نخستین متغیری که باید بررسی کنید همین نرخ یادگیری است؛ چرا که نرخ یادگیری بسیار بالا، رایجترین دلیل افت شدید کیفیت خروجی است.
دراپاوت
استفاده از لایه dropout به پیشگیری از بیشبرازش کمک میکند و مقدار مناسب آن به حجم دادههای شما بستگی دارد:
- کمتر از هزار نمونه: 0.1
- بین هزار تا بیست هزار نمونه: 0.05
- بیش از بیست هزار نمونه: 0.0 تا 0.05
هرچه حجم دادهها کمتر باشد، احتمال بیشبرازش افزایش مییابد و در این حالت، استفاده از مقادیر بالاتر دراپاوت راهگشا خواهد بود.
لایههای هدف: target_modules
پرسش کلیدی دیگر این است که LoRA باید روی کدام لایهها اعمال شود. رویکرد نوین و رایج امروزی، گزینه “all-linear” یا همان اعمال روی تمامی لایههای خطی است. توصیه قدیمی مبنی بر محدود کردن فرآیند به لایههای q_proj و v_proj امروزه منسوخ شده است، زیرا هدف قرار دادن تمامی لایهها خروجی باکیفیتتری به همراه دارد. دلیل این امر آن است که لایههای توجه وظیفه مسیریابی اطلاعات را بر عهده دارند و لایههای MLP دانش را در خود ذخیره میکنند؛ بنابراین برای وظایفی که نیازمند یادگیری دانش جدید هستند، هر دو بخش اهمیت حیاتی دارند.
تعداد دورههای آموزش
تعداد دورههای آموزش (epochs) باید متناسب با حجم دادهها تعیین شود. هرچه حجم دادهها کمتر باشد، به دورههای آموزشی بیشتری نیاز خواهید داشت:
- کمتر از هزار نمونه: ۳ تا ۵ دوره
- هزار تا ده هزار نمونه: ۲ تا ۳ دوره
- ده هزار تا پنجاه هزار نمونه: ۱ تا ۲ دوره
- بیش از پنجاه هزار نمونه: ۱ دوره
برای مجموعهدادههای بزرگ، بالا بودن تعداد دورهها منجر به بیشبرازش میشود و معمولاً یک دوره آموزش کفایت میکند.
جمعبندی: یک نقطه شروع مطمئن
چنانچه صرفاً به دنبال نقطهای برای شروع هستید، این پیکربندی برای بیشتر وظایف عملکرد مناسبی ارائه میدهد: r=16، α=32، نرخ یادگیری 2e-4، target_modules=“all-linear”، دراپاوت متناسب با حجم دادهها، و یک یا دو دوره آموزش. سپس روند تغییرات خطای آموزش و خطای اعتبارسنجی را بررسی کنید: اگر هر دو خطا رو به کاهش هستند، فرآیند آموزش در مسیر درستی قرار دارد؛ اما اگر خطای اعتبارسنجی افزایش یافت، باید رتبه یا تعداد دورههای آموزش را کاهش دهید. همین چند تنظیم ساده، نود درصد کیفیت نتیجه را تعیین میکنند.