Self-hosted AI-генератор: вимоги до GPU, CPU і диска
Чесна градація hardware для Stable Diffusion: CPU VPS генерує 512x512 за 1–2 хвилини, а SDXL 1024x1024 займає 10–20 хвилин. Є команди встановлення ComfyUI.
Що насправді потрібно self-hosted AI-генератору зображень
Self-hosted AI-генератор зображень — це один web-застосунок і один файл моделі. Застосунок — ComfyUI; він працює на будь-якому Linux-сервері. Саме модель визначає вимоги до hardware. Checkpoint класу SDXL — це один файл розміром 6.94 GB, який має розміщуватися в пам’яті GPU. Цей факт визначає весь бюджет, тому перед орендою сервера ознайомтеся з наведеною нижче градацією hardware.
Коротко: VPS лише з CPU може встановити програмне забезпечення та обслуговувати запити, а також генерувати зображення розміром 512x512 зі старішою моделлю Stable Diffusion 1.5. За оцінкою цього посібника за October 2026, одне зображення генерувалося за одну-дві хвилини, а SDXL у розмірі 1024x1024 — за десять-двадцять хвилин. Ці показники не перевірялися повторно на актуальному hardware. Це не означає, що конфігурація несправна. Це результат розрахунку, і нижче пояснюється чому.
Розмір моделі визначає вимоги до машини
Генерація зображення виконує цикл денойзингу. Під час рендерингу за 30 кроків денойзер, UNet у SDXL, обробляє зображення 30 разів, і на кожному проході зчитує всі ваги UNet. Два текстові енкодери запускаються один раз перед циклом, а VAE декодує зображення один раз після нього, тому вони не входять до вартості кожного кроку. UNet у SDXL у режимі half precision містить 5.14 GB ваг, тому в цьому спрощеному представленні рендеринг за 30 кроків переміщує через пам’ять приблизно 154 GB ваг, перш ніж ви побачите зображення. Проміжні тензори додають до цього обсягу ще більше.
GPU із 24 GB відеопам’яті (VRAM — пам’яті, розташованої поруч із графічним чипом) зчитує дані зі швидкістю сотні гігабайтів на секунду та одночасно вміщує всі 6.9 GB. CPU VPS зчитує дані із системної RAM зі швидкістю десятки гігабайтів на секунду. Різниця у швидкості залежить від CPU і GPU, а не лише від обсягу їхньої пам’яті. Це той самий аргумент щодо пропускної здатності пам’яті, який визначає продуктивність текстових моделей. Варто також прочитати коли VPS із GPU справді виправдовує витрати.
Генерація зображень має одну важливу відмінність від генерації тексту. Chat-модель передає токени потоком, тому повільна машина все ще здається придатною для роботи: слова з’являються під час читання. Зображення з’являється лише після завершення останнього кроку. Повільна робота означає, що вам доводиться дивитися на індикатор виконання.
Лінійка апаратного забезпечення з реальними числами
Наведений нижче блок зберігає оцінки з цього посібника за July 2026 для одного зображення SDXL у форматі 1024x1024, 30 кроків, із семплером Euler. Ці історичні показники часу не перевірялися повторно на сучасному обладнанні. Сприймайте їх як порядок величини. Семплер, кількість кроків і роздільна здатність змінюють ці значення.
Дані, на яких побудовано графік
[
{
"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 секунд. Саме за це скорочення часу ви платите.
Ось як слід читати цю лінійку. Якщо VRAM менше 8 GB, SDXL усе одно працює, оскільки ComfyUI спільно керує VRAM і системною RAM та автоматично вивантажує ваги моделі. Станом на October 2026 у README проєкту описано запуск моделей лише з 4 GB VRAM і 8 GB системної RAM завдяки асинхронній потоковій передачі ваг. Більший обсяг VRAM дає змогу використовувати ControlNet, refiner і upscaling без вивантаження; обсяг того, що поміщається в пам’ять, залежить від workflow. Для навчання потрібно менше: у посібнику з навчання SDXL для trainer kohya-ss sd-scripts зазначено, що LoRA можна навчати з 8 GB пам’яті GPU, а 10 GB рекомендовано. Для цього потрібно навчати лише U-Net, увімкнути gradient checkpointing, кешувати вихідні дані text encoder і latents, використовувати 8-bit optimizer або Adafactor та зменшити LoRA dim до 4–8 на карті з 8 GB. У посібнику з LoRA для GUI kohya_ss, який використовує ці скрипти, рекомендації обережніші: для навчання LoRA радять GPU щонайменше з 12 GB пам’яті.
Що може і чого не може CPU VPS
Він може більше, ніж очікують, і менше, ніж обіцяє маркетинг. Важливо чітко розуміти цю межу.
На CPU VPS можна встановити ComfyUI, обслуговувати вебінтерфейс, зберігати бібліотеку моделей, запускати чергу та генерувати зображення взагалі без GPU. Для Stable Diffusion 1.5 у роздільності 512x512 за 20 кроків оцінка з цього посібника за жовтень 2026 року становила приблизно 60–150 секунд на одне зображення на 8 сучасних vCPU і 16 GB RAM. Для пакетного завдання, яке виконується протягом ночі, або малонавантаженого endpoint для генерації зображень за чергою цього цілком достатньо.
CPU VPS погано підходить для інтерактивної роботи. Ітеративна робота з prompt означає двадцять генерацій за годину, а за історичної оцінки в тринадцять хвилин на одну генерацію ви отримаєте лише чотири. Для навчання використовуйте GPU.
Правило щодо пам’яті для режиму лише CPU відрізняється від правила для GPU. Ваги моделі завантажуються в системну RAM, тому передбачте обсяг для моделі та робочих даних; 16 GB для SDXL і 8 GB для SD 1.5 — це планові орієнтири, а не фіксовані вимоги. На системі з 4 GB може закінчитися пам’ять, але самого обсягу RAM недостатньо, щоб визначити, чи і коли Linux завершить процес. Важливі swap, memory limits і політика виділення пам’яті. За режиму overcommit 2 Linux зазвичай відхиляє виділення, що перевищують ліміт commit, а не завершує процес у момент доступу до цих сторінок.
Встановлення 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 module. Виправте це перед продовженням, оскільки стандартний шлях ComfyUI для NVIDIA не працює без доступного CUDA-пристрою; для виконання на CPU потрібен --cpu. Наведені нижче wheels для CUDA 13.0 потребують драйвера NVIDIA версії 580 або новішої.
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 разом із назвою вашої відеокарти означає, що стек працює. Якщо CUDA недоступна, ця команда завершується помилкою під час запиту назви відеокарти. Перевірте драйвер, доступність GPU і встановлену збірку PyTorch перед повторною інсталяцією CUDA wheels.
Отримайте моделі та сплануйте дисковий простір
ComfyUI не містить ваг моделей. 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. Checkpoint-файл на основі pickle може виконати код через необмежений loader; поточна версія ComfyUI використовує обмежений loader PyTorch weights_only=True для таких файлів. Формат safetensors зберігає tensors без механізму виконання коду, властивого pickle.
Обсяг сховища часто недооцінюють. Один базовий checkpoint SDXL займає 6.94 GB. Refiner займає ще 6 GB. Модель SDXL ControlNet займає від 320 MB для малої моделі Canny до 2.5 GB для повної моделі в режимі half precision. Upscaler невеликий: стандартна модель Real-ESRGAN x4plus займає 67 MB, її anime-модель — 17.9 MB, а anime video-модель — 2.5 MB. Розмір LoRA становить від десятків мегабайт до 787 MB для адаптерів Hyper-SDXL від ByteDance. Кожен, хто активно користується цим інструментом, завантажує другу й третю базову модель протягом тижня. Для робочої інсталяції заплануйте 100 GB дискового простору та стежте також за каталогом outputs: розмір PNG залежить від вмісту зображення й метаданих, а пакетна обробка без нагляду непомітно заповнює невеликий диск. Розмістіть models/ і output/ на томі, який можна розширити, а файли workflow у форматі JSON резервно копіюйте, наприклад, за допомогою зашифрованого інкрементного резервного копіювання в object storage. Ваги моделей можна завантажити повторно. Налаштовані вами 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 тепер є облікові записи, але жоден із них не захищає ваш сервер. Вхід у розділі User у меню Settings виконує вхід до облікового запису Comfy. Він працює і для локального встановлення: документація Comfy перелічує вхід за допомогою email, Google, GitHub та API key. У документації цей обліковий запис описано як спосіб отримати доступ до партнерських нод і підписок Comfy Cloud. Ніде не вказано, що він захищає ваш власний сервер паролем. Прапорець --multi-user лише вмикає окреме сховище для кожного користувача. Станом на October 2026 сервер отримує ідентифікатор користувача із заголовка запиту comfy-user і не перевіряє жодного пароля. Будь-хто, хто має доступ до порту, може ставити завдання в чергу та отримувати згенеровані зображення. З параметром --enable-manager встановлення custom nodes також виконує код на вашому сервері відповідно до налаштувань безпеки Manager. Поточні стандартні налаштування Manager забороняють довільні Git URL і окреме встановлення через pip. Увімкнення цих способів потребує явних прапорців і listener на loopback-адресі. Встановлення зареєстрованих нод залишається доступним відповідно до стандартної політики безпеки. Підключайтеся до ComfyUI через 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
Черга рендерингу, яка завершує роботу після закриття SSH-сеансу, не є сервісом. Запускайте її від імені користувача comfy без права входу, а не від свого облікового запису: custom nodes — це код, і цей код не повинен мати доступу до вашого домашнього каталогу. Створіть користувача та перемістіть інсталяцію до його домашнього каталогу:
sudo useradd --system --create-home --home-dir /home/comfy --shell /usr/sbin/nologin comfy
sudo mv ~/ComfyUI /home/comfy/
sudo chown -R comfy:comfy /home/comfy/ComfyUIПісля переміщення створіть virtual environment заново, оскільки встановлені скрипти містять абсолютні шляхи до попереднього розташування.
sudo -u comfy python3 -m venv --clear /home/comfy/ComfyUI/venv
sudo -u comfy /home/comfy/ComfyUI/venv/bin/python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
sudo -u comfy /home/comfy/ComfyUI/venv/bin/python -m pip install -r /home/comfy/ComfyUI/requirements.txtПотім запишіть /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 не виконує профіль вашої оболонки, а activate ніколи не відбувається.
Практична рекомендація залежно від бюджету
Якщо ви хочете спробувати генерацію зображень і вартість для вас важливіша за швидкість, виберіть CPU VPS із 16 GB RAM, запускайте SD 1.5 у роздільній здатності 512x512 і виміряйте час рендерингу, перш ніж братися за певне робоче навантаження. Це також зручне місце для зберігання бібліотеки моделей і workflow, поки ви визначаєтеся.
Якщо ви щодня перебираєте промпти, орендуйте в GPU cloud GPU щонайменше з 12 GB VRAM погодинно та вимикайте його, коли припиняєте роботу. Генерація зображень має нерівномірне навантаження, а оплачуваний щомісяця бездіяльний GPU — найпоширеніший спосіб переплатити в цій ситуації. Зберігайте checkpoint-файли на недорогому block storage і монтуйте його.
Якщо ви обслуговуєте інших користувачів або регулярно навчаєте LoRA-адаптери, плануйте 24 GB VRAM і машину, яку ви триматимете постійно. У посібнику sd-scripts для SDXL зазначено, що LoRA training можна виконувати з 8 GB, а рекомендований обсяг становить 10 GB, якщо для обох значень використати його налаштування для економії пам’яті. У посібнику kohya_ss GUI для LoRA потрібно щонайменше 12 GB. У посібнику також описано fine-tuning SDXL із 24 GB за batch size 1; рекомендовано навчання лише U-Net, gradient checkpointing, кешовані виходи text encoder і latents, а також Adafactor. Це умовна конфігурація, а не універсальна вимога до обсягу пам’яті для навчання всієї моделі. На цьому етапі та сама машина зазвичай також виправдовує витрати, якщо запускати на ній локальну мовну модель. Саме таку конфігурацію описано в self-hosting LLM за допомогою Ollama.
Який би варіант ви не обрали, виміряйте показники на власній машині, перш ніж довіряти будь-яким опублікованим даним. Додайте один і той самий промпт у чергу п’ять разів і прочитайте кількість секунд на ітерацію, яку ComfyUI виводить у своїй консолі. Це ваша фактична позиція на цій шкалі.
FAQ
Чи можна запускати Stable Diffusion без GPU?
Так. ComfyUI працює з python main.py --cpu і генерує справжні зображення без встановленої відеокарти. Згідно з оцінками цього посібника за October 2026, для Stable Diffusion 1.5 у роздільній здатності 512x512 це становило приблизно від 60 до 150 секунд на зображення, а для SDXL у роздільній здатності 1024x1024 — від десяти до двадцяти хвилин на 8 сучасних vCPU. Ці показники не перевірялися повторно на актуальному обладнанні. Цього достатньо для нічної пакетної обробки та endpoint із невеликим обсягом запитів. Для ітераційної роботи з промптами та навчання використовуйте GPU.
Скільки VRAM потрібно для SDXL?
ComfyUI автоматично переміщує ваги моделі до системної RAM, тому сам обсяг VRAM не визначає фіксованого мінімуму для кожного workflow SDXL. Станом на October 2026 у README описано запуск моделей із використанням від 4 GB VRAM і 8 GB системної RAM за допомогою асинхронного передавання ваг. ControlNet, refiner і upscaling збільшують потребу в пам’яті. У посібнику kohya-ss sd-scripts зазначено, що LoRA training для SDXL можна виконувати з 8 GB, а 10 GB рекомендовано, якщо використати його налаштування для економії пам’яті. Водночас у посібнику kohya_ss GUI для LoRA потрібно щонайменше 12 GB. У посібнику sd-scripts описано fine-tuning із 24 GB за batch size 1; рекомендовано навчання лише U-Net, gradient checkpointing, кешовані виходи text encoder і latents, а також Adafactor. Це не встановлює універсальної вимоги 24 GB для навчання всієї моделі.
Скільки дискового простору потрібно моделям?
Лише базовий checkpoint SDXL має розмір 6.94 GB, а refiner додає ще приблизно 6 GB. Моделі SDXL ControlNet у режимі half precision займають від 320 MB до 2.5 GB кожна, LoRA-адаптери — від десятків мегабайт до 787 MB, а upscaler-файли Real-ESRGAN — від 2.5 MB до 67 MB. Передбачте 100 GB для робочої інсталяції з кількома базовими моделями та окремо контролюйте каталог output, оскільки розмір PNG залежить від вмісту зображення та метаданих.
Чи безпечно відкривати ComfyUI в публічному інтернеті?
Ні. Вхід до облікового запису Comfy у налаштуваннях ComfyUI працює в локальній інсталяції, але надає доступ до партнерських нод і хмарних підписок Comfy. У документації Comfy нічого не вказує на те, що цей вхід захищає ваш сервер. Прапорець --multi-user лише розділяє сховище між користувачами й не перевіряє жоден пароль. Якщо увімкнено ComfyUI-Manager, дозволене встановлення custom nodes виконує Python-код на вашому сервері. Налаштування безпеки Manager обмежують способи встановлення, але не автентифікують доступ до ComfyUI. Прив’яжіть його до 127.0.0.1, підключайтеся через SSH tunnel із ssh -N -L 8188:127.0.0.1:8188 you@your-server і розмістіть перед ним reverse proxy з автентифікацією, якщо доступ потрібен більш ніж одній особі.
Чому мій рендер було завершено без повідомлення про помилку?
Зникнення процесу з Killed без traceback Python саме по собі не доводить, що процес було завершено через нестачу пам’яті. Перевірте dmesg або журнал ядра на наявність повідомлення OOM із назвою процесу. На машині без GPU ваги зберігаються в системній RAM, але потрібний обсяг пам’яті залежить від моделі, точності обчислень, роздільної здатності та workflow. Обсяг RAM, swap, обмеження пам’яті та політика overcommit визначають, чи завершиться виділення пам’яті помилкою, чи процес буде завершено. У режимі overcommit 2 Linux зазвичай повертає помилки виділення замість завершення процесу, коли той звертається до сторінок пам’яті. Якщо журнали підтверджують вичерпання пам’яті, додайте RAM, перегляньте swap і обмеження пам’яті або перейдіть на меншу модель і нижчу роздільну здатність.