ComfyUI: подробное обучение с нуля до профи

Курс научит работать с ComfyUI с полного нуля: от установки и базовых графов до построения сложных пайплайнов генерации изображений. Вы освоите ключевые ноды, управление моделями и параметрами, а также продвинутую оптимизацию, автоматизацию и практики профессиональной сборки workflow.

1. Установка, интерфейс и первая генерация в ComfyUI

Установка, интерфейс и первая генерация в ComfyUI

Что такое ComfyUI и почему он удобен

ComfyUI — это интерфейс для генерации изображений диффузионными моделями (например, Stable Diffusion), построенный как граф из узлов. Вместо «одной кнопки» вы собираете процесс генерации из блоков: загрузка модели, кодирование текста, сэмплинг, декодирование в картинку, сохранение.

Подход ComfyUI полезен потому что:

  • Вы видите весь пайплайн генерации.
  • Легко менять один шаг, не ломая остальное.
  • Один и тот же граф можно переиспользовать как шаблон.
  • В этой первой статье вы:

  • Установите ComfyUI.
  • Разберётесь в интерфейсе.
  • Соберёте минимальный workflow и сделаете первую генерацию.
  • Минимальные требования

    Для комфортной работы важнее всего видеокарта.

  • GPU (рекомендуется): NVIDIA с поддержкой CUDA (обычно начиная с GTX 10xx и новее).
  • VRAM (память видеокарты): 6 ГБ — минимально, 8–12 ГБ — комфортнее.
  • RAM: 16 ГБ и выше.
  • Диск: от 20 ГБ свободного места (модели занимают много).
  • Если GPU нет, ComfyUI можно запустить на CPU, но генерация будет очень медленной.

    Установка ComfyUI

    Официальный репозиторий проекта: ComfyUI на GitHub.

    Ниже — два самых частых сценария: portable-сборка (проще для старта на Windows) и установка через Git (универсальнее).

    Вариант A: Windows portable (самый простой старт)

  • Откройте страницу релизов ComfyUI на GitHub: Releases ComfyUI.
  • Скачайте portable-архив (обычно в названии есть слово portable).
  • Распакуйте архив (например, с помощью 7-Zip).
  • Запустите файл, который запускает ComfyUI (название зависит от сборки, часто содержит слова run или start).
  • Дождитесь, пока в консоли появится адрес веб-интерфейса.
  • Этот вариант хорош тем, что обычно не требует вручную ставить Python и зависимости.

    Вариант B: Windows / Linux / macOS через Git (надежный и управляемый)

    Подготовьте:

  • Python (часто рекомендуют версии 3.10–3.11)
  • Git
  • Далее:

  • Склонируйте репозиторий:
  • Установите зависимости (точная команда может отличаться по ОС и сборке, но базовый сценарий выглядит так):
  • Запустите ComfyUI:
  • Откройте в браузере адрес, который покажет консоль (обычно это http://127.0.0.1:8188).
  • > Если установка зависимостей пошла не так, сверяйтесь с разделом Installing в репозитории: ComfyUI на GitHub.

    Установка моделей (без этого генерация не начнётся)

    ComfyUI — это «движок», но ему нужны файлы моделей.

    Что нужно на старте

    Для первой генерации достаточно одного checkpoint-файла (весов модели). Частые варианты:

  • Stable Diffusion 1.5: runwayml/stable-diffusion-v1-5 на Hugging Face
  • SDXL Base 1.0: stabilityai/stable-diffusion-xl-base-1.0 на Hugging Face
  • Куда класть checkpoint

  • Найдите папку ComfyUI.
  • Перейдите в models/checkpoints.
  • Положите туда файл модели (часто это .safetensors или .ckpt).
  • Перезапустите ComfyUI (или обновите список моделей в интерфейсе, если такая кнопка есть в вашей сборке).
  • Важно:

  • На Hugging Face иногда нужно принять условия использования модели и войти в аккаунт.
  • Используйте модели с понятной лицензией под ваши задачи.
  • Запуск и доступ к интерфейсу

    После запуска ComfyUI в консоли обычно появляется строка со ссылкой вида:

  • http://127.0.0.1:8188
  • Это означает:

  • 127.0.0.1 — ваш компьютер (локально).
  • 8188 — порт.
  • Если хотите открыть интерфейс с другого устройства в локальной сети, это уже отдельная тема: нужно понимать риски безопасности и сетевые настройки. На старте работайте локально.

    Интерфейс ComfyUI: что где находится

    Главная идея интерфейса — полотно (canvas), на котором расположен граф узлов.

    !Схема зон интерфейса: полотно, список узлов, очередь, параметры узла

    Обычно в интерфейсе есть такие элементы:

  • Полотно (canvas): место, где вы собираете workflow.
  • Узел (node): блок, который делает конкретную операцию.
  • Порты/соединения: входы и выходы узлов (проводки между ними задают порядок обработки).
  • Очередь (queue): генерации выполняются задачами; можно ставить несколько.
  • Кнопка запуска: часто подписана как Queue Prompt (добавить задачу в очередь).
  • Практический смысл:

  • Если узлы соединены в цепочку, данные проходят по цепочке.
  • Если вы изменили текст в prompt, следующий запуск создаст новую задачу (не «перезапишет» старую).
  • Первая генерация: минимальный workflow

    Ниже — базовая схема «текст → изображение», с которой удобно начать. Она простая, но в ней уже видны ключевые части пайплайна.

    Какие узлы нужны

    Минимальный набор обычно выглядит так:

  • Checkpoint Loader: загрузить модель.
  • CLIP Text Encode (Prompt): закодировать позитивный текст.
  • CLIP Text Encode (Negative): закодировать негативный текст.
  • Empty Latent Image: создать пустое «латентное полотно» нужного размера.
  • KSampler: основной шаг генерации (шум → структура → детали).
  • VAE Decode: преобразовать латенты в обычное изображение.
  • Save Image: сохранить результат на диск.
  • Названия узлов могут слегка отличаться (например, CheckpointLoaderSimple вместо Checkpoint Loader), но смысл тот же.

    !Минимальный граф: загрузка модели → текст → сэмплинг → декодирование → сохранение

    Сборка графа шаг за шагом

  • Добавьте узел загрузки checkpoint и выберите модель из выпадающего списка.
  • Добавьте два узла кодирования текста:
  • 1. В первый впишите позитивный prompt. 2. Во второй — негативный prompt.
  • Добавьте узел пустого латентного изображения и задайте размер, например 512×512 (для SD 1.5) или 1024×1024 (часто для SDXL).
  • Добавьте KSampler и соедините входы:
  • 1. Модель из загрузчика → в KSampler. 2. Позитивный текст → в positive-вход KSampler. 3. Негативный текст → в negative-вход KSampler. 4. Латентное изображение → в latent-вход KSampler.
  • Добавьте VAE Decode:
  • 1. Латенты из KSampler → во вход VAE Decode. 2. VAE из загрузчика → во вход VAE VAE Decode.
  • Добавьте Save Image и соедините изображение из VAE Decode → во вход сохранения.
  • Нажмите Queue Prompt.
  • Если всё подключено правильно, результат появится в интерфейсе и сохранится в папку вывода ComfyUI (обычно внутри проекта).

    Пример prompt для первой проверки

    Позитивный prompt:

  • портрет рыжего кота в круглых очках, студийный свет, высокая детализация, реалистично
  • Негативный prompt:

  • размыто, низкое качество, артефакты, лишние конечности, текст, водяной знак
  • Это не «магические слова», а просто быстрый способ проверить, что пайплайн работает и модель адекватно слушается.

    Ключевые параметры первой генерации (простыми словами)

    В KSampler обычно есть параметры, которые сильнее всего влияют на результат.

  • Steps: сколько итераций сэмплинга делать.
  • - Мало шагов — быстрее, но часто хуже качество. - Много шагов — медленнее, но может быть детальнее (до определённого предела).
  • CFG (Guidance Scale): насколько строго следовать тексту.
  • - Низко — более «свободная» картинка. - Слишком высоко — могут появляться артефакты и «пережатый» стиль.
  • Sampler / Scheduler: алгоритм сэмплинга.
  • - На старте можно не усложнять: выберите популярный sampler и оставьте по умолчанию.
  • Seed: зерно случайности.
  • - Один и тот же seed при одинаковых настройках даёт воспроизводимый результат. - Новый seed — новые вариации.
  • Width / HeightEmpty Latent Image): размер.
  • - Чем больше размер, тем больше потребление VRAM и время.

    Частые проблемы и быстрые решения

  • Ошибка памяти (out of memory):
  • - Уменьшите Width/Height. - Уменьшите batch/количество картинок за раз. - Закройте программы, которые занимают VRAM.
  • В списке нет модели:
  • - Проверьте, что файл лежит именно в models/checkpoints. - Перезапустите ComfyUI.
  • Чёрная/битая картинка:
  • - Убедитесь, что VAE Decode подключён и получает VAE. - Проверьте, что модель скачалась полностью и файл не повреждён.

    Итоги

    Вы установили ComfyUI, добавили checkpoint, разобрались с базовыми частями интерфейса и собрали минимальный workflow для генерации.

    В следующих статьях курса логично двигаться так:

  • разбор типов моделей и файлов (checkpoint, VAE, LoRA) и структуры папок,
  • управление качеством и стилем через параметры сэмплинга,
  • готовые шаблоны workflow и расширения (custom nodes).
  • 2. Базовые ноды и чтение графов: Stable Diffusion под капотом

    Базовые ноды и чтение графов: Stable Diffusion под капотом

    Зачем разбираться в нодах и графах

    В прошлой статье вы установили ComfyUI и собрали минимальный workflow для первой генерации. Дальше прогресс упирается не в «найти готовый граф», а в понимание, что именно течёт по проводам и почему этот набор нод вообще работает.

    ComfyUI показывает пайплайн Stable Diffusion как граф вычислений. Это даёт два ключевых преимущества:

  • Можно читать чужие workflow и быстро понимать, что в них происходит.
  • Можно менять отдельные этапы (текст, размер, сэмплер, VAE, инициализацию) без ощущения «магии».
  • Эта статья — про базовые ноды и «перевод» между тем, что происходит внутри Stable Diffusion, и тем, что вы видите в ComfyUI.

    Stable Diffusion простыми словами: из чего состоит генерация

    Stable Diffusion — это не одна нейросеть, а несколько частей, которые работают вместе. Классическое описание относится к латентной диффузии: модель генерирует не сразу пиксели, а латенты (сжатое представление изображения), а потом декодирует их в картинку. Оригинальная идея описана в статье про латентные диффузионные модели: High-Resolution Image Synthesis with Latent Diffusion Models.

    Ниже — основные компоненты, которые вы будете постоянно видеть в графах.

    Латенты

    Латент — это «скрытое изображение» в сжатом виде.

  • Модель генерирует латенты, потому что это быстрее и экономит видеопамять.
  • Уже потом латенты превращаются в обычные пиксели через VAE.
  • В ComfyUI латенты обычно имеют тип данных LATENT.

    CLIP: превращает текст в условие для генерации

    Текстовый prompt сам по себе не понимает ни UNet, ни VAE. Текст кодируется в числовое представление (эмбеддинги), которое затем подаётся в диффузионную модель как «подсказка».

  • Позитивный prompt говорит, что хотим.
  • Негативный prompt говорит, чего избегать.
  • В ComfyUI результат текстового кодирования часто имеет тип CONDITIONING.

    Диффузионная модель (UNet внутри checkpoint)

    Внутри checkpoint обычно содержатся веса нескольких частей, но для практики важно следующее:

  • UNet — «сердце» генерации, которое на каждом шаге денойзинга улучшает латенты.
  • Она получает текущие латенты, уровень шума (шаг), и conditioning от текста.
  • В ComfyUI объект модели обычно имеет тип MODEL.

    Сэмплинг: пошаговый денойзинг

    Генерация происходит итерациями:

  • Стартуем с шума (или с «частично шумной» заготовки).
  • Делаем серию шагов, каждый раз уменьшая шум и увеличивая структуру.
  • На выходе получаем латенты, похожие на изображение.
  • Этим управляют параметры:

  • Steps — сколько шагов сделать.
  • Sampler — конкретный алгоритм, как считать переходы.
  • Scheduler — как распределять уровни шума по шагам.
  • VAE: декодирование в пиксели

    VAE нужна, чтобы:

  • декодировать латенты в изображение (IMAGE),
  • иногда кодировать изображение обратно в латенты (это понадобится позже для image-to-image).
  • ComfyUI как «типизированный конструктор»

    Важно привыкнуть к двум правилам чтения графов.

    Что означает соединение нод

    Соединение — это не «просто порядок». Это передача данных конкретного типа.

  • Если выход ноды имеет тип CLIP, его нельзя подключить туда, где ждут MODEL.
  • Если нода ждёт LATENT, то ей нужно подать латенты (а не изображение).
  • Из-за этого ComfyUI ощущается как конструктор, где провода «не подходят» друг к другу, если вы собираете пайплайн неправильно.

    В каком порядке выполняется граф

    ComfyUI выполняет ноды по зависимостям:

  • Вы выбираете конечную ноду (часто это Save Image).
  • ComfyUI строит цепочку зависимостей назад: что нужно, чтобы получить входы этой ноды.
  • Выполняет только то, что реально нужно для результата.
  • Практический вывод:

  • «Левее/правее» на канвасе — это удобство чтения, но не строгий порядок исполнения.
  • Если нода ни на что не влияет (не подключена к результату), она не будет выполнена.
  • !Шпаргалка: какие типы данных проходят между ключевыми нодами

    Базовые ноды минимального text-to-image и их смысл

    Ниже — те же ноды, которые вы использовали для первой генерации, но теперь с «переводом» на то, что происходит внутри Stable Diffusion.

    Checkpoint Loader

    Что делает:

  • Загружает checkpoint (веса модели).
  • Что обычно отдаёт на выход:

  • MODEL — диффузионная модель для сэмплинга.
  • CLIP — текстовый энкодер для prompt.
  • VAE — автоэнкодер для перехода латенты ↔ пиксели.
  • Что важно понимать:

  • Если вы сменили checkpoint, то поменялось почти всё: стиль, «понятность» prompt, иногда даже требования к размеру.
  • У некоторых workflow VAE берут не из checkpoint, а отдельным файлом. На базовом уровне это необязательно, но полезно помнить, что VAE — заменяемая часть.
  • CLIP Text Encode (Prompt) и CLIP Text Encode (Negative)

    Что делает:

  • Берёт CLIP и строку текста.
  • Возвращает CONDITIONING.
  • Как это интерпретировать:

  • CONDITIONING — это «числовая форма» текста, с которой работает модель.
  • Позитив и негатив — два разных conditioning, которые вместе управляют тем, куда «тянут» результат.
  • Практические следствия:

  • Ошибка новичка — пытаться подать текст напрямую в KSampler. Нельзя: сначала текст должен быть закодирован.
  • Негативный prompt — не «анти-текст», а отдельное условие, которое влияет на направление денойзинга.
  • Empty Latent Image

    Что делает:

  • Создаёт пустой латент нужного размера (по сути, задаёт форму тензора).
  • Зачем это нужно:

  • UNet должен понимать, какого размера будет генерация.
  • Размер напрямую влияет на VRAM и время.
  • Правило для старта:

  • Для SD 1.5 типичный старт — 512×512.
  • Для SDXL типичный старт — 1024×1024.
  • KSampler

    Это центральная нода text-to-image.

    Что получает на вход:

  • MODEL — чем «денойзим».
  • CONDITIONING positive и negative — куда «подталкиваем» результат.
  • LATENT — начальное состояние (обычно «пустая форма», которую KSampler заполнит шумом и денойзит).
  • Что отдаёт:

  • LATENT — итоговые латенты после денойзинга.
  • Как читать основные параметры:

  • Seed
  • - Фиксированный seed даёт воспроизводимость при прочих равных. - Новый seed даёт другую композицию.
  • Steps
  • - Больше шагов обычно повышает качество до некоторого предела, но замедляет.
  • CFG
  • - Насколько сильно модель «слушается» positive prompt. - Слишком высоко — часто появляются артефакты и «пережатый» вид.
  • Sampler / Scheduler
  • - Это разные стратегии прохождения денойзинга. - На старте достаточно менять их осознанно и сравнивать результат на одном и том же seed.

    VAE Decode

    Что делает:

  • Берёт LATENT и VAE.
  • Возвращает IMAGE (обычное изображение).
  • Как это интерпретировать:

  • До этой ноды у вас ещё нет «картинки», только латенты.
  • Если вы перепутали VAE или забыли подключить его, результат может быть странным: неправильные цвета, «мыло», сломанная картинка.
  • Save Image

    Что делает:

  • Сохраняет IMAGE на диск.
  • Почему это отдельная нода:

  • В ComfyUI результат — это не «экран», а данные.
  • Вы сами решаете, куда их отправить: сохранить, показать превью, склеить в грид, передать дальше.
  • Шпаргалка по типам данных в проводах

    Типы могут немного отличаться по названию в разных наборах нод, но базовая логика сохраняется.

    | Тип | Что это | Пример нод-источников | Пример нод-приёмников | |---|---|---|---| | MODEL | Диффузионная модель для денойзинга | Checkpoint Loader | KSampler | | CLIP | Текстовый энкодер | Checkpoint Loader | CLIP Text Encode | | VAE | Декодер/энкодер латентов | Checkpoint Loader | VAE Decode, VAE Encode | | CONDITIONING | Закодированный prompt | CLIP Text Encode | KSampler | | LATENT | Латентное представление | Empty Latent Image, KSampler | KSampler, VAE Decode | | IMAGE | Обычная картинка | VAE Decode, Load Image | Save Image, Preview Image |

    Как быстро читать чужие workflow

    Когда открываете готовый граф, используйте один и тот же алгоритм.

  • Найдите, где получается финальный результат.
  • - Чаще всего это Save Image.
  • Пройдите по проводам назад.
  • - Если перед Save Image стоит VAE Decode, значит генерировали в латентах.
  • Найдите, где происходит сэмплинг.
  • - Обычно это KSampler или его вариант.
  • Проверьте, откуда берутся три ключевых вещи для сэмплинга.
  • - MODEL (checkpoint). - CONDITIONING (позитив/негатив через CLIP encode). - LATENT (пустой латент или кодирование изображения).
  • Посмотрите, что необычного добавлено.
  • - Дополнительные ноды могут менять conditioning (стили, LoRA, контроль позы), латенты (маски, инпейнт), или постобработку (апскейл, шарп, цвет).

    Частые «поломки» графа и как думать при отладке

    Похоже, что prompt не работает

    Проверьте:

  • Вы действительно подключили CONDITIONING в KSampler (и positive, и negative туда, куда нужно).
  • В CLIP Text Encode выбран правильный CLIP из нужного checkpoint.
  • CFG не слишком низкий (модель игнорирует текст) и не слишком высокий (пережим и артефакты).
  • Цвета странные, картинка «не такая»

    Проверьте:

  • VAE Decode получает VAE.
  • VAE соответствует checkpoint (если вы подменяли VAE вручную).
  • Ноды вроде есть, но ничего не происходит

    Проверьте:

  • Финальная нода (например, Save Image) действительно подключена к остальному графу.
  • Вы нажимаете именно добавление в очередь (Queue Prompt), а не просто меняете параметры.
  • Итоги

    Теперь у вас есть рабочая «карта местности»:

  • Stable Diffusion генерирует латенты, денойзит их пошагово и декодирует через VAE.
  • ComfyUI показывает это как типизированный граф, где провода — это данные (MODEL, CLIP, CONDITIONING, LATENT, IMAGE).
  • Умение читать граф начинается с конца: Save ImageVAE DecodeKSampler → источники MODEL/CONDITIONING/LATENT.
  • В следующем логичном шаге курса обычно идут практики управления качеством и воспроизводимостью: seed, сравнение samplers/schedulers, работа с размером, batch и экономией VRAM — но уже на основе понимания, что именно вы меняете в пайплайне.

    3. Качество и управление результатом: промпты, сиды, CFG, самплеры

    Качество и управление результатом: промпты, сиды, CFG, самплеры

    Зачем вам контроль качества, если «и так генерирует»

    В предыдущих статьях вы:

  • Установили ComfyUI и собрали минимальный text-to-image workflow.
  • Разобрались, какие типы данных текут по графу (MODEL, CONDITIONING, LATENT, IMAGE) и почему KSampler является центром генерации.
  • Теперь цель меняется: не просто получить картинку, а управлять результатом предсказуемо. Для этого вам нужно понимать четыре рычага:

  • Промпт: что именно вы просите.
  • Seed (сид): какая случайная «основа» композиции берётся.
  • CFG: насколько строго модель следует промпту.
  • Sampler / Scheduler: как именно происходит денойзинг по шагам.
  • В ComfyUI эти рычаги лежат в конкретных местах графа:

  • Промпты задаются в CLIP Text Encode.
  • Seed, CFG, Steps, Sampler, Scheduler задаются в KSampler.
  • !Карта основных рычагов качества и контроля результата в типичном text-to-image графе

    Промпт как техническое задание

    Промпт в Stable Diffusion полезнее воспринимать не как «описание картинки», а как набор ограничений.

    Базовая структура промпта

    Хороший стартовый шаблон (можно копировать как привычку):

  • Объект: кто/что в кадре.
  • Контекст: где это находится.
  • Композиция: крупность, ракурс, положение в кадре.
  • Свет: источник, характер, время суток.
  • Стиль/материал: фото, 3D, иллюстрация, пленка, акварель.
  • Качество: детали, резкость, текстуры.
  • Ограничения: что точно не должно появиться.
  • Пример (позитивный промпт):

  • портрет рыжего кота в круглых очках, крупный план, студийный мягкий свет, 85mm photo, реалистично, детальная шерсть, чистый фон
  • Как делать промпт более управляемым

    Ключевой принцип: сначала стабилизируйте композицию, потом добавляйте детализацию.

  • Если вы сразу пишете слишком много требований, модель может «усреднить» их или начать конфликтовать сама с собой.
  • Если вы пишете слишком мало, результат будет случайнее, и вам сложнее понять, какой параметр за что отвечает.
  • Практичный подход:

  • Напишите короткий промпт про объект и сцену.
  • Зафиксируйте seed.
  • Подберите CFG и sampler так, чтобы композиция «держалась».
  • Только после этого добавляйте детали (текстуры, стиль, оптика, материалы).
  • Негативный промпт

    Негативный промпт — это не «анти-описание», а второй список условий, который говорит модели, в какие решения лучше не уходить.

    Типовые группы для негативного промпта:

  • Техническое качество: low quality, blurry, jpeg artifacts, noise.
  • Ошибки формы: extra limbs, deformed, bad anatomy (актуально для людей).
  • Нежелательные элементы: text, watermark, logo.
  • Важно:

  • Слишком агрессивный негативный промпт иногда «съедает» детали и делает изображение плоским.
  • Негатив лучше строить как краткий список проблем, которые вы реально наблюдаете.
  • Веса в промпте

    Во многих сборках Stable Diffusion поддерживается усиление частей текста через скобки и веса, например:

  • (red cat:1.2) — сделать признак важнее.
  • Используйте это аккуратно:

  • Усиление помогает, когда один признак постоянно «теряется».
  • Но чрезмерные веса вместе с высоким CFG часто усиливают артефакты.
  • Если вы не уверены, поддерживает ли ваш чекпойнт/парсер конкретный синтаксис, начните без весов и добейтесь стабильности базовыми параметрами.

    Seed: воспроизводимость и вариативность

    Seed — это число, которое задаёт начальное состояние случайности. Проще всего думать так:

  • Один и тот же seed при тех же настройках даёт похожий результат.
  • Другой seed — обычно другая композиция, поза, расположение объектов.
  • Как использовать seed правильно

  • Для подбора настроек фиксируйте seed.
  • Для поиска вариантов меняйте seed, а остальное держите неизменным.
  • Типичный цикл работы:

  • Вы нашли удачную композицию → оставьте seed.
  • Подкручивайте промпт, CFG, sampler, steps → смотрите изменения без «скачков» композиции.
  • Когда качество устраивает → начинайте перебирать seed для серии вариантов.
  • Batch и серия вариантов

    Во многих конфигурациях KSampler позволяет делать несколько изображений за один запуск (batch). Это удобно, но помните:

  • Batch экономит время на настройку, но увеличивает расход VRAM.
  • Для обучения и сравнения параметров часто полезнее генерировать по одному изображению, чтобы легче отслеживать причинно-следственные связи.
  • CFG: «строгость следования промпту»

    CFG (Classifier-Free Guidance) в KSampler отвечает за баланс:

  • Низкий CFG: больше свободы, больше «творческой вариативности», иногда хуже соответствие тексту.
  • Высокий CFG: модель сильнее старается выполнить текст, но может появиться «пережатость» и артефакты.
  • Практические диапазоны

    Универсального числа нет: это зависит от модели, промпта, самплера и количества шагов. Но как стартовая эвристика:

  • Если промпт игнорируется → повышайте CFG постепенно.
  • Если картинка становится «кислотной», ломается форма, появляются артефакты → снижайте CFG.
  • Типичные симптомы неправильного CFG

  • CFG слишком низкий:
  • - стиль «гуляет», объект меняется сильнее, чем вы ожидаете; - важные слова промпта почти не влияют.
  • CFG слишком высокий:
  • - слишком резкая/жесткая картинка; - повторяющиеся детали, странные узоры; - больше шансов на поломки анатомии и «грязь».

    Steps: скорость против детализации

    Steps — это число шагов денойзинга в KSampler.

  • Меньше steps: быстрее, но чаще меньше деталей и хуже стабильность.
  • Больше steps: потенциально лучше детали, но есть убывающая отдача — после некоторого значения добавление шагов почти не улучшает результат.
  • Практика:

  • Найдите «рабочее окно», где качество уже приемлемое, но скорость ещё нормальная.
  • Внутри этого окна сравнивайте самплеры и CFG.
  • Важно:

  • Увеличение steps почти всегда увеличивает время.
  • Расход VRAM больше зависит от размера (Width/Height), батча и модели, чем от steps.
  • Sampler и Scheduler: как именно идёт денойзинг

    В ComfyUI обычно два связанных выбора:

  • Sampler — алгоритм, который делает шаги денойзинга.
  • Scheduler — то, как распределяются уровни шума по шагам.
  • Это не «лучше/хуже», а разные характеры:

  • одни варианты дают более мягкую картинку,
  • другие — более резкую,
  • одни лучше держат структуру на малых шагах,
  • другие раскрываются на больших.
  • Как сравнивать самплеры корректно

    Сравнение имеет смысл только при контролируемых условиях:

  • Один и тот же checkpoint.
  • Один и тот же промпт (positive и negative).
  • Один и тот же размер.
  • Один и тот же seed.
  • Одинаковые CFG и steps.
  • Меняете только sampler (и при необходимости scheduler).
  • Если менять несколько параметров сразу, вы не поймёте, что именно дало эффект.

    Практичные стартовые рекомендации

    Это не «единственно правильные» варианты, а удобные отправные точки, которые часто встречаются в workflow:

    | Задача | Что попробовать | Почему это удобно | |---|---|---| | Быстро накидать идеи | Euler a (или другой быстрый) + умеренные steps | Часто даёт разнообразные результаты и быстро итератируется | | Сделать аккуратнее и стабильнее | Семейства DPM++ + scheduler karras | Часто хорошо балансируют детализацию и стабильность | | Проверка воспроизводимости | Один выбранный sampler + фиксированный seed | Легко понять, какой параметр реально влияет |

    Названия самплеров в вашем интерфейсе могут отличаться, но логика сравнения всегда одна и та же.

    Методика «контролируемого улучшения» в ComfyUI

    Чтобы качество росло предсказуемо, работайте как инженер, а не как игрок в рулетку.

    Базовый протокол

  • Соберите простой граф из прошлых статей (checkpoint → CLIP encode → KSampler → VAE decode → save).
  • Задайте тестовый промпт.
  • Поставьте фиксированный seed.
  • Выберите один sampler/scheduler и не меняйте их на этом этапе.
  • Подберите steps и CFG до состояния «уже неплохо».
  • Только после этого начинайте:
  • - тонко редактировать промпт, - сравнивать samplers, - менять размер, - добавлять новые блоки (апскейл, refiner, control и так далее).

    Что сильнее всего влияет на итог

    Упрощённая карта влияния:

  • Композиция чаще всего меняется от:
  • - seed, - соотношения сторон и размера, - значительных правок промпта.
  • Степень соответствия тексту чаще всего меняется от:
  • - CFG, - качества и конкретики промпта, - выбранного checkpoint.
  • Микродетали и характер шума часто меняются от:
  • - sampler/scheduler, - steps.

    Частые проблемы качества и быстрые действия

    «Промпт не работает»

    Проверьте по цепочке:

  • CLIP Text Encode действительно подключены к KSampler в positive и negative.
  • Вы не перепутали positive и negative.
  • CFG не слишком низкий.
  • «Слишком мыльно»

    Типичные шаги:

  • Увеличьте steps в разумных пределах.
  • Попробуйте другой sampler (оставив seed фиксированным).
  • Уточните промпт деталями про фактуру и свет (но не превращайте его в «простыню» сразу).
  • «Артефакты, пережатый стиль, странные узоры»

    Типичные шаги:

  • Снизьте CFG.
  • Уменьшите агрессивность негативного промпта.
  • Попробуйте sampler/scheduler, который даёт более мягкий результат.
  • Итоги

    Вы получили практический набор навыков для управляемой генерации в ComfyUI:

  • Промпт — это техническое задание: стабилизируйте основу, потом добавляйте детали.
  • Seed — главный переключатель между воспроизводимостью и вариативностью.
  • CFG управляет тем, насколько модель «слушается» текста, и напрямую влияет на риск артефактов.
  • Sampler и Scheduler задают характер денойзинга, и их нужно сравнивать только при фиксированном seed и прочих равных.
  • Дальше по курсу эти принципы станут фундаментом для более продвинутых схем: image-to-image, inpaint, апскейл, контроль позы и композиции через дополнительные ноды и модели. Полезная отправная точка по проекту и обновлениям: ComfyUI на GitHub.

    4. Продвинутые техники: ControlNet, LoRA, инпейтинг, апскейл

    Продвинутые техники: ControlNet, LoRA, инпейтинг, апскейл

    Зачем это нужно после базового text-to-image

    В первых статьях вы собрали минимальный граф и научились управлять качеством через prompt, seed, CFG, steps, sampler и scheduler. Следующий шаг к уровню практически полезных результатов — добавлять в граф инструменты, которые:

  • фиксируют композицию и позу, а не «угадывают» её по тексту;
  • добавляют стиль или конкретный объект без замены checkpoint;
  • позволяют править часть изображения, не перерисовывая всё;
  • повышают разрешение и детализацию контролируемо.
  • В ComfyUI эти техники удобно понимать через то, куда они встраиваются в пайплайн:

  • ControlNet и LoRA влияют на то, как модель денойзит латенты, то есть рядом с KSampler и CONDITIONING.
  • Инпейтинг меняет то, какие именно части латента разрешено перерисовывать.
  • Апскейл работает либо с LATENT (до декодирования), либо с IMAGE (после декодирования), либо в два шага.
  • !Карта, куда в типовой граф встраиваются ControlNet, LoRA, инпейтинг и апскейл

    Подготовка: куда складывать модели

    Названия папок могут немного отличаться в сборках, но обычно структура такая:

  • ControlNet модели: ComfyUI/models/controlnet
  • LoRA: ComfyUI/models/loras
  • Апскейлеры: ComfyUI/models/upscale_models
  • Если вы положили файл в нужную папку, но он не появился в списке ноды:

  • перезапустите ComfyUI;
  • проверьте расширение файла и целевую папку;
  • убедитесь, что модель подходит под ваш checkpoint по семейству (например, SD 1.5 и SDXL — это разные экосистемы).
  • ControlNet: когда нужен строгий контроль позы и композиции

    Идея ControlNet простыми словами

    ControlNet — это дополнительная сеть, которая даёт диффузионной модели структурную подсказку от изображения-контроля.

    Вместо того, чтобы просить текстом: «человек стоит боком и держит меч» и надеяться на удачу, вы задаёте структуру через контролирующую картинку:

  • контуры (Canny);
  • глубину (Depth);
  • позу (OpenPose);
  • линии/скетч (Lineart);
  • сегментацию (Segmentation).
  • Основная публикация: ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models.

    Типовой workflow ControlNet в ComfyUI

    Логика обычно такая:

  • Load Image загружает изображение, которое будет источником структуры.
  • Препроцессор делает из изображения карту-контроль.
  • ControlNet Loader загружает ControlNet модель.
  • Нода вида Apply ControlNet добавляет контроль к CONDITIONING.
  • Обновлённый CONDITIONING идёт в KSampler.
  • Минимальный набор нод часто выглядит так:

  • Load Image
  • нода-препроцессор, например Canny или OpenPose (названия зависят от набора custom nodes)
  • ControlNet Loader
  • Apply ControlNet
  • стандартный блок Checkpoint LoaderCLIP Text EncodeKSamplerVAE DecodeSave Image
  • Самые важные параметры ControlNet

    В разных нодах они могут называться по-разному, но смысл обычно одинаков.

  • Strength / Weight
  • Start percent и End percent
  • Как это понимать:

  • Strength определяет, насколько жёстко модель обязана следовать структуре.
  • Start/End percent задают, на каком участке денойзинга контроль активен.
  • Практическая логика настройки:

  • Если вы хотите жёстко удержать позу или перспективу, повышайте strength.
  • Если картинка стала «слишком привязанной» к исходнику и теряет стиль, снижайте strength.
  • Если контроль ломает детализацию или текстуры, попробуйте ограничить контроль ранними этапами денойзинга через end percent.
  • Как выбрать контроль под задачу

  • Контуры (Canny, Lineart) подходят, когда важны границы объектов и силуэт.
  • Depth подходит, когда важнее объём и расположение в пространстве.
  • OpenPose подходит, когда важнее поза персонажа.
  • Одна из частых рабочих стратегий:

  • сначала закрепить геометрию через ControlNet;
  • затем довести стиль и детали через prompt, CFG и sampler.
  • Типичные ошибки с ControlNet

  • Вы взяли ControlNet модель не под то семейство checkpoint.
  • Контрольное изображение и итоговый размер сильно расходятся, и модель «комкает» композицию.
  • Strength слишком высокий, и итог буквально копирует исходник вместо генерации.
  • LoRA: добавить стиль или объект без смены checkpoint

    Что такое LoRA

    LoRA — это лёгкая надстройка к модели, которая добавляет новый навык: стиль, персонажа, предмет или визуальный приём.

    Технически LoRA меняет часть весов через низкоранговую адаптацию, поэтому файл обычно небольшой по сравнению с checkpoint.

    Основная публикация: LoRA: Low-Rank Adaptation of Large Language Models. В диффузионных моделях принцип используется аналогично.

    Как LoRA подключается в ComfyUI

    Обычно используется нода вида LoraLoader или LoRA Loader, которая принимает:

  • модель MODEL из Checkpoint Loader;
  • текстовый энкодер CLIP из Checkpoint Loader;
  • имя LoRA файла;
  • веса применения.
  • А на выход отдаёт:

  • модифицированный MODEL;
  • модифицированный CLIP.
  • Затем вы используете их как обычно в KSampler и CLIP Text Encode.

    Веса LoRA: почему два числа

    Во многих графах вы увидите два веса:

  • вес для MODEL;
  • вес для CLIP.
  • Интуитивная трактовка:

  • вес MODEL сильнее влияет на визуальные признаки в денойзинге;
  • вес CLIP сильнее влияет на то, как текстовое условие «сцепляется» со стилем/понятием.
  • Если у вас нет причины усложнять, начните с одинаковых весов и меняйте по одному.

    Практика: как не «пережечь» LoRA

    Симптомы слишком сильной LoRA:

  • стиль становится «пластиковым» и одинаковым на любых промптах;
  • появляются повторяющиеся паттерны;
  • падает разнообразие даже при смене seed.
  • Что делать:

  • снижайте вес LoRA;
  • упрощайте промпт и убирайте конфликтующие стилевые слова;
  • фиксируйте seed и меняйте только один параметр, чтобы видеть причинно-следственную связь.
  • Несколько LoRA в одном графе

    В ComfyUI это обычно делается цепочкой из нескольких LoRA Loader.

    Правила безопасности:

  • добавляйте по одной LoRA и проверяйте эффект на фиксированном seed;
  • держите веса ниже, чем если бы LoRA была одна, потому что эффекты складываются;
  • если LoRA конфликтуют, результат будет нестабильным при малейших правках промпта.
  • Инпейтинг: локальная правка без перерисовки всего кадра

    Что такое инпейтинг

    Инпейтинг — это режим, когда вы:

  • берёте исходное изображение;
  • задаёте маску области, которую нужно заменить;
  • генерируете новые детали только внутри маски, стараясь сохранить остальное.
  • В ComfyUI это чаще всего выглядит как image-to-image, где латент исходника становится стартовой точкой для KSampler, а маска ограничивает, где разрешено добавлять шум и перерисовывать.

    Типовой workflow инпейтинга в ComfyUI

    Минимальная логика:

  • Load Image загружает исходное изображение.
  • Load Mask или создание маски из изображения подаёт маску.
  • VAE Encode превращает исходное изображение в LATENT.
  • Нода вида Set Latent Noise Mask применяет маску к латенту.
  • KSampler делает денойзинг, но перерисовывает в основном замаскированную область.
  • VAE Decode и Save Image сохраняют результат.
  • Какие ноды часто используются для подготовки маски:

  • Invert Mask чтобы поменять местами «рисовать здесь» и «не трогать здесь»;
  • Grow Mask чтобы расширить область и убрать швы;
  • Blur Mask чтобы сделать мягкий переход.
  • Параметр denoise: главный рычаг инпейтинга

    В KSampler часто есть параметр denoise (или аналогичный), который для image-to-image означает:

  • меньшее значение сохраняет больше исходника;
  • большее значение сильнее перерисовывает.
  • Практика:

  • если вам нужно заменить маленький дефект и сохранить стиль, снижайте denoise;
  • если вы хотите реально заменить объект в маске, повышайте denoise.
  • Как уменьшить швы на границе маски

  • Сделайте маску чуть шире, чем нужная область, через Grow Mask.
  • Добавьте мягкость через Blur Mask.
  • Подберите denoise так, чтобы модель не «перетягивала» текстуры по границе.
  • Апскейл: как получить больше пикселей и деталей

    Апскейл в ComfyUI бывает двух типов:

  • латентный апскейл до декодирования;
  • пиксельный апскейл после декодирования.
  • Часто лучшая практика — двухшаговая.

    Латентный апскейл

    Латентный апскейл увеличивает LATENT, то есть вы повышаете разрешение ещё до VAE Decode.

    Плюсы:

  • иногда сохраняет более естественную детализацию;
  • удобно встроить второй проход KSampler на повышенном разрешении.
  • Минусы:

  • требует больше VRAM;
  • ошибки композиции тоже увеличиваются.
  • Ноды, которые часто встречаются:

  • Latent Upscale
  • второй KSampler для «дошлифовки» на большем размере
  • Пиксельный апскейл моделями сверхразрешения

    Это отдельные модели, которые берут IMAGE и увеличивают его в пикселях.

    Часто встречающиеся семейства апскейлеров:

  • Real-ESRGAN: Real-ESRGAN
  • В ComfyUI это обычно выглядит так:

  • Upscale Model Loader
  • Image Upscale with Model
  • Плюсы:

  • быстро и сравнительно дёшево по VRAM;
  • хорошо для финального увеличения.
  • Минусы:

  • может «дорисовать» фактуру, которая не соответствует задумке;
  • иногда усиливает шум и артефакты.
  • Двухшаговая стратегия апскейла

    Практичный шаблон:

  • Сгенерировать базовое изображение на умеренном размере.
  • Сделать пиксельный апскейл моделью сверхразрешения.
  • При необходимости сделать лёгкий второй проход генерации на увеличенном размере через image-to-image с небольшим denoise, чтобы добавить согласованные детали.
  • Если вы используете второй проход:

  • фиксируйте seed;
  • держите denoise низким;
  • не меняйте промпт радикально, иначе композиция может поплыть.
  • Как собирать продвинутые графы без хаоса

    Правило «одна новая сущность за раз»

    Чтобы понимать, что именно улучшило или ухудшило результат:

  • фиксируйте seed;
  • добавляйте только одну новую технику: сначала LoRA, потом ControlNet, потом инпейтинг;
  • после каждого добавления сохраняйте версию workflow.
  • Чеклист отладки по типам данных

    Если граф не собирается или результат странный, идите от конца к началу, как вы делали раньше:

  • Save Image получает IMAGE.
  • VAE Decode получает LATENT и VAE.
  • KSampler получает MODEL, CONDITIONING и LATENT.
  • И уже внутри уточняйте:

  • LoRA должна модифицировать правильный MODEL и CLIP.
  • ControlNet должен влиять на CONDITIONING и получать корректную карту-контроль.
  • Инпейтинг должен применять маску именно к латенту, который уходит в KSampler.
  • Итоги

    Теперь у вас есть четыре продвинутые техники, которые превращают ComfyUI из «генератора картинок» в управляемый инструмент:

  • ControlNet фиксирует структуру: позу, контуры, глубину.
  • LoRA добавляет стиль или объект без смены checkpoint.
  • Инпейтинг позволяет локально править изображение через маску и параметр denoise.
  • Апскейл повышает разрешение через латенты, через модели сверхразрешения или в два шага.
  • Дальше эти блоки можно комбинировать в практических сценариях: дизайн итерациями, консистентные персонажи, правки по референсу, серия кадров в одном стиле, подготовка ассетов под печать и большие форматы.

    5. Профи-уровень: оптимизация VRAM, пакетная генерация и автопайплайны

    Профи-уровень: оптимизация VRAM, пакетная генерация и автопайплайны

    Как эта тема продолжает курс

    Раньше вы собрали базовые workflow, научились читать графы и управлять качеством через prompt, seed, CFG, steps и samplers, а также освоили ControlNet, LoRA, инпейтинг и апскейл. На профи-уровне цель меняется: сделать так, чтобы ваши графы были:

  • Стабильными и не падали по памяти.
  • Производительными при серийной генерации.
  • Переиспользуемыми как шаблоны и автопайплайны.
  • Эта статья про три практических направления:

  • оптимизация VRAM,
  • пакетная генерация,
  • автоматизация через параметризацию workflow и API.
  • !Схема, показывающая основные источники потребления VRAM

    Оптимизация VRAM в ComfyUI

    Что именно «ест» видеопамять

    В большинстве случаев VRAM расходуется на две группы вещей.

  • Модели, которые должны быть загружены, чтобы граф работал: checkpoint (внутри него UNet и часто VAE/CLIP), дополнительные модели (ControlNet, LoRA), апскейлеры.
  • Данные и промежуточные вычисления, которые растут от размера изображения и батча: латенты, состояния сэмплера, промежуточные тензоры.
  • Практический вывод:

  • Размер и batch почти всегда влияют сильнее всего.
  • Steps в основном влияет на время, а не на пик VRAM (но конкретная реализация и режимы могут менять картину).
  • Базовый протокол борьбы с OOM

    Когда вы ловите ошибку вида out of memory, важно не «тыкать всё подряд», а идти сверху вниз, от самого сильного фактора к более тонким.

  • Уменьшите Width/Height в источнике латента.
  • Уменьшите batch_size (или количество изображений за один запуск).
  • Упростите граф: временно отключите ControlNet, LoRA, второй проход апскейла, дополнительные декодирования.
  • Проверьте, не делает ли ваш workflow лишних веток (например, два разных VAE Decode, которые оба подключены к сохранению).
  • Размер и соотношение сторон как главные рычаги

    VRAM и время резко растут с увеличением числа пикселей. Поэтому профи-подход обычно такой:

  • Генерировать композицию на более низком разрешении.
  • Дотягивать качество через апскейл и/или второй проход image-to-image с небольшим denoise.
  • Это особенно полезно, если вы делаете серии и вам важнее стабильность процесса, чем максимальное качество с первого прохода.

    Батч: ускоряет производство, но умножает VRAM

    Если вы запускаете генерацию сразу на несколько изображений (batch), вы получаете преимущества:

  • меньше ручных действий,
  • потенциально лучше загрузка GPU.
  • Но почти всегда вы расплачиваетесь VRAM, потому что латенты и часть вычислений масштабируются вместе с batch.

    Профи-правило:

  • Если вы подбираете параметры и сравниваете изменения, генерируйте по 1 изображению.
  • Если вы производите серию с уже найденными настройками, повышайте batch до предела, который стабильно держит ваша видеокарта.
  • Контроль «пиков» VRAM внутри графа

    ComfyUI выполняет только те ноды, которые реально нужны для финального результата. Из этого следует техника оптимизации: уменьшать количество тяжёлых вычислений, подключённых к финальным нодам.

    Типовые источники лишних пиков:

  • Несколько веток VAE Decode и Save Image, которые вы забыли отключить.
  • Превью/сохранение промежуточных результатов, подключённое параллельно к финальному результату.
  • Второй проход KSampler, который включён всегда, хотя нужен только иногда.
  • Практика:

  • Делайте переключаемые ветки через дубли workflow-файлов: workflow_base.json, workflow_upscale.json, workflow_inpaint.json.
  • Или держите вторую ветку отключённой от финального Save Image, пока она не нужна.
  • LoRA и ControlNet: планируйте память как «надбавку»

    LoRA и ControlNet добавляют управляемость, но увеличивают требования.

  • Несколько LoRA и несколько ControlNet одновременно часто приводят к тому, что граф «на грани» и падает при увеличении размера.
  • Профи-подход: сначала соберите граф, который стабильно работает на нужном разрешении без дополнительных модулей, а затем добавляйте их по одному.
  • Важное про «ускорители» и режимы точности

    В экосистеме SD часто встречаются оптимизации внимания и режимы меньшей точности вычислений, которые могут ускорять и/или снижать потребление памяти, но зависят от вашей установки и сборки.

    Корректная стратегия здесь такая:

  • ориентируйтесь на рекомендации и инструкции из репозитория ComfyUI,
  • фиксируйте один тестовый prompt, один seed и один размер,
  • сравнивайте изменения по одному.
  • Ссылка для старта: ComfyUI на GitHub.

    Пакетная генерация: batch, очередь и воспроизводимость

    Batch и очередь в ComfyUI: это разные инструменты

    В ComfyUI есть два способа получить много изображений.

  • Batch: один запуск, который генерирует сразу несколько изображений.
  • Очередь (Queue): несколько запусков подряд, каждый со своими параметрами.
  • !Наглядное сравнение двух подходов к серийной генерации

    Профи-эвристика выбора:

  • Если вы упираетесь в VRAM, используйте очередь (много запусков по 1).
  • Если у вас достаточно VRAM и важна скорость производства, повышайте batch.
  • Как делать серии, чтобы их можно было повторить

    Чтобы серия была воспроизводимой, фиксируйте:

  • checkpoint,
  • positive/negative prompt,
  • sampler/scheduler,
  • steps,
  • CFG,
  • размер,
  • seed (или понятное правило изменения seed).
  • Практичное правило для серии:

  • Один базовый seed для «эталонного» кадра.
  • Дальше либо ручной перебор seed, либо очередь задач, где seed меняется системно.
  • Управляемые вариации без потери контроля

    Если ваша цель не «получить что угодно», а «получить варианты в одном стиле», используйте ограниченный набор изменений:

  • меняйте только seed,
  • или меняйте 1–2 слова в промпте,
  • или добавляйте одну LoRA с небольшим весом.
  • Если менять одновременно seed, CFG, sampler и промпт, серия будет выглядеть как набор случайных картинок, а не как управляемая выборка.

    Практика сохранения результатов

    В производственной работе важно, чтобы у файлов была понятная структура:

  • один префикс на одну задачу,
  • сохранение workflow вместе с результатом,
  • возможность вернуться и пересобрать результат.
  • ComfyUI умеет сохранять изображения, а также удобно хранить рядом экспортированный workflow (обычный и API-формат, если вы используете автоматизацию).

    Автопайплайны: превращаем workflow в шаблон

    Параметризация: делаем граф «настраиваемым»

    Профи-уровень ComfyUI начинается там, где вы перестаёте править текст прямо в каждой ноде и начинаете строить граф как шаблон.

    Ключевая идея:

  • выносите параметры в отдельные входы,
  • чтобы менять их быстро и без риска «сломать» граф.
  • В ComfyUI часто используется подход:

  • преобразовать значения виджетов нод в входы,
  • подключать к ним примитивы (строки, числа, сиды),
  • и в итоге иметь один workflow, который легко переиспользовать.
  • Практические параметры, которые почти всегда стоит вынести:

  • positive prompt,
  • negative prompt,
  • seed,
  • width/height,
  • steps,
  • CFG,
  • выбор checkpoint,
  • веса LoRA,
  • strength у ControlNet.
  • Стандартизация: «слои» в графе

    Чтобы графы читались быстро и поддерживались месяцами, придерживайтесь структуры слоями.

  • Загрузка моделей: checkpoint, VAE (если отдельно), LoRA, ControlNet.
  • Текстовые условия: positive/negative encode, модификации conditioning.
  • Источник латента: пустой латент или VAE encode из изображения.
  • Сэмплинг: один или несколько KSampler.
  • Постобработка: decode, апскейл, шарп, цвет.
  • Вывод: сохранение, превью, дополнительные форматы.
  • Даже если у вас сложный граф, такая стандартизация уменьшает ошибки и ускоряет отладку.

    Версионирование workflow как часть процесса

    Профи-привычка:

  • сохраняйте версии workflow при каждом значимом улучшении,
  • подписывайте изменения в имени файла.
  • Пример схемы именования:

  • portrait_base_v1.json
  • portrait_base_v2_lora.json
  • portrait_v3_controlnet_pose.json
  • portrait_v4_upscale_2pass.json
  • Это дешевле, чем потом пытаться восстановить «тот самый удачный граф» по памяти.

    Автоматизация через API: очередь задач без интерфейса

    ComfyUI предоставляет HTTP-интерфейс, поэтому его можно использовать как генератор-сервис: вы отправляете workflow, ComfyUI ставит задачу в очередь и возвращает результаты.

    Базовый рабочий подход:

  • В интерфейсе ComfyUI экспортируйте ваш workflow в API-формате.
  • Подставляйте параметры (prompt, seed, размеры) программно.
  • Отправляйте задачи в очередь через API.
  • Забирайте результаты по истории выполнения.
  • Официальная отправная точка, где обычно смотрят актуальные детали и изменения: ComfyUI на GitHub.

    Пример каркаса запроса на Python (точные поля зависят от экспортированного API-workflow и версии):

    Смысл этого примера не в конкретных ключах (они меняются), а в принципе:

  • сначала делаете workflow параметризуемым,
  • потом автоматизируете его выполнение.
  • Итоги

    На профи-уровне ComfyUI важны не только художественные настройки, но и инженерная дисциплина.

  • Оптимизация VRAM начинается с контроля размера и batch, а затем с упрощения графа и отключения лишних веток.
  • Пакетная генерация бывает через batch или через очередь, и это выбор между скоростью и стабильностью по памяти.
  • Автопайплайны строятся через параметризацию workflow, стандартизацию слоёв и, при необходимости, выполнение через API.