معنی 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.

نمونهٔ عکس‌های تولیدی با Dreambooth

خروجی LoRA نوع دیگری از خروجی عمل Fine-tuning است. برخلاف خروجی Checkpoint، در این حالت مدل اصلی هیچ تغییری نمی‌کند و به اصطلاح Freeze می‌شود. در کنار این مدل Freeze شده، یک فایل LoRA ساخته می‌شود که موازی با مدل اصلی است.

ماتریس LoRA حاصل ضرب دو ماتریس سمت راست است که در نهایت ماتریسی معادل ماتریس اصلی مدل تولید می‌کند.

تصویر نهایی تولید شده هم ترکیبی از خروجی این دو مدل موازی است. برای مشاهدهٔ روش و خروجی‌های فاین‌تیون کردن با کمک LoRA، مطالب ساختن مدل و خلق تصویر با SDXL و ساختن مدل و خلق تصویر با Flux را ببینید. ماژولار بودن خروجی‌های LoRA این امکان را می‌دهد که حین ساخت تصویر، از چند LoRA به صورت همزمان استفاده شود.

نمونه‌ای از ترکیب LoRAهای آموزش داده شده بر روی تصاویر شهید چمران و تصاویر بازی Sims

انواع 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 تولید می‌شود.

ساختار ماتریس در مدل LoHA

خروجی Embedding یا Textual Inversion یک راه دیگر فهماندن مفاهیم به مدل است. این روش در مقایسه با باقی کم‌ترین حجم را داراست. مثلاً یک فایل Embedding حاوی یک چهره حدود 100KB حجم دارد. نکتهٔ فایل Embedding این است که هیچ مدلی در این بین Fine-tune نمی‌شود؛ بلکه اشتراکات ورودی‌ها پیدا شده و از این به بعد با کلیدواژهٔ تعیین شده توسط کاربر -مثلاً chamran- شناسایی می‌شود. در این حالت عملاً مدل مفهوم تازه‌ای را یاد نمی‌گیرد؛ بلکه راه میانبری برای تولید آن‌چه کاربر می‌خواهد ایجاد می‌شود.

از کاربردهای روش TI با مدل SD

مقایسهٔ روش‌های Fine-tuning

با صرف نظر از روش Dreambooth که دیگر استفاده نمی‌شود، سه روش باقیمانده در سه سطح مختلف قرار می‌گیرند. روش کلاسیک که همان به‌روزرسانی تمامی وزن‌های مدل است، از نظر هزینهٔ پردازشی و تعدد ورودی‌های موردنیاز قابل مقایسه با دو روش دیگر نیست. مثلاً مدل‌هایی که در سایت civitai به صورت کلاسیک آموزش دیده‌اند، چندین هزار عکس ورودی داشته‌اند. برعکس روش کلاسیک، روش‌های LoRA و Embedding نیازی به تعدد عکس‌ها ندارند و میانبری برای رسیدن به خروجی مطلوب هستند (Embedding که دقیقاً میانبر است). با این حساب روش بهینه برای استفادهٔ شخصی یا بیزینسی، همان روش LoRA هست که از یک طرف دقت فاین‌تیونینگ کلاسیک و از یک طرف سرعت روش Embedding را با خود دارد.

روشکاربرد اصلیحجم خروجیتغییر مدل اصلیفهماندن مفهوم جدید به مدلهزینهٔ آموزشحجم ورودی موردنیاز
کلاسیکفهماندن از پایهتقریباً معادل مدلبسیار بالازیاد
روش Dreamboothفهماندن یک مفهومهم‌تقریباً معادل مدلمتوسطحداقل ۵ عکس
روش LoRAفهماندن یک مفهومحدود ۲۰۰ مگابایتمتوسطحداقل ۱۰ عکس
روش Embeddingحذف ایرادات عکس و افزودن جزئیاتزیر ۱۰ مگابایتپایینحداقل ۳ عکس

Footnotes

  1. کد موجود نیاز به تغییراتی دارد و در حالت عادی اجرا نمی‌شود. مثلاً آدرس قدیمی مدل پایهٔ Stable Diffusion منقضی شده است و باید آدرس جدیدش را پیدا کنید.