سیستم موردنیاز برای اجرای شخصی Stable Diffusion
برای اجرای شخصی Stable Diffusion بدانید VPS فقط با CPU چه سرعتی دارد، SDXL به چه مقدار VRAM نیاز دارد، ComfyUI چگونه نصب میشود و برای مدل 6.94 GB چقدر دیسک لازم است.
یک مولد تصویر هوش مصنوعی خودمیزبان واقعاً به چه چیزهایی نیاز دارد
یک مولد تصویر هوش مصنوعی خودمیزبان از یک برنامه وب و یک فایل مدل تشکیل میشود. این برنامه ComfyUI است و روی هر سیستم Linux اجرا میشود. مدل تعیین میکند به چه سختافزاری نیاز دارید. یک checkpoint در رده SDXL فقط یک فایل 6.94 GB است و باید در حافظه GPU قرار بگیرد. همین یک واقعیت کل بودجه را تعیین میکند؛ بنابراین پیش از اجاره هر چیزی، جدول سختافزاری زیر را بخوانید.
خلاصه صادقانه این است: یک VPS فقط با CPU میتواند نرمافزار را نصب و ارائه کند و با یک مدل قدیمیتر Stable Diffusion 1.5، تصاویر 512x512 را در یک یا دو دقیقه برای هر تصویر تولید کند. همان سیستم با اجرای SDXL در وضوح 1024x1024 برای تولید هر تصویر به ده تا بیست دقیقه زمان نیاز دارد. این به معنای خراب بودن راهاندازی نیست. این فقط نتیجه محاسبات است و این راهنما آن را توضیح میدهد.
چرا اندازه مدل، ماشین را تعیین میکند
تولید تصویر یک حلقه کاهش نویز را اجرا میکند. یک رندر 30 مرحلهای، مدل کامل را 30 بار روی تصویر اعمال میکند و هر مرحله همه وزنها را میخواند. حجم وزنهای SDXL در دقت نیمه حدود 6.9 GB است؛ بنابراین پیش از نمایش تصویر، یک رندر 30 مرحلهای تقریباً 200 GB داده را از حافظه عبور میدهد.
یک GPU با 24 GB حافظه ویدئویی (VRAM؛ حافظهای که در کنار تراشه گرافیکی لحیم شده است) با سرعت صدها GB در ثانیه داده را میخواند و هر 6.9 GB را همزمان در خود نگه میدارد. یک VPS مبتنی بر CPU، RAM سیستم را با سرعت دهها GB در ثانیه میخواند و برای عملیات کانولوشن سختافزار ماتریسی ندارد؛ بنابراین اجرای همین حلقه یک تا دو مرتبه بزرگی کندتر است. این همان استدلال مربوط به پهنایباند حافظه است که بر مدلهای متنی نیز حاکم است و بهتر است آن را همراه با چه زمانی یک VPS مجهز به GPU واقعاً ارزش هزینهاش را دارد بخوانید.
تولید تصویر از یک نظر مهم با تولید متن تفاوت دارد. یک مدل گفتوگو توکنها را بهصورت جریانی ارسال میکند؛ بنابراین حتی یک ماشین کند نیز قابل استفاده به نظر میرسد، چون واژهها هنگام خواندن شما ظاهر میشوند. تصویر فقط پس از پایان آخرین مرحله ظاهر میشود. کند بودن یعنی خیره شدن به نوار پیشرفت.
نردبان سختافزار، با اعداد واقعی
بلوک زیر اعداد معمول برای یک تصویر SDXL با وضوح 1024x1024، 30 گام و نمونهبردار Euler را تا ژوئیه 2026 نشان میدهد. این اعداد را بهعنوان مرتبه بزرگی در نظر بگیرید. نمونهبردار، تعداد گامها و وضوح تصویر میتوانند این اعداد را تغییر دهند.
The data behind this chart
[
{
"label": "8 vCPU VPS, no GPU",
"seconds_per_image": 780
},
{
"label": "8GB VRAM GPU",
"seconds_per_image": 32
},
{
"label": "12GB VRAM GPU",
"seconds_per_image": 18
},
{
"label": "24GB VRAM GPU",
"seconds_per_image": 9
}
]مقدار ردیف CPU برابر با 780 ثانیه است؛ یعنی حدود سیزده دقیقه. کارت 24 GB به 9 ثانیه نیاز دارد. این همان اختلافی است که با خرید سختافزار بهتر به دست میآورید.
نردبان را به این شکل بخوانید. با کمتر از 8 GB حافظه VRAM، اجرای SDXL همچنان ممکن است، زیرا ComfyUI لایهها را بهصورت خودکار به RAM سیستم منتقل میکند و میتواند از کارتی با تنها 1 GB نیز استفاده کند. انتقال لایهها در هر گام زمان پردازش را افزایش میدهد؛ بنابراین کارت 6 GB برای هر تصویر به حدود یک دقیقه نزدیکتر است تا سی ثانیه. در 8 GB، مدل پایه در حافظه جا میگیرد و رندر با حاشیه مناسب انجام میشود. در 12 GB میتوانید یک یا دو ControlNet را همراه با checkpoint در حافظه نگه دارید، بدون اینکه به انتقال لایهها نیاز باشد. در 24 GB میتوانید SDXL، refiner و upscaling را در یک workflow اجرا کنید و آموزش adapterهای LoRA را آغاز کنید؛ این کار به حافظه بسیار بیشتری از تولید تصویر نیاز دارد.
یک CPU VPS چه کارهایی میتواند و چه کارهایی نمیتواند انجام دهد
میتواند بیش از چیزی انجام دهد که انتظار دارید، اما کمتر از چیزی که تبلیغات القا میکنند. این مرز را دقیق مشخص کنید.
یک CPU VPS میتواند ComfyUI را نصب کند، رابط وب را ارائه دهد، کتابخانه مدلهای شما را نگه دارد، صف را اجرا کند و بدون وجود GPU تصویر تولید کند. با Stable Diffusion 1.5 در اندازه 512x512 و با 20 گام، در 8 vCPU مدرن و 16 GB RAM، برای هر تصویر تقریباً 60 تا 150 ثانیه زمان نیاز است. برای کاری که در طول شب اجرا میشود یا یک endpoint کمحجم تولید تصویر که پشت صف قرار دارد، این عملکرد واقعاً مناسب است.
یک CPU VPS برای کار تعاملی مناسب نیست. تکرار prompt یعنی تولید 20 تصویر در یک ساعت؛ اگر هر تصویر 13 دقیقه زمان ببرد، فقط 4 تصویر دریافت میکنید. همچنین نمیتواند فرایند آموزش را اجرا کند. Fine-tuning با LoRA روی CPU بهجای ساعت، برحسب روز اندازهگیری میشود؛ بنابراین آن را در دسترس فرض نکنید.
قاعده حافظه برای حالت فقط CPU با قاعده مربوط به GPU متفاوت است. وزنهای مدل در RAM سیستم بارگذاری میشوند؛ بنابراین به اندازه مدل بهعلاوه فضای کاری نیاز دارید: برای SDXL حدود 16 GB RAM و برای SD 1.5 حدود 8 GB. یک سیستم 4 GB، ComfyUI را راهاندازی میکند و سپس در میانه نخستین رندر، توسط out-of-memory killer متوقف میشود. در این حالت، فرایند همراه با Killed در dmesg ناپدید میشود و هیچ Python tracebackای وجود ندارد.
نصب ComfyUI روی یک ماشین مجهز به GPU
اینها فرمانهای upstream هستند. کار را با یک نصب پاک Ubuntu 24.04 آغاز کنید که درایور NVIDIA از قبل روی آن نصب شده باشد. ابتدا درایور را بررسی کنید، زیرا بدون این بررسی، همه خطاهای بعدی یکسان به نظر میرسند.
nvidia-smiاین فرمان باید جدولی شامل کارت شما و نسخه CUDA چاپ کند. command not found یا NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver یعنی درایور نصب نیست یا ماژول kernel پس از ارتقا بارگذاری نشده است. پیش از ادامه، این مشکل را برطرف کنید، زیرا ComfyUI بهصورت بیصدا به CPU برمیگردد و شما نرمافزار را مقصر میدانید.
sudo apt update
sudo apt install -y git python3-venv python3-pip wget
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txtاستفاده از محیط مجازی یک توصیه اختیاری نیست. PyTorch درخت وابستگی بزرگی را نصب میکند و نصب آن در سطح سیستم روی ماشینی که نرمافزارهای دیگری را اجرا میکند، باعث خراب شدن آن نرمافزارها میشود. پیش از ادامه، بررسی کنید که PyTorch بتواند کارت را شناسایی کند.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True بههمراه نام کارت شما یعنی پشته نرمافزاری درست کار میکند. False یعنی wheel نصبشده با درایور مطابقت ندارد؛ معمولاً به این دلیل که یک wheel مربوط به torch فقط برای CPU قبلاً در cache ذخیره شده است. با استفاده از index URL بالا، نصب را دوباره انجام دهید.
یک مدل دریافت کنید و برای فضای دیسک برنامهریزی کنید
ComfyUI هیچ weightی ندارد. checkpointها را در models/checkpoints، فایلهای VAE را در models/vae و adapterهای LoRA را در models/loras قرار دهید.
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensorsهمیشه .safetensors را به .ckpt ترجیح دهید. فایل .ckpt یک شیء pickleشده Python است و بارگذاری آن کدی را از سازنده فایل اجرا میکند. قالب safetensors فقط tensorها را نگه میدارد؛ بنابراین یک فایل مخرب نمیتواند چیزی را اجرا کند.
فضای ذخیرهسازی هزینهای است که افراد آن را فراموش میکنند. یک checkpoint پایه SDXL برابر با 6.94 GB است. refiner نیز 6 GB دیگر فضا میگیرد. حجم یک مدل ControlNet معمولاً 1.4 تا 2.5 GB، یک upscaler برابر با 60 تا 350 MB و یک LoRA برابر با 20 تا 400 MB است. هر کسی که از این کار لذت ببرد، ظرف یک هفته مدل پایه دوم و سوم را هم دانلود میکند. برای یک نصب عملیاتی، 100 GB فضای دیسک در نظر بگیرید و پوشه outputs را نیز پایش کنید: فایلهای PNG با ابعاد 1024x1024 هرکدام 1 تا 2 MB حجم دارند و یک batch بدون نظارت، بیسروصدا دیسک کوچکی را پر میکند. models/ و output/ را روی volumeای قرار دهید که بتوانید ظرفیت آن را افزایش دهید و از فایلهای JSON مربوط به workflowهای خود با چیزی مانند پشتیبانگیری افزایشی رمزنگاریشده در object storage نسخه پشتیبان تهیه کنید. weightها را میتوان دوباره دانلود کرد؛ workflowهایی را که تنظیم کردهاید، نمیتوان دوباره ایجاد کرد.
اجرا و دسترسی ایمن
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI روی پورت 8188 ارائه میشود. در سیستمی که فقط CPU دارد، --cpu را اضافه کنید؛ این گزینه مسیر CPU را اجباری میکند و مانع شکست اجرا بهدلیل نبود دستگاه CUDA میشود.
به 127.0.0.1 متصل شوید، نه به 0.0.0.0. ComfyUI صفحه ورود و حساب کاربری ندارد. هر چیزی که به این پورت دسترسی پیدا کند، میتواند job ایجاد کند، همه تصویرهای تولیدشده شما را بخواند و custom node نصب کند؛ این کار به اجرای کد دلخواه روی سرور شما منجر میشود. بهجای آن، از لپتاپ خود و از طریق یک تونل SSH به سرویس دسترسی پیدا کنید.
ssh -N -L 8188:127.0.0.1:8188 you@your-serverسپس http://127.0.0.1:8188 را بهصورت محلی باز کنید. اگر به دسترسی واقعی چندکاربره نیاز دارید، یک reverse proxy دارای احراز هویت را جلوی آن قرار دهید و برنامه را همچنان روی localhost محدود کنید. همین منطق درباره هر سرویس self-hosted بدون احراز هویت صدق میکند و الگوی استاندارد در استقرارهای Docker Compose روی VPS است.
اجرای مداوم تحت systemd
صف رندری که با بستهشدن نشست SSH متوقف میشود، سرویس نیست. /etc/systemd/system/comfyui.service را بنویسید.
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyuiوجود active (running) و یک خط گزارش شامل To see the GUI go to: http://127.0.0.1:8188 نشان میدهد که سرویس فعال است. توجه کنید که ExecStart مستقیماً مفسر داخل محیط مجازی را مشخص میکند، زیرا systemd فایل نمایه پوسته شما را اجرا نمیکند و activate هرگز رخ نمیدهد.
توصیه عملی متناسب با بودجه
اگر میخواهید تولید تصویر را امتحان کنید و هزینه برایتان از سرعت مهمتر است، یک CPU VPS با 16 GB RAM تهیه کنید، SD 1.5 را با وضوح 512x512 اجرا کنید و زمان 1 یا 2 دقیقه برای هر تصویر را بپذیرید. این گزینه، نقطه شروع واقعبینانهای است و هزینه آن کسری از هزینه هر گزینه مجهز به GPU است. همچنین تا زمانی که تصمیم میگیرید، مکان مناسبی برای میزبانی کتابخانه مدل و workflowها است.
اگر هر روز promptها را تکرار و اصلاح میکنید، یک GPU با حداقل 12 GB VRAM را ساعتی از یک GPU cloud اجاره کنید و پس از توقف کار آن را خاموش کنید. تولید تصویر کاری bursty است و GPU بیکاری که بهصورت ماهانه صورتحساب میشود، رایجترین دلیل هزینهکرد اضافی در این حوزه است. checkpointها را روی block storage ارزان نگه دارید و آنها را mount کنید.
اگر به افراد دیگر سرویس میدهید یا adapterهای LoRA را آموزش میدهید، به 24 GB VRAM و ماشینی نیاز دارید که همیشه روشن بماند. در این مرحله، همین ماشین معمولاً با اجرای یک local language model نیز ارزش هزینه خود را ایجاد میکند؛ این همان پیکربندی است که در میزبانی یک LLM با Ollama روی سرور شخصی توضیح داده شده است.
هر گزینهای را که انتخاب میکنید، پیش از اعتماد به هر عدد منتشرشده، عملکرد ماشین خود را اندازهگیری کنید. همان prompt را 5 بار در صف اجرا کنید و مقدار seconds-per-iteration را که ComfyUI در console چاپ میکند بخوانید. این عدد جایگاه واقعی شما را در این مقیاس مشخص میکند.
FAQ
آیا میتوانم Stable Diffusion را بدون GPU اجرا کنم؟
بله. ComfyUI با python main.py --cpu اجرا میشود و بدون وجود کارت گرافیک نیز تصاویر واقعی تولید میکند. برای Stable Diffusion 1.5 در وضوح 512x512 روی 8 vCPU مدرن، برای هر تصویر تقریباً 60 تا 150 ثانیه زمان در نظر بگیرید. برای SDXL در وضوح 1024x1024، این زمان به 10 تا 20 دقیقه میرسد. این عملکرد برای پردازشهای شبانه و endpointهای کمحجم مناسب است. اما برای تکرار و اصلاح prompt مناسب نیست و آموزش مدل عملاً امکانپذیر نخواهد بود.
برای SDXL به چه مقدار VRAM نیاز دارم؟
برای اجرای راحت SDXL در وضوح 1024x1024، 8 GB کافی است. در مقادیر کمتر، ComfyUI لایهها را بهصورت خودکار به RAM سیستم منتقل میکند و همچنان تا حدود 1 GB VRAM کار میکند؛ اما هر مرحلهای که منتقل شود، زمان اجرا را افزایش میدهد. 12 GB امکان نگهداری یک ControlNet در کنار checkpoint را فراهم میکند. 24 GB برای اجرای base، refiner و upscaling در یک workflow کافی است و حداقل عملی برای آموزش adapterهای LoRA محسوب میشود.
مدلها به چه مقدار فضای دیسک نیاز دارند؟
checkpoint پایه SDXL بهتنهایی 6.94 GB فضا میگیرد و refiner حدود 6 GB دیگر اضافه میکند. هر مدل ControlNet بین 1.4 تا 2.5 GB، هر adapter مربوط به LoRA بین 20 تا 400 MB و upscalerها حداکثر 350 MB فضا نیاز دارند. برای یک نصب عملیاتی با چند مدل پایه، 100 GB فضا در نظر بگیرید. دایرکتوری خروجی را نیز جداگانه monitor کنید، زیرا فایلهای PNG با وضوح 1024x1024 معمولاً 1 تا 2 MB حجم دارند.
آیا انتشار ComfyUI در اینترنت عمومی امن است؟
خیر. ComfyUI هیچ نوع احراز هویتی ندارد و سیستم custom-node آن کد Python را از طریق رابط کاربری نصب و اجرا میکند. بنابراین، یک port باز روی سرور شما به اجرای کد از راه دور منجر میشود. آن را به 127.0.0.1 متصل کنید، از طریق SSH tunnel و با ssh -N -L 8188:127.0.0.1:8188 you@your-server به آن دسترسی پیدا کنید و اگر بیش از یک نفر به دسترسی نیاز دارد، یک reverse proxy دارای احراز هویت در مقابل آن قرار دهید.
چرا render من بدون نمایش پیام خطا متوقف شد؟
اگر فرایند با Killed در dmesg ناپدید شود و هیچ Python tracebackای وجود نداشته باشد، عامل آن Linux out-of-memory killer است، نه اشکال ComfyUI. در یک سرور فقط-CPU، weightها در RAM سیستم قرار میگیرند. بنابراین SDXL حدود 16 GB و SD 1.5 حدود 8 GB، علاوه بر فضای کاری، نیاز دارد. RAM یا swap اضافه کنید، یا از مدل کوچکتر و وضوح پایینتر استفاده کنید.