GraphicsSpeed

آموزش عملی LoRA برای Stable Diffusion 1.5 با Kohya

در این راهنما یک LoRA برای Stable Diffusion 1.5 با رابط Kohya آموزش می‌دهیم. مراحل نصب و رابط گرافیکی زیر برای Windows و اجرای محلی Kohya هستند. این راهنما تنظیمات SDXL را آموزش نمی‌دهد؛ SDXL پیکربندی آموزشی جداگانه و فشار حافظه بیشتری دارد، پس تنظیمات این صفحه را برای آن کپی نکنید.

پیش‌نیازها و انتخاب GPU

برای مسیر Kohya GUI در Windows به یک GPU انویدیا، درایور و CUDA Toolkit سازگار با راهنمای نصب Kohya، Git، Python نسخه‌ای که راهنمای فعلی Kohya درخواست می‌کند و Visual C++ Redistributable نیاز دارید. خود راهنمای رسمی Windows برای روش uv در حال حاضر Python 3.11.9 و CUDA Toolkit 12.8 را ذکر می‌کند؛ پیش از نصب، همان راهنما را دوباره بررسی کنید چون پیش‌نیاز ابزارها ممکن است تغییر کند. راهنمای نصب Windows در Kohya

برای اجرای SD 1.5، RTX 3060 با 12 GB VRAM گزینه راحت‌تری است. RTX 3060 Ti با 8 GB فضای حافظه کمتری دارد و ممکن است به batch size برابر 1 و تنظیمات صرفه‌جویی حافظه نیاز پیدا کند. این‌ها راهنمای تقریبی‌اند، نه تضمین اینکه هر دیتاست یا پیکربندی روی هر GPU اجرا شود.

۱. دیتاست آماده را بررسی کنید

آماده‌سازی و بررسی تصاویر را طبق راهنمای آماده‌سازی دیتاست LoRA با Jupyter انجام دهید. در این صفحه فقط اتصال همان دیتاست به ساختار Kohya را مشخص می‌کنیم.

برای روش پوشه‌ای Kohya، تصاویر هر مجموعه را مستقیماً داخل یک زیرپوشه با نام تعدادتکرار_نام‌مفهوم قرار دهید. برای نمونه:

lora-project/
└── train/
    └── 10_subject/
        ├── image-001.jpg
        ├── image-001.txt
        ├── image-002.jpg
        └── image-002.txt

در این مثال، 10 تعداد تکرار تصویرها در هر epoch است؛ نام پوشه بعد از زیرخط برچسب مفهوم است. برای هر تصویر، فایل caption اختیاری باید هم‌نام تصویر و کنار آن باشد؛ مثلاً image-001.jpg و image-001.txt. محتوای caption برای همان تصویر استفاده می‌شود. اگر caption ندارید، درباره تنظیم tokenهای پوشه در رابط Kohya تصمیم بگیرید؛ برای این walkthrough از captionهای آماده و بازبینی‌شده استفاده کنید.

در Kohya مسیر پوشه والد train را به‌عنوان پوشه تصاویر آموزشی بدهید، نه مسیر مستقیم 10_subject. ساختار پوشه و نام‌گذاری تکرارها در راهنمای رسمی ساختار پوشه Kohya توضیح داده شده است.

چون captionهای این نمونه پسوند .txt دارند، گزینه Caption extension در تنظیمات دیتاست Kohya را روی .txt بگذارید؛ پسوند پیش‌فرض بعضی نسخه‌ها ممکن است متفاوت باشد. نام فایل caption باید با تصویر متناظر یکسان باشد.

۲. نصب و اجرای Kohya GUI در Windows

این مسیر، رابط گرافیکی محلی Kohya را نصب می‌کند؛ آن را با محیط Jupyter مرورگری GraphicsSpeed یکی ندانید.

۱. پیش‌نیازهای Windows را طبق راهنمای رسمی uv برای Kohya نصب کنید. ۲. در ترمینال Windows اجرا کنید:

git clone --recursive https://github.com/bmaltais/kohya_ss.git
cd kohya_ss

۳. برای نصب و اجرای محیط مدیریت‌شده و رابط، دستور رسمی را اجرا کنید:

.\gui-uv.bat

در اجرای نخست، اگر اسکریپت نصب uv را پیشنهاد کرد، دستورالعمل همان اسکریپت را دنبال کنید. این مسیر عمداً از ساخت venv دستی و نصب مستقیم requirements.txt استفاده نمی‌کند. صفحه رسمی نصب، گزینه‌های بیشتر و تغییرات احتمالی را توضیح می‌دهد.

۳. انتخاب مدل، دیتاست و خروجی

در رابط Kohya به بخش LoRA بروید و یک checkpoint سازگار با Stable Diffusion 1.5 انتخاب کنید. همان checkpoint را برای آزمایش LoRA هم نگه دارید. این راهنما تنظیمات SDXL را پوشش نمی‌دهد.

در بخش مسیرها:

  • Image folder / Train data directory: پوشه والد lora-project/train
  • Output directory: یک مسیر قابل دسترس، مثلاً lora-project/output
  • Output name: نامی ساده، مثلاً subject_lora
  • Save model as: safetensors

نام فایل خروجی از Output name ساخته می‌شود؛ اگر ذخیره نسخه‌های epoch را فعال کنید، ممکن است نام فایل پسوند epoch هم داشته باشد.

۴. پیکربندی شروع برای این walkthrough

این یک پیکربندی شروع برای SD 1.5 است، نه بهترین تنظیم برای همه دیتاست‌ها. نام دقیق کنترل‌ها ممکن است با نسخه رابط فرق کند؛ اگر گزینه‌ای در نسخه شما وجود ندارد، مقدار جایگزین را حدس نزنید و راهنمای همان نسخه را ببینید.

گزینهمقدار شروعمعنی کوتاه
Resolution512؛ فعال‌کردن bucket برای نسبت تصویرهای متفاوتاندازه آموزشی پایه؛ bucket تصویرها را در اندازه‌های سازگار گروه‌بندی می‌کند.
Train batch size1تعداد نمونه‌هایی که در هر به‌روزرسانی پردازش می‌شوند؛ مقدار 1 فشار حافظه را محدودتر می‌کند.
Network dim / rank16ظرفیت ماتریس‌های LoRA؛ مقدار بیشتر می‌تواند ظرفیت و هزینه محاسباتی را بالا ببرد.
Network alpha8ضریب مقیاس LoRA؛ مقدار شروع این walkthrough نصف rank است.
Learning rate (عمومی)1e-4نرخ پایه‌ای که برای این walkthrough به‌صورت صریح در نظر گرفته شده است.
U-Net learning rate1e-4این override را هم صریحاً روی همان نرخ عمومی بگذارید.
Text Encoder learning rate1e-4این override را هم صریحاً روی همان نرخ عمومی بگذارید تا هر دو بخش LoRA آموزش ببینند.
OptimizerAdamW8bitالگوریتم به‌روزرسانی وزن‌ها؛ در صورت خطای وابستگی، تنظیمات نصب Kohya را بررسی کنید.
LR schedulerconstantنرخ یادگیری را در طول آموزش ثابت نگه می‌دارد.
Max train epochs3یک epoch یعنی عبور آموزشی از داده‌های تکرارشده؛ این مقدار نقطه شروع همین walkthrough است، نه مقدار مناسب همه دیتاست‌ها.
Mixed precisionfp16محاسبات کم‌دقت‌تر که می‌تواند مصرف حافظه را کاهش دهد؛ سازگاری آن به GPU و محیط بستگی دارد.
Gradient checkpointingروشن، اگر در رابط موجود استحافظه کمتری مصرف می‌کند اما ممکن است آموزش را کندتر کند.
Save every N epochs1نسخه هر epoch را برای مقایسه خروجی‌ها ذخیره می‌کند؛ فایل نهایی را نیز پس از پایان بررسی کنید.

در این ساختار، عدد 10 در نام پوشه تعداد تکرارهاست؛ مقدار Max train epochs تعداد عبورها از داده تکرارشده است. با batch size برابر 1، تعداد stepها در هر epoch تقریباً با تعداد تصویرها × تکرارها متناسب است. برای مثال اگر N تصویر دارید، یک epoch حدود N×10 نمونه آموزشی پردازش می‌کند و سه epoch حدود N×30؛ تعداد step دقیق را از رابط/گزارش Kohya بررسی کنید. راهنمای رسمی sd-scripts توضیح می‌دهد که optimizer، scheduler، rank، alpha و تنظیمات ذخیره در آموزش مستقل‌اند و باید به‌صورت متناسب انتخاب شوند: راهنمای آموزش LoRA در sd-scripts.

برای جلوگیری از ابهام، در این walkthrough هر سه فیلد نرخ یادگیری را 1e-4 وارد کنید. اگر overrideهای U-Net و Text Encoder واقعاً تنظیم نشده باشند، sd-scripts نرخ عمومی را برای آن‌ها به‌کار می‌برد؛ اما در GUI فعلی ممکن است این فیلدها از قبل مقدار داشته باشند. مقدار 0 برای Text Encoder نگذارید: در Kohya فعلی این مقدار آموزش Text Encoder را غیرفعال می‌کند.

۵. شروع و پایش آموزش

تنظیمات را یک بار دیگر مرور کنید: مدل پایه SD 1.5، مسیر والد دیتاست، پوشه خروجی و نام فایل. سپس Start training را بزنید. خروجی رابط یا ترمینالی را که Kohya اجرا شده دنبال کنید و مطمئن شوید شمارنده step/epoch جلو می‌رود و پیام خطای توقف ظاهر نشده است.

زمان آموزش به GPU، تعداد تصویرها، resolution، تکرارها، epochها و تنظیمات بستگی دارد؛ این راهنما زمان مشخصی را تضمین نمی‌کند.

۶. پیدا کردن فایل و بررسی LoRA

پس از پایان آموزش، در مسیر Output directory دنبال فایلی با نام Output name و پسوند .safetensors بگردید. اگر نسخه‌های epoch ذخیره شده‌اند، نام می‌تواند شامل شماره epoch باشد. در رابط/گزارش Kohya پایان run را بررسی کنید و فایل خروجی مورد انتظار را بازبینی کنید؛ پیام پایان به‌تنهایی جای تأیید وجود فایل را نمی‌گیرد.

برای تست، به یک محیط inference نیاز دارید که LoRA را پشتیبانی کند. از همان checkpoint یا مدل سازگار از Stable Diffusion 1.5 استفاده کنید؛ LoRA آموزش‌دیده برای SD 1.5 را با SDXL آزمایش نکنید. روش بارگذاری و وزن LoRA به رابط inference بستگی دارد؛ نحو <lora:...> را فقط در رابط‌هایی به‌کار ببرید که آن را مستند کرده‌اند. تصویر آزمایشی را با prompt شامل trigger/caption خود بسازید و نتیجه را با همان prompt و checkpoint بدون LoRA مقایسه کنید.

عیب‌یابی کوتاه

  • Kohya نصب یا اجرا نمی‌شود: مطمئن شوید clone با submoduleها کامل شده، پیش‌نیازهای راهنمای Windows نصب‌اند و gui-uv.bat از پوشه مخزن اجرا می‌شود.
  • GPU شناسایی نمی‌شود یا CUDA/PyTorch خطا می‌دهد: نسخه درایور، CUDA و PyTorch محیط Kohya را با راهنمای همان نسخه تطبیق دهید؛ نصب تصادفی چند نسخه PyTorch را روی هم انجام ندهید.
  • تصویر یا caption پیدا نمی‌شود: مسیر باید پوشه والد train باشد؛ نام زیرپوشه باید الگوی تکرار_مفهوم داشته باشد و فایل caption دقیقاً با نام تصویر جفت شود.
  • خطای کمبود حافظه CUDA: batch size را 1 نگه دارید، SD 1.5 و resolution این walkthrough را بررسی کنید و تنظیمات حافظه مثل gradient checkpointing/SDPA را فقط اگر نسخه ابزار پشتیبانی می‌کند فعال کنید.
  • Loss ناپایدار یا NaN: ابتدا مدل پایه، فایل‌های تصویر/caption و mixed precision را بررسی کنید؛ learning rate یا optimizer را یکی‌یکی و با ثبت تغییرات تنظیم کنید.
  • آموزش تمام شده اما فایل نیست: Output directory، Output name، قالب safetensors و وضعیت ذخیره epochها را در GUI دوباره بررسی کنید.
  • LoRA خروجی ضعیف یا نادرست است: سازگاری مدل پایه و trigger/captionها را بررسی کنید و چند checkpoint ذخیره‌شده را مقایسه کنید؛ افزایش rank درمان عمومی برای تصویر تار نیست.

استفاده از GPU و محیط Jupyter در GraphicsSpeed

GraphicsSpeed محیط Jupyter در مرورگر برای کارهای Python، PyTorch، CUDA و محاسبات GPU فراهم می‌کند؛ Kohya از پیش نصب نیست و این راهنمای Windows، رابط GUI آن را در مرورگر GraphicsSpeed اجرا نمی‌کند. نصب و اجرای یک workflow کامل Kohya در این محیط در این مقاله تأیید نشده است. برای آشنایی با محیط Jupyter می‌توانید راهنمای Jupyter برای پروژه‌های AI را ببینید.

حساب‌های جدید GraphicsSpeed ۳۰ دقیقه اعتبار تست RTX 3060 و ۳۰ دقیقه اعتبار تست RTX 3060 Ti می‌گیرند؛ در مجموع ۶۰ دقیقه برای آزمودن هر دو گزینه، نه وعده اتمام یک آموزش LoRA.

برای اجرای پروژه‌های Python و AI/ML در محیط Jupyter و با GPU، جزئیات GPUهای قابل انتخاب و قیمت استفاده را ببینید.