До основного вмісту

Stable Diffusion на VPS: генерація зображень на сервері

AI-агенти на VDS · 19.04.2026 · 4 хв читання
Ілюстрація до статті «Stable Diffusion на VPS: генерація зображень на сервері»

Stable Diffusion на VPS з GPU

Stable Diffusion — open-source модель генерації зображень. Для комфортної роботи потрібна GPU-нода з NVIDIA VRAM від 6 ГБ. Генерація на CPU працює, але займає 5-15 хвилин на зображення.

Вимоги до сервера

  • GPU VPS: NVIDIA RTX 3060/3080 (8+ ГБ VRAM) або RunPod/Vast.ai
  • RAM: 16 ГБ мінімум, Диск: 50+ ГБ
  • ОС: Ubuntu 22.04

Встановлення AUTOMATIC1111

apt update && apt install -y wget git python3 python3-pip python3-venv libgl1 libglib2.0-0
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
# Завантажити модель SDXL
cd models/Stable-diffusion
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors
cd ../..
./webui.sh --api --listen --port 7860

Systemd-сервіс

[Unit]
Description=Stable Diffusion WebUI
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/stable-diffusion-webui
ExecStart=/opt/stable-diffusion-webui/webui.sh --api --listen --port 7860
Restart=on-failure

[Install]
WantedBy=multi-user.target

API: генерація через Python

import requests, base64

def generate_image(prompt: str, steps: int = 20) -> bytes:
    payload = {
        "prompt": prompt,
        "negative_prompt": "blurry, low quality",
        "steps": steps,
        "width": 512,
        "height": 512,
        "cfg_scale": 7,
        "sampler_name": "DPM++ 2M Karras"
    }
    r = requests.post("http://localhost:7860/sdapi/v1/txt2img", json=payload)
    return base64.b64decode(r.json()["images"][0])

img = generate_image("professional server photo, dark background, 4k")
with open("output.png", "wb") as f:
    f.write(img)
Без GPU? Використовуйте RunPod.io (~$0.2/год за RTX 4090) або Vast.ai — запускайте лише тоді, коли потрібно.
Безпека: Ніколи не відкривайте порт 7860 без автентифікації. Використовуйте Nginx з HTTP Basic Auth.

Часті помилки під час запуску

Майже всі проблеми з локальним Stable Diffusion зводяться до нестачі VRAM або неправильно встановлених драйверів CUDA — сама модель рідко буває джерелом збою.

CUDA out of memory. Tried to allocate ... GiB

Помилка означає, що відеопам'яті не вистачило на обране розширення, розмір батчу чи конкретну модель. Зменшіть width/height, додайте прапорець --medvram або --lowvram під час запуску webui.sh, або закрийте інші процеси, що займають GPU (перевірте через nvidia-smi).

RuntimeError: Torch is not able to use GPU

Веб-інтерфейс запустився, але не бачить відеокарту. Зазвичай причина — розбіжність версії CUDA, під яку зібрано PyTorch, і версії драйвера NVIDIA на сервері. Перевірте вивід nvidia-smi і переконайтеся, що версія драйвера підтримує версію CUDA toolkit, вказану в requirements проєкту.

AUTOMATIC1111, ComfyUI та InvokeAI: що обрати

Критерій AUTOMATIC1111 ComfyUI InvokeAI
Інтерфейс Форми та вкладки Візуальний граф вузлів Форми, ближче до продукту
Гнучкість пайплайна Середня, через розширення Максимальна, кожен вузол налаштовується Середня, фокус на зручності
Поріг входу Низький Вищий, потрібно розуміти граф Низький
REST API "з коробки" Є, через --api Є, але формат складніший Є

Коли Stable Diffusion на VPS не підходить

  • Потрібні поодинокі генерації час від часу — оренда погодинного GPU у хмарних провайдерів обійдеться дешевше за постійно орендований сервер.
  • Потрібна гарантована затримка в одиниці секунд при високому навантаженні — під пікові навантаження потрібен пул GPU, а не одна карта.
  • Команда не готова обслуговувати драйвери CUDA і стежити за сумісністю версій PyTorch — managed-сервіси знімають це навантаження.
  • Бюджет не покриває GPU-сервер навіть із погодинною орендою — на CPU генерація одного зображення займає хвилини, що не підходить для інтерактивних сценаріїв.

Перевірка, що генерація працює

curl http://localhost:7860/sdapi/v1/options
nvidia-smi --query-gpu=memory.used,memory.total --format=csv

Перша команда має повернути JSON із поточними налаштуваннями WebUI — якщо приходить помилка з'єднання, сервіс не запущено або порт закрито. Друга показує, скільки відеопам'яті реально зайнято: значення, близьке до загального обсягу одразу після старту без жодного запиту, зазвичай означає, що модель завантажилася некоректно або зависла на попередній генерації.

Окремо варто закласти час на перший прогін: під час першого запиту після старту WebUI модель завантажується в пам'ять з диска, і це може зайняти помітно більше часу, ніж сама генерація зображення. Якщо сервіс перезапускається за розкладом або після збою, перший користувацький запит після рестарту буде повільним — це нормально і не означає поломку, але варто попередити користувачів інтерфейсу або зробити прогрів моделі окремим запитом одразу після старту сервісу.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці