ComfyUI на GPU: графовые пайплайны и кэш

Задача страницы. Показать, как развернуть и эксплуатировать ComfyUI на облачных GPU: графовые пайплайны для SD/SDXL/SD3, профили VRAM/скорости, кэш весов и промежуточных артефактов, очереди заданий и наблюдаемость.

TL;DR

  • Используйте графы ComfyUI для сборки сценариев: prompt → sampler → VAE → постобработка → сохранение.
  • Производительность упирается в VRAM и I/O. Включайте fp16/bf16, память‑эффективное внимание, кэшируйте чекпоинты/LoRA/ControlNet и VAE.
  • Для интерактива — один узел с прогретыми весами; для массового рендера — пул инстансов + очереди.
  • Смежные страницы: /solutions/image-video-gen/, /solutions/image-video-gen/sdxl/, /solutions/image-video-gen/sd3/, /solutions/image-video-gen/controlnet/, /solutions/image-video-gen/upscaling/, /solutions/image-video-gen/batch-render/, а также эксплуатация и стоимость — /solutions/performance-tuning/, /solutions/cost-planner/, /solutions/monitoring-logging/.

Когда выбирать ComfyUI

  • Нужен «визуальный конструктор» пайплайнов: ветвления, условные ветки, повторное использование кэшей.
  • Комбинаторика вариантов: LoRA/ControlNet/ресэмплеры/шаги/разрешения.
  • Интеграция с продом: REST‑вызовы графов, очереди, батчи, контроль параметров.

Если требуется «быстрый старт UI» и меньше гибкости — смотрите /solutions/image-video-gen/automatic1111/. Для сложных сборочных пайплайнов и рендер‑ферм — ComfyUI предпочтителен.

Профили GPU и VRAM

Ориентиры VRAM (fp16, память‑эффективное внимание включено):

**Сценарий** **SD 1.5** **SDXL (base/refiner)** **SD3‑семейство** **Примечание**
512×512, 20–30 шагов 8–12 ГБ 12–16 ГБ 16–24 ГБ быстрый предпросмотр
768×768, HQ 12–16 ГБ **16–24 ГБ** 24–32 ГБ refiner по желанию
1024×1024 16 ГБ **16–24 ГБ** 24–48 ГБ возможны тайлинги
ControlNet/IP‑Adapter +1 ветка +1–3 ГБ +2–4 ГБ +3–6 ГБ по типу карты
Видео‑диффузии (512–576p) 16–24 ГБ 24–40 ГБ 24–40 ГБ лучше отдельный пул

Хранилище: кэш весов/LoRA/ControlNet/VAEs обычно 50–200 ГБ на NVMe. Подробнее про диски — /solutions/storage-data/.

Базовый граф ComfyUI (минимум) Идея. Загрузить чекпоинт → закодировать позитив/негатив промпты → сэмплинг → декод VAE → сохранить.

Мини‑workflow (фрагмент JSON ComfyUI, можно отправлять в API /prompt):

{
 "prompt": {
 "3": {"class_type":"CheckpointLoaderSimple","inputs":{"ckpt_name":"sdxl_base.safetensors"}},
 "4": {"class_type":"CLIPTextEncode","inputs":{"text":"high quality photo of a product on white background","clip":["3","CLIP"]}},
 "7": {"class_type":"CLIPTextEncode","inputs":{"text":"low quality, blurry, artifacts","clip":["3","CLIP"]}},
 "5": {"class_type":"EmptyLatentImage","inputs":{"width":1024,"height":1024,"batch_size":1}},
 "6": {"class_type":"KSampler","inputs":{
 "model":["3","MODEL"],"seed":123456,"steps":30,"cfg":7,
 "sampler_name":"euler","scheduler":"normal","denoise":1.0,
 "positive":["4","CONDITIONING"],"negative":["7","CONDITIONING"],
 "latent_image":["5","LATENT"]}},
 "8": {"class_type":"VAEDecode","inputs":{"samples":["6","LATENT"],"vae":["3","VAE"]}},
 "9": {"class_type":"SaveImage","inputs":{"images":["8","IMAGE"]}}
 }
}

Расширения для SDXL: разнести base и refiner на два прохода графа (см. /solutions/image-video-gen/sdxl/). Для ControlNet — добавить ветку кондиционирования (см. /solutions/image-video-gen/controlnet/).

Кэш: где экономить секунды и гигабайты

Что кэшировать

  • Чекпоинты/LoRA/ControlNet/VAEs на локальном NVMe (горячий кэш), заранее прогреть.
  • CLIP‑энкодинги повторяющихся промптов (для батчей).
  • Latent‑пространство (после EmptyLatentImage/VAEEncode) — для вариаций seed/CFG.
  • Постобработку (апскейл/денойз) — если однотипные параметры.

Как кэшировать в графе

  • Вынесите «тяжёлые» узлы (Checkpoint/CLIP/VAE) в отдельные ветки, на которые ссылаются несколько KSampler.
  • Стабилизируйте идемпотентность: повторный запуск с тем же seed/steps/cfg/ckpt отдаёт одинаковый результат → проще дедуплицировать.
  • Храните артефакты с хеш‑ключом параметров графа.

Производительность и стоимость

Обозначим: S — шаги, R — разрешение (пикселей), B — батч, t_step — среднее время шага, O — накладные.

Латентность:

T ≈ O + S × t_step(R, B)

Выработка и цена:

Imgs_per_hour ≈ 3600 / T

Cost_per_1000 ≈ (GPU_hour_price × Num_GPU) / (Imgs_per_hour / 1000)

Ускоряем

  • Уменьшаем S (фаст‑самплеры), включаем fp16/bf16 и память‑эффективное внимание.
  • Подбираем B к «колену» утилизации VRAM/SM.
  • На 1024² и выше — тайлинги + оптимизированный VAE.

Подробно: /solutions/performance-tuning/, экономика — /solutions/cost-planner/, /solutions/llm-inference/costs/. Компоненты графа: готовые паттерны

SDXL base → (опц.) refiner Base: текстовые кондиции → KSampler (низкий denoise) → VAE Decode.

Refiner: повторный KSampler на изображении с малым S_ref для деталей кожи/текстур. Страница: /solutions/image-video-gen/sdxl/.

ControlNet/IP‑Adapter Ветка кондиционирования: эдж/поза/скетч/референс. Контролируйте баланс weight и порядок. Страница: /solutions/image-video-gen/controlnet/.

Апскейл/реставрация Пост‑ветка: Upscale → Denoise → Sharpen после базового 768–1024²

Страницы: /solutions/image-video-gen/upscaling/, /solutions/image-video-gen/face-restoration/.

Видео‑диффузии Стабилизируйте кадры: ключевые → интерполяция → денойз → апскейл → транскод.

Страница: /solutions/image-video-gen/video/.

API и батчи: как запускать из кода

Отправка workflow в очередь ComfyUI:

curl -X POST http://localhost:8188/prompt

-H "Content-Type: application/json"

-d @workflow.json

История/статусы задачи (упрощённо):

curl "http://localhost:8188/history/<prompt_id>"

Прод‑обёртка (пример FastAPI + очередь + SSE‑прогресс):

from fastapi import FastAPI, Request
from fastapi.responses import StreamingResponse
import httpx, json, asyncio, uuid
COMFY = "http://localhost:8188"
app = FastAPI()
@app.post("/v1/comfyui/render_stream")
async def render(req: Request):
 cfg = await req.json() # {workflow: {...}}
 prompt_id = str(uuid.uuid4())
 payload = {"prompt": cfg["workflow"], "client_id": prompt_id}
 async with httpx.AsyncClient(timeout=60) as s:
 await s.post(f"{COMFY}/prompt", json=payload)
 async def stream():
 yield "event: startndata: {}nn"
 # опрос статуса; для прод — WS/подписки
 for _ in range(600):
 await asyncio.sleep(0.2)
 # …получить прогресс/этап/обновления…
 # yield f"data: {json.dumps({'progress': p})}nn"
 yield 'data: {"result_id":"img_001"}nn'
 yield "event: donendata: [DONE]nn"
 return StreamingResponse(stream(), media_type="text/event-stream",
 headers={"Cache-Control":"no-cache","X-Accel-Buffering":"no"})

Для массовых заданий используйте «ферму» ComfyUI‑инстансов и планировщик (см. /solutions/image-video-gen/batch-render/).

Масштабирование: от одного узла к ферме

  • Горизонталь: несколько реплик ComfyUI за балансировщиком; общий кэш весов на NVMe, артефакты — в объектном хранилище.
  • Пулы: интерактив (on‑demand) и пакетный (interruptible) — разные очереди и лимиты (см. /solutions/interruptible-patterns/).
  • MIG/мульти‑GPU: разделяйте GPU для коротких и тяжёлых задач; учтите VRAM профили.
  • Тайлинги/шардирование кадров для 2–4k и видео‑сценариев.

Наблюдаемость, алерты и логи

Метрики (минимум):

  • queue_wait, t_step_ms, steps, batch, resolution, images_per_min.
  • GPU: util/HBM, OOM/ретраи, KV‑кэш не используется, но следите за памятью и I/O.
  • Диск: кэш‑хиты, время загрузки чекпоинтов/LoRA/ControlNet/VAEs.

Алерты:

  • Рост p95 t_step_ms, queue_wait, снижение кэш‑хитов, OOM>0, ошибки I/O. Интеграция: /solutions/monitoring-logging/, /solutions/llm-inference/observability/.

Безопасность и политика

  • Разрешённые модели/LoRA/ControlNet — allow‑list.
  • Ограничьте параметры API (макс. R, S, CFG, batch).
  • Санация промптов/логов, маскирование PII.

Подробнее: /solutions/security/, /solutions/llm-inference/guardrails/.

Быстрый старт на cloudcompute.ru

  • Используйте шаблон “ComfyUI‑GPU” из /solutions/templates/: – пресеты SD/SDXL/SD3, кэш весов на NVMe, fp16/bf16; – ограничители параметров, SSE‑прогресс; – базовые метрики/алерты и ротация логов.
  • Для пакетного рендера — “Batch‑Render” (очереди, ретраи, отчёты): /solutions/image-video-gen/batch-render/.
  • Оценка стоимости и профилей инстансов: /solutions/cost-planner/.

Чек‑лист перед продом

  • Проверены VRAM‑профили для целевых R/S/B и подключенных ControlNet/LoRA.
  • Включены fp16/bf16, память‑эффективное внимание, тёплый кэш весов на NVMe.
  • Параметры API ограничены: max R, max S, CFG, batch.
  • Настроены пулы интерактив/пакет; очередь задач и ретраи.
  • Метрики/алерты/трейсинг подключены; логи без PII.
  • Рассчитана Cost_per_1000 и план масштабирования.

Навигация по разделу «Генерация изображений и видео»

/solutions/image-video-gen//solutions/image-video-gen/automatic1111//solutions/image-video-gen/sdxl//solutions/image-video-gen/sd3//solutions/image-video-gen/controlnet//solutions/image-video-gen/video//solutions/image-video-gen/upscaling//solutions/image-video-gen/face-restoration//solutions/image-video-gen/text-to-3d//solutions/image-video-gen/style-transfer//solutions/image-video-gen/batch-render/ • инфраструктура: /solutions/performance-tuning/, /solutions/storage-data/, /solutions/monitoring-logging/

Готовы запустить?

Запустить GPU-сервер