بهینه‌سازی 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 – 512px4GB
SDXL – 1024px10GB+
SDXL – 768px8GB
SDXL + optimization6GB

به همین دلیل با بهینه‌سازی می‌توان حتی SDXL را روی GPUهای 6GB اجرا کرد.


⚡ ترکیب بهترین تنظیمات برای GPU ضعیف

اگر GPU شما 4GB تا 6GB VRAM دارد این ترکیب خوب عمل می‌کند:

Resolution: 512x512
Sampler: Euler
Steps: 20
Batch Size: 1
xFormers: Enabled
Low VRAM Mode: Enabled

این تنظیمات در اکثر سیستم‌ها بدون مشکل اجرا می‌شود.


اگر نمی‌خواهی وقتت را صرف نصب و تنظیمات سرور کنی، می‌توانی یک سرور کاملاً آماده و از قبل پیاده‌سازی‌شده تهیه کنی و بلافاصله کار با GPU را شروع کنی.