معنی Fine-tuning
تکنیک Fine tuning به معنی تنظیم وزنهای مدل موجود با دادههای جدید با هدف انجام فعالیتهای خاص است. مثلاً اگر قرار است مدل زبانی ما به سؤالات درمانی پاسخ دهد، با آموزش آن روی پرسش و پاسخهای پزشکی این کار را انجام میدهیم. یا اگر بناست مدل ما تصاویر کارتونی درست کند، با دستکاری مدل و آموزش آن با تصاویر کارتونی این کار را انجام میدهیم.
انواع روشهای Fine-tuning
خروجی عمل Fine-tuning میتواند به چند شکل مختلف باشد:
خروجی Checkpoint نسخهای از مدل است که در میانههای آموزش ذخیره میشود. فرض کنیم که مدل ما برای یادگیری نیاز به طی ۱۰۰۰ Epoch دارد. برای اینکه مطمئن باشیم در طی این فرآیند مدل Overfit نمیشود، هر ۲۰۰ Epoch یک Checkpoint ذخیره میکنیم. در انتها، ۵ فایل مدل مختلف داریم که در Epochهای ۲۰۰، ۴۰۰، ۶۰۰، ۸۰۰ و ۱۰۰۰ ذخیره شدهاند. با تست این ۵ مدل و مشاهدهٔ عملکرد، بهترین مدل را انتخاب میکنیم. بسیاری از مدلهایی که در حال حاضر در فضای وب وجود دارند، Checkpointهای حاصل از آموزش مدلهای فعلی هستند. مثلاً مدل Real Dream بر پایهٔ مدل Stable Diffusion 1.5
ساخته شده است.
ساخت مدل Checkpoint از دو راه اصلی صورت میپذیرد. راه اول آموزش مجدد مدل است که زمان زیادی میبرد و هزینهزاست. راه دوم هم استفاده از تکنیک Dreambooth
است. Dreambooth یک تکنیک ابداعی از مهندسان گوگل برای فهماندن مفاهیم خاص (مثل یک شخصیت، شیء یا حیوان خاص) به مدلهای موجود است. البته که این تکنیک با معرفی تکنیک LoRA از سمت مایکروسافت دیگر استفاده نمیشود و منزوی شده است. برای تست تکنیک Dreambooth
میتوانید از طریق Google Collab اقدام کنید1.
خروجی LoRA نوع دیگری از خروجی عمل Fine-tuning است. برخلاف خروجی Checkpoint، در این حالت مدل اصلی هیچ تغییری نمیکند و به اصطلاح Freeze میشود. در کنار این مدل Freeze شده، یک فایل LoRA ساخته میشود که موازی با مدل اصلی است.
تصویر نهایی تولید شده هم ترکیبی از خروجی این دو مدل موازی است. برای مشاهدهٔ روش و خروجیهای فاینتیون کردن با کمک LoRA، مطالب ساختن مدل و خلق تصویر با SDXL و ساختن مدل و خلق تصویر با Flux را ببینید. ماژولار بودن خروجیهای LoRA این امکان را میدهد که حین ساخت تصویر، از چند LoRA به صورت همزمان استفاده شود.
انواع LoRA
تکنیک LoRA یکی از راههای اصلی ایجاد یک ماتریس موازی با مدل اصلی است. به حالات کلیتر این عمل LyCORIS یا Lora beyond Conventional methods, Other Rank adaptation Implementations for Stable diffusion میگویند. تفاوت آنها با LoRA، ساختار ماتریسشان است. اگر LoRA شامل دو ماتریس
m x r
وr x n
باشد که در آن ماتریس مدل برابرm x n
باشد، مدلهای مختلف LyCORIS میتوانند شامل ماتریسهای مختلفی باشند که ضرب آنها در نهایت همان ماتریسm x n
را تولید میکند. مثلا در حالت LoHa (Low-Rank Hadamard) با ضرب چهار ماتریس که به ترتیبm x r
وr x n
وm x r
وr x n
هستند، ماتریسm x n
تولید میشود.
خروجی Embedding یا Textual Inversion یک راه دیگر فهماندن مفاهیم به مدل است. این روش در مقایسه با باقی کمترین حجم را داراست. مثلاً یک فایل Embedding
حاوی یک چهره حدود 100KB
حجم دارد. نکتهٔ فایل Embedding
این است که هیچ مدلی در این بین Fine-tune نمیشود؛ بلکه اشتراکات ورودیها پیدا شده و از این به بعد با کلیدواژهٔ تعیین شده توسط کاربر -مثلاً chamran
- شناسایی میشود. در این حالت عملاً مدل مفهوم تازهای را یاد نمیگیرد؛ بلکه راه میانبری برای تولید آنچه کاربر میخواهد ایجاد میشود.
مقایسهٔ روشهای Fine-tuning
با صرف نظر از روش Dreambooth
که دیگر استفاده نمیشود، سه روش باقیمانده در سه سطح مختلف قرار میگیرند. روش کلاسیک که همان بهروزرسانی تمامی وزنهای مدل است، از نظر هزینهٔ پردازشی و تعدد ورودیهای موردنیاز قابل مقایسه با دو روش دیگر نیست. مثلاً مدلهایی که در سایت civitai
به صورت کلاسیک آموزش دیدهاند، چندین هزار عکس ورودی داشتهاند. برعکس روش کلاسیک، روشهای LoRA
و Embedding
نیازی به تعدد عکسها ندارند و میانبری برای رسیدن به خروجی مطلوب هستند (Embedding
که دقیقاً میانبر است). با این حساب روش بهینه برای استفادهٔ شخصی یا بیزینسی، همان روش LoRA
هست که از یک طرف دقت فاینتیونینگ کلاسیک و از یک طرف سرعت روش Embedding
را با خود دارد.
روش | کاربرد اصلی | حجم خروجی | تغییر مدل اصلی | فهماندن مفهوم جدید به مدل | هزینهٔ آموزش | حجم ورودی موردنیاز |
---|---|---|---|---|---|---|
کلاسیک | فهماندن از پایه | تقریباً معادل مدل | ✅ | ✅ | بسیار بالا | زیاد |
روش Dreambooth | فهماندن یک مفهوم | همتقریباً معادل مدل | ✅ | ✅ | متوسط | حداقل ۵ عکس |
روش LoRA | فهماندن یک مفهوم | حدود ۲۰۰ مگابایت | ❌ | ✅ | متوسط | حداقل ۱۰ عکس |
روش Embedding | حذف ایرادات عکس و افزودن جزئیات | زیر ۱۰ مگابایت | ❌ | ❌ | پایین | حداقل ۳ عکس |
Footnotes
-
کد موجود نیاز به تغییراتی دارد و در حالت عادی اجرا نمیشود. مثلاً آدرس قدیمی مدل پایهٔ
Stable Diffusion
منقضی شده است و باید آدرس جدیدش را پیدا کنید. ↩