بهینهسازی VRAM برای Stable Diffusion
🧠 مقدمه
یکی از رایجترین مشکلات کاربران Stable Diffusion کمبود VRAM کارت گرافیک است.
مدلهای جدید مثل SDXL گاهی به بیش از 10GB VRAM نیاز دارند، اما بسیاری از کاربران فقط GPUهای زیر را دارند:
- RTX 3050 (8GB)
- GTX 1660 (6GB)
- RTX 2060 (6GB)
- حتی GPUهای 4GB
خبر خوب این است که با چند تکنیک ساده میتوان مصرف VRAM را به شدت کاهش داد و مدلها را روی سیستمهای ضعیفتر اجرا کرد.
در این آموزش مهمترین روشهای بهینهسازی VRAM را یاد میگیریم.
📉 کاهش اندازه تصویر
بزرگترین عامل مصرف VRAM رزولوشن تصویر است.
رزولوشنهای رایج:
| Resolution | مصرف VRAM |
|---|---|
| 512x512 | کم |
| 768x768 | متوسط |
| 1024x1024 | زیاد |
اگر VRAM محدود داری بهتر است از این تنظیمات استفاده کنی:
512 x 512
یا:
640 x 640
بعداً میتوانی تصویر را Upscale کنی.
⚙️ استفاده از Sampler سبکتر
بعضی Samplerها VRAM بیشتری مصرف میکنند.
Samplerهای پیشنهادی برای سیستمهای ضعیف:
| Sampler | وضعیت |
|---|---|
| Euler | سبک |
| Euler a | سبک |
| DPM++ 2M | متوسط |
| DPM++ SDE | سنگین |
اگر GPU ضعیف داری از این استفاده کن:
Euler
🧩 استفاده از Low VRAM Mode
بیشتر ابزارهای Stable Diffusion حالت Low VRAM دارند.
در AUTOMATIC1111 میتوان از این فلگها استفاده کرد:
--lowvram
یا:
--medvram
مثال کامل:
python launch.py --medvram
این حالت مدل را به صورت بخشبخش در GPU لود میکند.
🧠 استفاده از xFormers
یکی از مهمترین بهینهسازیها استفاده از xFormers است.
xFormers باعث میشود:
- مصرف VRAM کمتر شود
- سرعت generation بیشتر شود
در بسیاری از نسخههای Stable Diffusion به صورت خودکار فعال است.
اگر نبود میتوان نصب کرد:
pip install xformers
🖼️ استفاده از Tile Generation
وقتی رزولوشن بالا میخواهی ولی VRAM کم داری میتوانی از Tile Rendering استفاده کنی.
در این روش تصویر به بخشهای کوچک تقسیم میشود.
این تکنیک در ابزارهای زیر وجود دارد:
- ComfyUI
- Automatic1111 Tiled Diffusion
- ControlNet Tile
مزیت:
- امکان تولید تصاویر 4K با VRAM کم
📦 استفاده از VAE سبکتر
بعضی VAEها مصرف VRAM زیادی دارند.
میتوان از نسخههای سبکتر استفاده کرد مثل:
vae-ft-mse-840000
یا حتی VAE offload در بعضی ابزارها.
🧮 کاهش Batch Size
اگر همزمان چند تصویر تولید میکنی VRAM سریع پر میشود.
بهتر است مقدار زیر را روی 1 بگذاری:
Batch Size = 1
و در صورت نیاز چند بار generation انجام دهی.
🚀 استفاده از CPU Offloading
در بعضی ابزارها میتوان بخشی از مدل را به CPU منتقل کرد.
مثال در Diffusers:
pipe.enable_model_cpu_offload()
این روش کمک میکند مدل روی GPUهای کوچک اجرا شود.
🧩 بهینهسازی در ComfyUI
در ComfyUI چند روش برای کاهش VRAM وجود دارد:
- استفاده از SDXL Turbo
- کاهش latent size
- فعال کردن model offload
همچنین ComfyUI معمولاً نسبت به بسیاری از UIها مصرف VRAM کمتری دارد.
📊 مقایسه مصرف VRAM
| تنظیمات | VRAM تقریبی |
|---|---|
| SD 1.5 – 512px | 4GB |
| SDXL – 1024px | 10GB+ |
| SDXL – 768px | 8GB |
| SDXL + optimization | 6GB |
به همین دلیل با بهینهسازی میتوان حتی SDXL را روی GPUهای 6GB اجرا کرد.
⚡ ترکیب بهترین تنظیمات برای GPU ضعیف
اگر GPU شما 4GB تا 6GB VRAM دارد این ترکیب خوب عمل میکند:
Resolution: 512x512
Sampler: Euler
Steps: 20
Batch Size: 1
xFormers: Enabled
Low VRAM Mode: Enabled
این تنظیمات در اکثر سیستمها بدون مشکل اجرا میشود.