Деплой Automatic1111 (SDXL WebUI)
Ви запускаєте Automatic1111 локально, але при навантаженні API падає з тайм-аутами, а генерація займає хвилини. Стандартна конфігурація з --medvram не рятує, а ControlNet та LoRA видають помилки сумісності. Ми розгорнули десятки production-стендів для SDXL — і знаємо, як перетворити ваш сервер на стабільний генератор зображень під ключ.
Automatic1111 (A1111) — найпоширеніший web-інтерфейс для Stable Diffusion з великою екосистемою розширень (1000+). Він підходить для команд, яким потрібен готовий UI + REST API для автоматизації. Наш досвід: понад 50 проектів з розгортання генеративних моделей, 5+ років роботи з нейромережами. Гарантуємо стабільну роботу під навантаженням до 600 зображень/год на одному GPU. Це дозволяє економити до 40% бюджету на інфраструктурі порівняно з неоптимізованими збірками. При правильному налаштуванні вартість експлуатації знижується на 30–40%.
Чому Automatic1111, а не ComfyUI чи SD.Next?
ComfyUI зручний для експериментів, але поступається в кількості розширень та API-методах. SD.Next (Vladmandic) швидший, але має менше сумісних LoRA та ControlNet. A1111 залишається стандартом для production, особливо якщо потрібна інтеграція з існуючою інфраструктурою через REST API. Ми використовуємо його в 80% проектів.
Як вирішити проблему нестачі VRAM?
При генерації SDXL 1024×1024 навіть на RTX 3090 з 24 ГБ може не вистачати пам'яті при активних ControlNet та кількох LoRA. Оптимізація --medvram-sdxl знижує споживання VRAM на 30%, але для складних пайплайнів застосовуємо тайлову обробку Tiled VAE та вивантаження неактивних моделей через --no-half-vae. У крайньому випадку використовуємо батчинг менше 4 та xformers — це знижує latency p99 на 20%. Додатково можна увімкнути --lowvram для систем з 8 ГБ VRAM: якість генерації не страждає, але швидкість падає на 15–20%. Квантування моделей (INT8) через --precision half --no-half дає економію VRAM до 20% без втрати якості — актуально для RTX 3060 та A10G.
Як ми розгортаємо стек
- Аналітика: визначаємо цільові моделі, LoRA-набори, ControlNet, навантаження (RPS, роздільна здатність). Обираємо GPU (RTX 3090/4090/A10G). Оцінюємо вартість володіння з урахуванням електрики та охолодження.
- Проектування: конфігурація Nginx reverse proxy з SSL, моніторинг Prometheus/Grafana, логування. Розробляємо схему автооновлення моделей через S3 або Git LFS.
- Реалізація: клонуємо репозиторій A1111, розміщуємо моделі за директоріями, включаємо API-аутентифікацію, оптимізації (xformers, sdp-attention, medvram-sdxl). Налаштовуємо systemd-сервіс з автозапуском.
- Тестування: навантажувальні тести (ab, locust), перевірка p99 latency, витоків пам'яті. Перевіряємо сумісність усіх LoRA та ControlNet.
- Деплой: налаштування systemd, автозапуск, моніторинг, документація. Передаємо замовнику інструкцію з експлуатації.
# Клонуємо та встановлюємо git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui # Моделі у правильні директорії # ./models/Stable-diffusion/ — основні чекпоїнти (.safetensors) # ./models/Lora/ — LoRA файли # ./models/ControlNet/ — ControlNet моделі # ./models/VAE/ — VAE чекпоїнти # Запуск з API та оптимізаціями ./webui.sh \ --api \ --api-auth user:password \ --listen \ --port 7860 \ --xformers \ --opt-sdp-attention \ --medvram-sdxl \ --no-progressbar-hiding Nginx reverse proxy
server { listen 443 ssl; server_name sd.example.com; ssl_certificate /etc/ssl/sd.crt; ssl_certificate_key /etc/ssl/sd.key; location / { proxy_pass http://127.0.0.1:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 300s; # Генерація може займати > 60 сек proxy_send_timeout 300s; } } API використання
import httpx import base64 from PIL import Image import io class A1111Client: def __init__(self, base_url: str, username: str = None, password: str = None): self.base_url = base_url.rstrip("/") self.auth = (username, password) if username else None async def txt2img(self, payload: dict) -> list[bytes]: async with httpx.AsyncClient(timeout=300, auth=self.auth) as client: resp = await client.post(f"{self.base_url}/sdapi/v1/txt2img", json=payload) resp.raise_for_status() return [base64.b64decode(img) for img in resp.json()["images"]] async def interrogate(self, image_bytes: bytes, model: str = "clip") -> str: """Визначаємо промпт для існуючого зображення""" payload = { "image": base64.b64encode(image_bytes).decode(), "model": model # clip, deepdanbooru } async with httpx.AsyncClient(timeout=60, auth=self.auth) as client: resp = await client.post(f"{self.base_url}/sdapi/v1/interrogate", json=payload) return resp.json()["caption"] async def upscale(self, image_bytes: bytes, scale: float = 2.0, upscaler: str = "ESRGAN_4x") -> bytes: payload = { "image": base64.b64encode(image_bytes).decode(), "upscaling_resize": scale, "upscaler_1": upscaler } async with httpx.AsyncClient(timeout=120, auth=self.auth) as client: resp = await client.post(f"{self.base_url}/sdapi/v1/extra-single-image", json=payload) return base64.b64decode(resp.json()["image"]) Корисні розширення
| Розширення | Функція |
|---|---|
| ControlNet | Контроль пози/структури/глибини |
| ADetailer | Автоматичне покращення облич/рук |
| Ultimate SD Upscale | Тайловий апскейлінг великих зображень |
| Regional Prompter | Різні промпти для різних зон зображення |
| AnimateDiff | Генерація відео з промпту |
| IP-Adapter | Стиль-референс зображення |
Системні вимоги
| Конфігурація | VRAM | Зображень/год (1024×1024) |
|---|---|---|
| RTX 3060 12GB | 12 GB | ~120 (без xformers) |
| RTX 3090 24GB | 24 GB | ~300 |
| RTX 4090 24GB | 24 GB | ~600 |
| 2× A10G | 2×24 GB | ~800 (з батчингом) |
Що входить в роботу
- Встановлення та налаштування Automatic1111 останньої версії.
- Розміщення моделей (чекпоїнти, LoRA, ControlNet, VAE) за вашим списком.
- Конфігурація Nginx reverse proxy з SSL, базова аутентифікація.
- REST API для інтеграції з вашими сервісами (документація на Swagger).
- Моніторинг та алертинг (Prometheus + Grafana — опціонально).
- Гарантійна підтримка 30 днів та навчання команди.
- Цілодобова підтримка Automatic1111 у разі збоїв.
Приклад конфігурації високонавантаженого стенду
Для 600 зображень/год використовуємо RTX 4090 з --batch-count 2 --batch-size 2 та --opt-sdp-attention. Встановлюємо розширення A1111 WebUI Batch-Connect для черги через RabbitMQ. Це дає економію часу інженерів на 30%.
Індивідуальне розгортання
Якщо ваш проект вимагає: аутентифікації через OAuth, черги завдань (Celery/RabbitMQ), інтеграції з S3-сховищем для результатів, або горизонтального масштабування на кілька GPU — ми проектуємо архітектуру індивідуально. Зв'яжіться з нами для консультації по вашому проекту. Замовте розгортання під ключ.
Терміни: базовий деплой з кількома моделями — від 4 до 8 годин. Production-setup з аутентифікацією, моніторингом, reverse proxy — 1–2 дні. Отримайте консультацію з оптимізації VRAM та вибору GPU — зв'яжіться з нами для персонального розрахунку.







