Деплой 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 — зв'яжіться з нами для персонального розрахунку.
Генеративний AI розробка: від промпта до production API
Нам часто приносять задачу «згенеруй зображення продукту» — на перший погляд вона проста. Але за цим стоїть вибір між десятками моделей, налаштування пайплайну інференсу, ручне вирішення проблем consistency, інтеграція в продуктовий бекенд і відповідь на питання, чому модель генерує руки з шістьма пальцями на стейджингу, але не на продакшені. Розберемо напрямки, з якими ми працюємо.
Генерація зображень: від промпта до production API
Актуальний ландшафт — FLUX.1 [dev/schnell/pro] від Black Forest Labs та Stable Diffusion 3.5. FLUX.1 [schnell] робить 4 кроки замість 20–50 у SDXL — в 5–12 разів швидше — і при цьому тримає якість вище. На A100 80GB — 1.2–1.8 с на зображення 1024×1024 при batch_size=4.
Типова проблема при розгортанні: FLUX.1 [dev] потребує 24+ GB VRAM в fp16. На A10G 24GB влізає в обріз, при batch_size>1 — OOM. Рішення: torch_dtype=torch.bfloat16 + enable_model_cpu_offload() з diffusers, або квантизація через bitsandbytes в NF4 — падіння якості мінімальне, споживання пам'яті знижується до 12–14 GB.
ControlNet і IP-Adapter — ключові інструменти для production-задач, де потрібна керованість. ControlNet з Canny/Depth/Pose картою дає структурний контроль. IP-Adapter (особливо IP-Adapter-FaceID) дозволяє переносити identity персонажа на генерації — це основа для персоналізованого контенту.
Кейс: e-commerce фото-зйомка. Рітейлер з 8000 SKU потребував lifestyle-фото для кожного продукту. Пайплайн: сегментація продукту (Segment Anything Model 2) → видалення фону → inpainting FLUX.1 [dev] з product image як IP-Adapter reference → upscale через RealESRGAN_x4plus. Вартість генерації на орендованих A100 значно нижча порівняно з професійною зйомкою, економія багатократна. Throughput — 200 зображень/год на 2× A100. Багаторічний досвід 30+ проектів гарантує, що ми оберемо оптимальну модель під ваше завдання — оцінку можна отримати на старті.
Чому вибір моделі — лише половина успіху?
Fine-tuning під конкретний стиль або персонаж
Dreambooth і LoRA — стандарт для адаптації під конкретний візуальний стиль або об'єкт. LoRA навчається за 2–4 години на 20–30 референсних зображеннях на одному A100. Rank 16–32 зазвичай достатньо для стилю, rank 64+ потрібен для точного відтворення облич.
Часта помилка: навчати LoRA занадто довго — модель перенавчається на референси, втрачає здатність до варіативності. Ознака: на cfg_scale=7 всі зображення схожі на copy-paste референсу. Лікується ранньою зупинкою (зазвичай 1500–2000 кроків для 20 зображень) та prior_preservation_loss.
Для більш глибокої кастомізації — full fine-tuning через diffusers + accelerate з FSDP на декількох GPU. Але це вже 40–80 годин навчання і потрібен дійсно великий датасет (1000+ зображень).
Порівняння підходів до генерації зображень
| Модель |
Швидкість (1024×1024, A100) |
Якість (CLIP score) |
Керованість (ControlNet, IP-Adapter) |
VRAM (fp16) |
| Stable Diffusion 3.5 |
2.0–3.5 с |
0.28–0.31 |
через ControlNet (дозволено) |
16–20 GB |
| FLUX.1 [schnell] |
0.8–1.2 с |
0.30–0.33 |
обмежена (без ControlNet) |
12–14 GB (4‑кроковий) |
| FLUX.1 [dev] |
3–5 с (50 кроків) |
0.32–0.34 |
через IP-Adapter, ControlNet (адаптер) |
24+ GB |
| Midjourney (API) |
5–10 с (черга) |
0.31–0.33 |
промпт + style reference |
не потрібно |
Які моделі кращі для генерації відео?
| Модель |
Доступність |
Довжина |
Роздільна здатність |
Керованість |
| Sora (OpenAI) |
API (обмежений) |
до 60 с |
1080p |
промпт, image-to-video |
| Wan2.1 (Alibaba) |
open weights |
до 81 кадр |
720p |
промпт, I2V, V2V |
| CogVideoX-5B |
open weights |
6 с |
720p |
промпт, I2V |
| Kling 1.6 |
API |
до 30 с |
1080p |
промпт, I2V |
| Mochi-1 |
open weights |
5.4 с |
480p |
промпт |
Open-weight відеомоделі поки відстають від комерційних за стабільністю та довжиною. Wan2.1 — найкращий вибір для self-hosted: 14B параметрів, працює на 2× A100, дає прийнятну якість для коротких кліпів.
Головний біль відеогенерації — temporal consistency: персонаж змінює колір одягу на третій секунді, об'єкт «пливе». Часткове рішення — генерація з motion_bucket_id і noise_aug_strength в Stable Video Diffusion, або використання I2V (image-to-video) замість чистого text-to-video. Як зазначається в дослідженні VideoPoet, consistency досягається за рахунок навчання на довгих послідовностях.
AnimateDiff залишається робочим інструментом для коротких петель та motion-ефектів поверх SD/FLUX. Не Sora, але деплоїться локально і передбачуваний.
Генерація музики та аудіо
AudioCraft від Meta (MusicGen + AudioGen) — production-готовий стек для музичної генерації. musicgen-large (3.3B) генерує 30 с музики за ~8 с на A100. Керування через текстовий промпт та melody conditioning — можна задати мелодію наспівуванням.
Stable Audio Open від Stability AI — альтернатива з довжиною до 47 с, краща керованість структурою (intro/verse/chorus). Деплой аналогічний: diffusers + FastAPI.
Для voice-over та озвучки — ElevenLabs API або self-hosted XTTS v2 (див. послугу Speech AI). Для sound design та foley — AudioGen.
3D-генерація: практичний стан
3D-генерація все ще не дісталася тієї ж зрілості, що 2D. Але для конкретних задач інструменти вже робочі:
TripoSG та Shap-E — text/image-to-3D. Shap-E від OpenAI генерує прості 3D-меші за секунди, але геометрія грубувата. TripoSG дає більш детальні результати, але потребує постпроцесінгу (ремешинг, UV-розгортка).
Wonder3D та Zero123++ — реконструкція 3D з одного зображення. Працюють через генерацію multi-view (6–8 видів) та подальше 3D-відновлення через NeuS або instant-ngp.
Gaussian Splatting (3DGS) — не генерація, а реконструкція з серії фото/відео. Для товарних карток та нерухомості це вже production: 50–200 фото → 3DGS модель за 15–30 хв на RTX 4090 → інтерактивний 3D-в'ювер в браузері.
Інфраструктура та деплой
Для генеративних моделей критично:
- Черга задач — Celery + Redis або Ray Serve. Синхронний HTTP для генерації зображень неприйнятний при >5 конкурентних запитах.
- Кешування — схожі промпти дають схожі результати. Семантичний кеш через ембеддінги (faiss + sentence-transformers) може знизити навантаження на GPU на 20–40%.
- Моніторинг якості — CLIP score для text-image alignment, FID для оцінки розподілу генерацій. Інтеграція в MLflow або Weights & Biases.
- Зберігання — згенеровані зображення одразу в S3/MinIO, не на диску сервера інференсу.
Що входить в роботу (deliverables)
Ми беремо проект під ключ — від вибору моделі до деплою та моніторингу. В результат входить:
- Модель (або API-інтеграція) з бенчмарками продуктивності (latency p99, throughput).
- Документація пайплайну (prompt engineering guide, model card, версії залежностей).
- Інтеграція з вашим бекендом (REST/gRPC, черги).
- Налаштований моніторинг (дашборди, алерти по дрейфу якості).
- Навчальний воркшоп для команди (2–4 години).
- Гарантійна підтримка 3 місяці після запуску — в рамках сертифікату якості на нашу роботу.
Історично ми виконали 30+ проектів в генеративному AI — це дає нам право гарантувати результат.
Як будується процес розробки генеративного AI?
- Аналітика (1–2 дні): аудит поточної архітектури, уточнення use case, вибір моделей та метрик успіху. Оцінюємо проект безкоштовно.
- Proof of Concept (1–3 тижні): швидкий прототип на ваших даних — щоб бачити реальну якість, а не демо з блогу.
- Проектування (1–2 тижні): архітектура пайплайну, інфраструктура (GPU-кластер/API), план A/B-тестування.
- Реалізація та fine-tuning (4–12 тижнів): розробка, навчання LoRA/full fine-tuning, інтеграція з чергою та кешем.
- Тестування (1–2 тижні): навантажувальні тести, валідація метрик, перевірка на edge-case (негативні сценарії).
- Деплой та моніторинг (1–2 тижні): розгортання на production, налаштування моніторингу, документування.
Що ми перевіряємо на етапі Proof of Concept
- Відповідність очікувань та реальної якості генерації (CLIP score, user study).
- Швидкість інференсу при різних batch_size та типах GPU.
- Ймовірність токсичних/некоректних генерацій — перевірка safety filters.
- Можливість масштабування: чи буде модель вивозити пікове навантаження.
Строки орієнтовно
Інтеграція готового API (DALL‑E 3, Midjourney API, Stability API) — 1–2 тижні. Self-hosted пайплайн з fine-tuning — 6–12 тижнів. Повна платформа з UI, чергами та моніторингом — 3–6 місяців. Конкретна вартість розраховується індивідуально після аналізу вашого сценарію.
Зв'яжіться з нами — замовте консультацію, і ми підберемо оптимальну архітектуру для вашого проекту. Отримайте попередню оцінку термінів безкоштовно.