0

بهترین روش برای Fine-tuning مدل‌های زبان بزرگ (LLM) روی دیتاست سفارشی چیست؟

سلام دوستان. من یک دیتاست تخصصی در حوزه پزشکی دارم و می‌خوام یک مدل مثل Llama 3 رو روی این دیتاست فاین-تیون کنم تا بتونه به سوالات پزشکی با دقت بیشتری پاسخ بده. با روش‌هایی مثل LoRA و QLoRA آشنا هستم اما نمی‌دونم کدوم یکی برای شروع بهتره و چه نکاتی رو باید در نظر بگیرم. مثلاً بهترین سایز دیتاست، تعداد epochها و learning rate چقدر باید باشه؟ آیا ابزار آماده‌ای مثل Hugging Face TRL برای این کار پیشنهاد می‌شه؟ ممنون میشم راهنمایی کنید.

به گفت‌وگو بپیوندید !
فرمت‌های MP3، JPG، PNG، WEBP، MP4، MKV تا ۱۰ مگابایت
@user-3TOc
2 ساعت قبل

سلام. پیشنهاد من شروع با QLoRA هست چون به منابع سخت‌افزاری (VRAM) کمتری نیاز داره. با استفاده از کتابخانه `bitsandbytes` می‌تونید مدل رو به صورت 4-bit کوانتایز کنید و بعد با LoRA روی لایه‌های attention فاین-تیون کنید. کتابخانه TRL از Hugging Face کار رو خیلی ساده کرده و یک کلاس به اسم `SFTTrainer` داره که تمام این فرآیند رو اتوماتیک می‌کنه. برای شروع، می‌تونید با learning rate حدود 2e-4 و چند هزار نمونه داده شروع کنید و ببینید loss چطور تغییر می‌کنه. فراموش نکنید که فرمت دیتاست شما باید شبیه به فرمت‌های استاندارد مثل Alpaca باشه.

0

علاوه بر پاسخ دوستمون، حتماً به کیفیت دیتاستتون توجه کنید. دیتاست‌های بی‌کیفیت یا نویزدار می‌تونن باعث 'catastrophic forgetting' بشن و عملکرد مدل رو حتی در تسک‌های عمومی هم خراب کنن. قبل از فاین-تیونینگ، حتماً یک مرحله پاکسازی داده (data cleaning) انجام بدید. همچنین، استفاده از یک مجموعه داده برای اعتبارسنجی (validation set) خیلی مهمه تا بتونید بهترین نسخه مدل (checkpoint) رو بر اساس عملکردش روی داده‌های دیده نشده ذخیره کنید. ابزارهایی مثل Weights & Biases (wandb) هم می‌تونن برای مانیتورینگ فرآیند آموزش خیلی مفید باشن.

0

یک نکته تکمیلی: انتخاب لایه‌هایی که LoRA روی اون‌ها اعمال میشه (target modules) هم مهمه. معمولاً لایه‌های `q_proj` و `v_proj` در بلوک‌های attention انتخاب‌های خوبی هستن، اما برای برخی مدل‌ها ممکنه لازم باشه لایه‌های دیگه‌ای مثل `k_proj` و `o_proj` یا حتی لایه‌های FFN رو هم اضافه کنید. این کار رو با پارامتر `target_modules` در کانفیگ LoRA می‌تونید مشخص کنید. پیشنهاد می‌کنم با تنظیمات پیش‌فرض شروع کنید و بعد با تغییر پارامترهایی مثل `r` (rank) و `lora_alpha` آزمایش کنید تا به بهترین نتیجه برسید. موفق باشید!

0