سختافزار مورد نیاز برای اجرای Stable Diffusion
برای اجرای ComfyUI و مدلهای SDXL به چه سختافزاری نیاز دارید؟ بررسی صادقانه عملکرد CPU VPS در برابر GPU و راهنمای مدیریت فضای دیسک برای تولید تصاویر هوش مصنوعی بدون خطا.
آنچه یک مولد تصویر هوش مصنوعی خودمیزبان واقعاً نیاز دارد
یک مولد تصویر هوش مصنوعی خودمیزبان شامل یک وباپلیکیشن و یک فایل مدل است. اپلیکیشن مورد نظر ComfyUI است که روی هر سیستم لینوکسی اجرا میشود. مدل همان چیزی است که سختافزار مورد نیاز شما را تعیین میکند. یک چکپوینت در کلاس SDXL یک فایل واحد 6.94 GB است که باید در حافظه GPU قرار بگیرد. همین یک واقعیت، کل بودجه شما را مشخص میکند؛ بنابراین پیش از اجاره هرگونه سرور، نردبان سختافزاری زیر را مطالعه کنید.
خلاصه صادقانه: یک VPS فقط با CPU میتواند نرمافزار را نصب و سرویسدهی کند و قادر است تصاویر 512x512 را با مدل قدیمیتر Stable Diffusion 1.5 در یک یا دو دقیقه برای هر تصویر تولید کند. همان سرور اگر بخواهد SDXL را در ابعاد 1024x1024 اجرا کند، برای هر تصویر به ده تا بیست دقیقه زمان نیاز دارد. این یک پیکربندی خراب نیست؛ این صرفاً یک محاسبه ریاضی است و این راهنما آن را توضیح میدهد.
چرا اندازه مدل، سختافزار مورد نیاز را تعیین میکند
تولید تصویر شامل یک حلقه حذف نویز (denoising loop) است. یک رندر 30 مرحلهای، مدل کامل را 30 بار روی تصویر اعمال میکند و هر مرحله تمام وزنها را میخواند. مدل SDXL در حالت دقت نیمبیت (half precision) حدود 6.9 گیگابایت وزن دارد، بنابراین یک رندر 30 مرحلهای پیش از آنکه تصویری مشاهده کنید، حدود 200 گیگابایت داده را در حافظه جابهجا میکند.
یک GPU با 24 گیگابایت حافظه ویدیویی (VRAM، حافظهای که در کنار تراشه گرافیکی لحیم شده است) با سرعت صدها گیگابایت بر ثانیه دادهها را میخواند و تمام 6.9 گیگابایت را بهطور همزمان در خود نگه میدارد. یک VPS مبتنی بر CPU، حافظه RAM سیستم را با سرعت دهها گیگابایت بر ثانیه میخواند و فاقد سختافزار ماتریسی برای عملیات کانولوشن (convolutions) است؛ در نتیجه، همان حلقه با سرعتی یک تا دو مرتبه کمتر اجرا میشود. این همان استدلال پهنایباند حافظه است که بر مدلهای متنی نیز حاکم است و ارزش دارد که در کنار زمانی که یک VPS دارای GPU واقعاً ارزش هزینه کردن را دارد مطالعه شود.
تولید تصویر از یک جهت مهم با تولید متن تفاوت دارد. یک مدل چت، توکنها را بهصورت جریانی (stream) ارسال میکند، بنابراین یک ماشین کند همچنان قابل استفاده به نظر میرسد زیرا کلمات همزمان با خواندن شما ظاهر میشوند. اما تصویر تنها زمانی ظاهر میشود که آخرین مرحله به پایان برسد. کند بودن در اینجا به معنای خیره شدن به نوار پیشرفت (progress bar) است.
نردبان سختافزاری، با اعداد واقعی
بلاک زیر ارقام معمول برای یک تصویر 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 گیگابایتی 9 ثانیه زمان میبرد. این همان شکافی است که با خرید سختافزار قویتر پر میکنید.
نردبان را اینگونه بخوانید. زیر 8 گیگابایت VRAM، مدل SDXL همچنان اجرا میشود، زیرا ComfyUI بهطور خودکار لایهها را به RAM سیستم منتقل (offload) میکند و میتواند کارتهایی با حافظه حتی 1 گیگابایت را نیز مدیریت کند. این انتقال در هر گام زمانبر است، بنابراین یک کارت 6 گیگابایتی در هر تصویر به یک دقیقه نزدیکتر است تا سی ثانیه. در 8 گیگابایت، مدل پایه جا میگیرد و رندر وضعیت مطلوبی دارد. در 12 گیگابایت میتوانید یک یا دو ControlNet را در کنار checkpoint بدون نیاز به offloading نگه دارید. در 24 گیگابایت میتوانید SDXL را به همراه refiner و upscaling در یک workflow اجرا کنید و همچنین میتوانید آموزش LoRA adapter را آغاز کنید، که به حافظه بسیار بیشتری نسبت به تولید تصویر نیاز دارد.
آنچه یک CPU VPS میتواند و نمیتواند انجام دهد
یک CPU VPS میتواند کارهایی فراتر از انتظار کاربران انجام دهد، اما تواناییهای آن کمتر از آن چیزی است که در تبلیغات ادعا میشود. باید مرز مشخصی برای این موضوع قائل شد.
یک CPU VPS میتواند ComfyUI را نصب کند، رابط کاربری وب را میزبانی کند، کتابخانه مدلهای شما را نگه دارد، صف پردازش را مدیریت کند و بدون وجود هیچگونه GPU، تصویر تولید کند. با استفاده از Stable Diffusion 1.5 در ابعاد 512x512 و 20 مرحله (steps)، انتظار میرود روی 8 هسته vCPU مدرن با 16 گیگابایت رم، تولید هر تصویر حدود 60 تا 150 ثانیه زمان ببرد. برای کارهای دستهای (batch job) که در طول شب اجرا میشوند یا یک endpoint تصویر با حجم پایین که پشت یک صف قرار دارد، این عملکرد کاملاً قابلقبول است.
یک CPU VPS نمیتواند تجربه کار تعاملی را فراهم کند. تکرار پرامپت (Prompt iteration) به معنای بیست رندر در یک ساعت است، اما با زمان سیزده دقیقه برای هر رندر، شما تنها چهار تصویر خواهید داشت. همچنین این سرورها برای آموزش (train) مناسب نیستند. فاینتیون کردن LoRA روی CPU به جای ساعت، با مقیاس روز اندازهگیری میشود، بنابراین آن را غیرقابلدسترس در نظر بگیرید.
قانون حافظه برای سیستمهای فقط-CPU با قانون GPU متفاوت است. وزنهای مدل در رم سیستم بارگذاری میشوند، بنابراین شما به اندازه حجم مدل به علاوه فضای کاری نیاز دارید: حدود 16 گیگابایت رم برای SDXL و حدود 8 گیگابایت برای SD 1.5. یک سرور با 4 گیگابایت رم، ComfyUI را اجرا میکند اما در میانه اولین رندر توسط قابلیت out-of-memory killer متوقف میشود؛ این اتفاق به صورت ناپدید شدن پردازش با کد خروج Killed در dmesg و بدون هیچگونه traceback پایتون نمایان میشود.
نصب ComfyUI روی یک ماشین دارای GPU
اینها دستورات بالادستی هستند. کار را از یک نصب تمیز Ubuntu 24.04 که درایور NVIDIA از قبل روی آن موجود است، شروع کنید. ابتدا درایور را تأیید کنید، زیرا بدون این بررسی، تمام خطاهای بعدی مشابه به نظر میرسند.
nvidia-smiاین دستور باید جدولی شامل کارت گرافیک شما و نسخه CUDA را چاپ کند. command not found یا NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver به این معنی است که درایور موجود نیست یا ماژول هسته پس از ارتقا بارگذاری نشده است. پیش از ادامه، این مشکل را رفع کنید، زیرا 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استفاده از محیط مجازی (virtual environment) یک توصیه اختیاری نیست. PyTorch درخت وابستگیهای بزرگی دارد و نصب آن در سطح سیستم روی ماشینی که سرویسهای دیگری را اجرا میکند، باعث خرابی سایر بخشها خواهد شد. پیش از ادامه، تأیید کنید که PyTorch کارت گرافیک را شناسایی میکند.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True به همراه نام کارت شما به این معنی است که پشته (stack) به درستی کار میکند. False به این معنی است که پکیج (wheel) نصبشده با درایور مطابقت ندارد؛ این اتفاق معمولاً زمانی رخ میدهد که یک نسخه CPU-only از torch از قبل در حافظه کش موجود بوده است. با استفاده از index URL بالا، آن را مجدداً نصب کنید.
دریافت مدل و برنامهریزی برای دیسک
نرمافزار ComfyUI بدون وزنهای (weights) پیشفرض عرضه میشود. فایلهای Checkpoint در مسیر models/checkpoints، فایلهای VAE در models/vae و آداپتورهای 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 در واقع یک شیء Python است که به صورت pickled ذخیره شده و بارگذاری آن باعث اجرای کدهای سازنده فایل میشود. فرمت safetensors فقط شامل تانسورها است، بنابراین یک فایل مخرب نمیتواند هیچ کدی را اجرا کند.
فضای ذخیرهسازی هزینهای است که معمولاً نادیده گرفته میشود. یک Checkpoint پایه برای SDXL حجمی معادل 6.94 GB دارد. مدل Refiner نیز 6 GB دیگر اشغال میکند. هر مدل ControlNet بین 1.4 تا 2.5 GB، یک Upscaler بین 60 تا 350 MB و یک LoRA بین 20 تا 400 MB فضا نیاز دارد. هر کسی که از این ابزار استفاده میکند، معمولاً در کمتر از یک هفته مدلهای پایه دوم و سوم را نیز دانلود میکند. برای یک نصب کاربردی، حداقل 100 GB فضای دیسک در نظر بگیرید و دایرکتوری خروجیها را نیز زیر نظر داشته باشید: فایلهای PNG با ابعاد 1024x1024 هر کدام 1 تا 2 MB حجم دارند و اجرای دستهای (batch) بدون نظارت، میتواند بهسرعت یک دیسک کوچک را پر کند. مسیرهای models/ و output/ را روی یک Volume با قابلیت افزایش ظرفیت قرار دهید و از فایلهای JSON گردشکار (workflow) خود با ابزارهایی مانند پشتیبانگیری افزایشی رمزنگاریشده در فضای ذخیرهسازی شیء محافظت کنید. وزنهای مدل قابل دانلود مجدد هستند، اما گردشکارهایی که تنظیم کردهاید، خیر.
اجرا و دسترسی ایمن
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188سرویس ComfyUI روی پورت 8188 اجرا میشود. در سرورهایی که فقط از CPU استفاده میکنند، از پرچم --cpu استفاده کنید؛ این کار باعث میشود به جای خطا دادن به دلیل نبود دستگاه CUDA، مسیر پردازش با CPU اجباری شود.
سرویس را روی 127.0.0.1 متصل (bind) کنید، نه روی 0.0.0.0. برنامه ComfyUI فاقد صفحه ورود و حساب کاربری است. هر کسی که به این پورت دسترسی پیدا کند، میتواند درخواستها را در صف قرار دهد، تمام تصاویر تولید شده توسط شما را مشاهده کند و custom nodeها را نصب نماید؛ این یعنی اجرای کد دلخواه (arbitrary code execution) روی سرور شما. برای دسترسی، از یک SSH tunnel از لپتاپ خود استفاده کنید.
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
یک صف پردازش (render queue) که با بستن نشست 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 comfyuiactive (running) و مشاهده خطی در لاگ با محتوای To see the GUI go to: http://127.0.0.1:8188 به معنای فعال بودن سرویس است. توجه داشته باشید که ExecStart مفسر پایتون را مستقیماً از داخل محیط مجازی (virtual environment) فراخوانی میکند، زیرا systemd پروفایل shell شما را اجرا نمیکند و activate هرگز اتفاق نمیافتد.
توصیه عملی بر اساس بودجه
اگر میخواهید تولید تصویر را امتحان کنید و هزینه برایتان مهمتر از سرعت است، یک VPS با پردازنده مرکزی (CPU) و 16 GB رم تهیه کنید، مدل SD 1.5 را با ابعاد 512x512 اجرا کنید و بپذیرید که تولید هر تصویر یک یا دو دقیقه زمان میبرد. این صادقانهترین نقطه شروع است و هزینهاش کسری از قیمت هر سیستمی است که GPU دارد. این همچنین بهترین مکان برای میزبانی کتابخانه مدلها و گردشکارها (workflows) در زمانی است که در حال تصمیمگیری هستید.
اگر روزانه روی پرامپتها کار میکنید، یک GPU با حداقل 12 GB حافظه VRAM را بهصورت ساعتی از یک سرویسدهنده ابری GPU اجاره کنید و هنگام پایان کار، آن را خاموش کنید. تولید تصویر کاری است که بهصورت انفجاری انجام میشود و داشتن یک GPU بلااستفاده با صورتحساب ماهانه، رایجترین راه برای هدر دادن بودجه است. فایلهای checkpoint را روی فضای ذخیرهسازی ارزان (block storage) نگه دارید و آنها را mount کنید.
اگر به دیگران سرویس میدهید یا آداپتورهای LoRA را آموزش میدهید، به 24 GB حافظه VRAM و دستگاهی که همیشه در دسترس باشد نیاز دارید. در آن مرحله، همان سیستم معمولاً با اجرای یک مدل زبانی محلی نیز هزینههای خود را پوشش میدهد؛ این همان پیکربندی است که در میزبانی محلی LLM با Ollama توضیح داده شده است.
هر سطحی را که انتخاب میکنید، پیش از باور کردن هر عدد منتشرشده، دستگاه خود را بسنجید. یک پرامپت مشابه را پنج بار در صف قرار دهید و تعداد ثانیه-به-تکرار (seconds-per-iteration) که ComfyUI در کنسول خود چاپ میکند را بخوانید. آن عدد، جایگاه واقعی شما در این مسیر است.
FAQ
آیا میتوانم Stable Diffusion را بدون GPU اجرا کنم؟
بله. ComfyUI با python main.py --cpu اجرا میشود و بدون نیاز به کارت گرافیک، تصاویر واقعی تولید میکند. برای Stable Diffusion 1.5 در ابعاد 512x512، حدود 60 تا 150 ثانیه و برای SDXL در ابعاد 1024x1024، حدود ده تا بیست دقیقه زمان برای هر تصویر روی 8 عدد vCPU مدرن در نظر بگیرید. این سرعت برای پردازشهای دستهای شبانه و endpointهای با حجم پایین مناسب است. این روش برای تکرار سریع پرامپتها (prompt iteration) کارایی ندارد و آموزش مدل (training) نیز کاملاً غیرممکن است.
برای SDXL به چه مقدار VRAM نیاز دارم؟
8 گیگابایت VRAM برای اجرای راحت SDXL در ابعاد 1024x1024 کافی است. در مقادیر کمتر، ComfyUI بهطور خودکار لایهها را به RAM سیستم منتقل میکند و همچنان تا حدود 1 گیگابایت VRAM کار میکند، اما هر مرحلهٔ منتقلشده زمانبر است. 12 گیگابایت VRAM به شما اجازه میدهد یک ControlNet را در کنار checkpoint اصلی نگه دارید و 24 گیگابایت VRAM برای اجرای مدل پایه، refiner و upscaling در یک workflow واحد کافی است و حداقل مقدار عملی برای آموزش LoRA adapterها محسوب میشود.
مدلها به چه مقدار فضای دیسک نیاز دارند؟
فایل checkpoint پایه برای SDXL بهتنهایی 6.94 گیگابایت است و مدل refiner حدود 6 گیگابایت دیگر به آن اضافه میکند. مدلهای ControlNet هر کدام 1.4 تا 2.5 گیگابایت، LoRA adapterها 20 تا 400 مگابایت و upscalerها تا 350 مگابایت فضا اشغال میکنند. برای یک نصب کاری با چند مدل پایه، 100 گیگابایت فضا در نظر بگیرید و دایرکتوری خروجی را جداگانه مدیریت کنید، زیرا هر فایل PNG در ابعاد 1024x1024 بین 1 تا 2 مگابایت حجم دارد.
آیا قرار دادن ComfyUI در معرض اینترنت عمومی امن است؟
خیر. ComfyUI هیچگونه سیستم احراز هویتی ندارد و سیستم custom-node آن، کدهای Python را از طریق رابط کاربری نصب و اجرا میکند؛ بنابراین باز بودن پورت به معنای امکان اجرای کد از راه دور (RCE) روی سرور شماست. آن را روی 127.0.0.1 محدود کنید، از طریق تونل SSH با ssh -N -L 8188:127.0.0.1:8188 you@your-server به آن دسترسی پیدا کنید و اگر بیش از یک نفر نیاز به دسترسی دارد، یک reverse proxy با قابلیت احراز هویت در مقابل آن قرار دهید.
چرا رندر من بدون هیچ پیام خطایی متوقف میشود؟
ناپدید شدن پردازش با Killed در dmesg بدون هیچ traceback از Python، به دلیل عملکرد Linux out-of-memory killer است و باگ ComfyUI نیست. در سیستمهای بدون GPU، وزنهای مدل در RAM سیستم قرار میگیرند؛ بنابراین SDXL به حدود 16 گیگابایت و SD 1.5 به حدود 8 گیگابایت RAM، بهعلاوه فضای کاری نیاز دارند. RAM را افزایش دهید، swap اضافه کنید یا از مدلهای کوچکتر و رزولوشن پایینتر استفاده کنید.