Розгортання ComfyUI для генерації зображень: продакшен-пайплайни

Типова ситуація: клієнт використовує Automatic1111, але потрібен повний контроль над графом і зниження latency. ComfyUI вирішує це, але вимагає глибокого налаштування: підбір scheduler, оптимізація під конкретне залізо, балансування між якістю та швидкістю. Наш досвід — 5+ років в MLOps, 40+ проекті

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Типова ситуація: клієнт використовує Automatic1111, але потрібен повний контроль над графом і зниження latency. ComfyUI вирішує це, але вимагає глибокого налаштування: підбір scheduler, оптимізація під конкретне залізо, балансування між якістю та швидкістю. Наш досвід — 5+ років в MLOps, 40+ проектів з генеративними моделями. Офіційна документація ComfyUI зазначає, що node-based архітектура дозволяє досягти GPU utilization до 80% при правильній конфігурації.

Які проблеми вирішуємо

Масштабування inference. Stable Diffusion пайплайн споживає багато VRAM. Без правильної конфігурації GPU utilization падає до 30%, latency p99 зростає. Ми оптимізуємо батчі, використовуємо TensorRT і ONNX Runtime для квантизації (INT8). В одному проекті знизили latency з 12 до 3 секунд на SDXL без втрати якості. На недавньому проекті з Flux.1 впровадили batch inference з динамічним батчингом, що збільшило throughput в 3 рази.

Стабільність API. Open-source рішення часто «падає» при одночасних запитах. Налаштовуємо чергу через Celery + Redis, health-checks та авторестарт. Гарантуємо uptime 99.5%.

Якість зображень. Артефакти та невідповідність промпту — наслідок неправильної збірки графа. Ми використовуємо ControlNet з точним підбором weight, IP-Adapter для стилізації та T2I-Adapter для структурного контролю. Результат перевіряємо метриками FID і CLIP score.

Як ми це робимо

Типовий стек: PyTorch 2.2, ComfyUI latest, Hugging Face Transformers для моделей, Triton Inference Server для деплою, Weights & Biases для моніторингу. Приклад: інтеграція IP-Adapter і ControlNet в один workflow.

def build_advanced_workflow( prompt: str, control_image: str, ip_adapter_image: str, checkpoint: str = "sd_xl_base_1.0.safetensors" ) -> dict: base = build_sdxl_workflow(prompt) # ControlNet base["10"] = {"class_type": "LoadImage", "inputs": {"image": control_image}} base["11"] = {"class_type": "ControlNetLoader", "inputs": {"control_net_name": "control_v11p_sd15_canny.pth"}} base["12"] = {"class_type": "ControlNetApply", "inputs": {"conditioning": base["2"]["inputs"], "control_net": ["11", 0], "image": ["10", 0], "strength": 0.9}} # IP-Adapter base["13"] = {"class_type": "LoadImage", "inputs": {"image": ip_adapter_image}} base["14"] = {"class_type": "CLIPVisionEncode", "inputs": {"image": ["13", 0], "clip_vision": ["1", 3]}} base["15"] = {"class_type": "IPAdapterApply", "inputs": {"ip_adapter": ["1", 4], "image": ["13", 0], "weight": 0.6}} return base 

Які моделі та оптимізації використовуються?

Для інференсу застосовуємо TensorRT і ONNX Runtime з точністю FP16 або INT8. Це знижує latency на 20-40% без помітної втрати якості. Для моделей Flux використовуємо vLLM (адаптований під дифузію) та динамічний батчинг. GPU utilization тримається на рівні 75-85%.

Як побудувати масштабований API на ComfyUI?

Пишемо сервіс-обгортку на FastAPI: вебсокет для стрімінгу проміжних зображень, черга запитів з пріоритетами, підтримка batch. Для high-load використовуємо Redis + Celery з worker-ами по одному на GPU. Приклад ендпоінту:

@app.post("/generate") async def generate(prompt: str): prompt_id = client.queue_prompt(workflow) return {"id": prompt_id, "status": "queued"} @app.get("/result/{prompt_id}") async def get_result(prompt_id: str): images = client.get_images_ws(workflow) # очікування return StreamingResponse(io.BytesIO(images[0]), media_type="image/png") 

Для моніторингу підключаємо Prometheus + Grafana: відстежуємо latency p99, кількість запитів, утилізацію GPU. При перевищенні порогу — алерт в Telegram.

Чому ComfyUI ефективніший за Automatic1111 для складних пайплайнів?

Порівняємо ключові характеристики:

Параметр ComfyUI Automatic1111
Архітектура Node-based граф Модульний (але лінійний)
Гнучкість пайплайнів Будь-які ланцюжки без обмежень Обмежені комбінації
Використання VRAM Оптимізоване, до 80% GPU util Часто простоює
API Вбудований WebSocket/HTTP Вимагає плагінів
Швидкість генерації На 10-30% швидше (залежить від workflow) Базова

ComfyUI дає контроль над кожним елементом графа, що критично для production.

Порівняння варіантів деплою

Варіант Склад Терміни
Базовий Один workflow, базовий API 1–2 дні
Продвинутий Кастомні workflow (ControlNet, IP-Adapter), FastAPI 3–5 днів
Комплексний Batch-обробка, CI/CD, моніторинг до 2 тижнів

Зв'яжіться з нами для оцінки проекту. Замовте консультацію — ми підготуємо пропозицію за 24 години. Отримайте безкоштовний аналіз вашого пайплайну.

Процес роботи

  1. Аналітика — розбираємо поточні пайплайни, bottleneck-и, очікуване навантаження.
  2. Проектування — створюємо workflow на папері, обираємо моделі (SDXL/Flux), оптимізації.
  3. Реалізація — пишемо код workflow, API-обгортку, підключаємо моніторинг.
  4. Тестування — load test з 50 паралельними запитами, перевірка якості.
  5. Деплой — налаштовуємо CI/CD (GitHub Actions), Triton Server, автоскейлінг.

Що входить в роботу

  • Сервер з ComfyUI, налаштований під ваше залізо
  • Кастомні workflow (до 3) з підтримкою ControlNet, IP-Adapter, LoRA
  • Python API-клієнт (FastAPI або gRPC)
  • Документація з експлуатації та доопрацювання
  • Навчання команди (2 години, запис)
  • Підтримка 3 місяці (слоти по 4 години на тиждень)

Терміни: від 1 дня для базового варіанту до 2 тижнів для складного пайплайну з batch. Вартість розраховується індивідуально. Гарантуємо стабільність і якість результату.

Вимоги до заліза для різних моделей
  • SDXL: 8GB VRAM мінімум (RTX 3070), рекомендується 12GB+ (RTX 4070/3090).
  • Flux: від 24GB VRAM (A100, 4090).
  • Паралельні користувачі: на A100 до 4 одночасних сесій.

ComfyUI GitHub