Большой разбор
ComfyUI с нуля: как читать workflow и собрать первый граф
ComfyUI показывает генерацию как граф: каждая нода выполняет одну операцию, а связь передаёт данные дальше. Если научиться читать этот маршрут от модели до сохранённого файла, даже большой workflow перестаёт быть клубком проводов. Соберём базовую схему и разберём, где искать причину, когда она не запускается.
От модели до файла — один видимый маршрут
При первом открытии ComfyUI взгляд цепляется за прямоугольники и цветные линии. Одни ноды загружают модель, другие превращают текст в условия, третьи работают с латентным представлением, четвёртые декодируют и сохраняют изображение.
В обычном интерфейсе эти операции скрыты за одной кнопкой. Здесь они разложены на столе. Сначала это выглядит сложнее, зато на любой стадии можно увидеть, какие данные пришли, куда они отправились и какой узел должен сработать дальше.
Workflow удобно читать как технологическую карту. Есть исходные материалы, последовательность операций и результат. Если один вход остался пустым или получил данные неподходящего типа, маршрут обрывается в конкретном месте — и это уже не загадка.
Из чего состоит граф
У любой ноды есть функция, входы и выходы. Загрузчик модели, например, может вернуть несколько сущностей: саму модель для sampler, текстовый энкодер для prompt и декодер для перевода латента в пиксели. Это не три варианта одного файла, а три разных типа данных.
Связь между портами передаёт значение. Цвет порта помогает отличать типы, но полезнее читать подписи: MODEL, CONDITIONING, LATENT, VAE, IMAGE и другие. ComfyUI не соединяет несовместимые порты просто потому, что они находятся рядом.
Граф исполняется не слева направо по координатам. Система начинает с выходных узлов, нужных для текущего запуска, и вычисляет их зависимости. Поэтому нода может стоять визуально «не на своём месте» и всё равно работать. Положение отвечает за удобство чтения, связи — за логику.
Что происходит после запуска
Когда workflow отправлен в очередь, ComfyUI проверяет обязательные входы и строит план выполнения. Узлы, чей результат не изменился и может быть переиспользован, не обязательно вычисляются заново. Эта особенность делает граф удобным для экспериментов: изменение prompt не требует повторно загружать неизменившуюся модель.
Сообщение об ошибке обычно относится к первой операции, которую не удалось выполнить. Остальные ноды после неё могут подсветиться или остаться без результата, но начинать поиск причины полезнее с самого раннего сломанного узла.
Минимальный text-to-image workflow
Названия и количество нод зависят от архитектуры модели. У одних checkpoint содержит почти всё необходимое, другим нужны отдельные загрузчики текстовых энкодеров, VAE или диффузионной модели. Поэтому универсальной схемы из строго семи блоков нет.
Зато общий маршрут стабилен:
- Загрузить компоненты модели. На выходе должны появиться сущности, которые ожидают следующие узлы.
- Подготовить текстовые условия. Prompt кодируется подходящим энкодером. Поддержка negative prompt зависит от модели и workflow.
- Создать или получить латент. Для text-to-image это обычно исходный шум нужной формы; для img2img — закодированное исходное изображение.
- Выполнить сэмплирование. Sampler получает модель, условия, латент и параметры процесса.
- Декодировать латент. Совместимый VAE или другой декодер переводит внутреннее представление в изображение.
- Показать или сохранить результат. Выход IMAGE приходит в preview, save или следующую ветку обработки.
Для первого запуска проще открыть официальный шаблон, который соответствует выбранной модели, и проследить маршрут от Save Image назад. Такой разбор сразу показывает, какие компоненты нужны именно этому семейству и почему случайная замена loader часто ломает весь граф.
Установка без привязки к одной сборке
У ComfyUI есть официальный Desktop‑вариант и другие способы запуска. Состав пакетов, поддерживаемое оборудование и инструкции меняются, поэтому точкой входа лучше держать официальный репозиторий ComfyUI и актуальную документацию, а не команду из старого видео.
Для первого знакомства удобна изолированная установка: её зависимости и Python не смешиваются с другими проектами. Если позже понадобится стабильная рабочая сборка и отдельная экспериментальная, их проще держать независимо и обновлять в разное время.
В официальном Desktop‑варианте Manager уже входит в комплект. Его не нужно устанавливать как отдельную ноду по старым инструкциям. В других вариантах запуска способ включения может отличаться; актуальный путь описан в документации Manager.
Где ComfyUI ищет модели
Модели лежат в каталогах по назначению, а дополнительные хранилища можно подключить через конфигурацию путей. Точные папки зависят от типа компонента: checkpoint, VAE, LoRA, ControlNet, текстовый энкодер и upscale-модель не взаимозаменяемы.
Если файл не появился в loader, полезно проверить три вещи:
- этот loader поддерживает формат и семейство модели;
- файл лежит в каталоге, который входит в пути поиска;
- после изменения файлов список моделей обновился или приложение было перезапущено, если это требуется сборке.
Официальная библиотека шаблонов помогает связать модель с подходящим workflow. Это надёжнее, чем брать сложный JSON, менять в нём один checkpoint и надеяться, что остальные компоненты совместимы.
Как читать sampler
Sampler — участок, где латент постепенно меняется под влиянием модели и условий. В разных workflow он может быть собран одной нодой или разложен на несколько операций, но вопросы остаются похожими.
- Seed или noise seed задаёт исходную случайность. Зафиксированный seed удобен для сравнения изменений, но не обещает одинаковую картинку при другой модели, версии нод или вычислительной среде.
- Steps задаёт число шагов выбранного процесса. Больше шагов не означает автоматически больше деталей: после полезного диапазона время растёт, а изображение может почти не меняться.
- CFG или guidance управляет влиянием текстового условия там, где выбранная модель использует такой механизм. Шкалы разных архитектур нельзя переносить напрямую.
- Sampler и scheduler описывают способ пройти по уровням шума. Их сочетание оценивают вместе с конкретной моделью и задачей.
- Denoise определяет, какую часть процесса проходит входной латент. Его практический эффект зависит от того, был ли латент создан из полного шума или получен из исходного изображения.
Поэтому таблица с «лучшими настройками для всех» быстро устаревает. Для чистого сравнения достаточно зафиксировать workflow и seed, изменить один параметр и посмотреть не только на красоту кадра, но и на то, какую именно часть результата он изменил.
Denoise и исходное изображение
В text-to-image процесс обычно начинается с полного шума. В img2img или inpainting исходная картинка сначала кодируется в латент, после чего часть её структуры может сохраниться.
Чем меньше пройденная часть процесса, тем сильнее результат обычно держится за вход. Чем она больше, тем свободнее модель перестраивает форму и детали. Это не линейная шкала «процентов сходства»: поведение зависит от модели, sampler, prompt и самого изображения.
Зачем нужен VAE
Латент нельзя показать как обычную картинку без декодирования. VAE или другой подходящий декодер выполняет этот перевод. Он должен соответствовать модели и способу, которым был создан латент.
Странные цвета, пустой preview или ошибка формы иногда действительно связаны с VAE, но не только с ним. Сначала стоит проверить типы входов и совместимость компонентов, а уже затем менять декодер наугад.
Первый практический маршрут
Спокойный первый сеанс можно построить без коллекции расширений.
- Установить ComfyUI по официальной инструкции и открыть один штатный template workflow.
- Добавить только те компоненты модели, которые указаны для этого шаблона.
- Найти выходную ноду и пройти по связям назад до loader.
- Запустить пример без структурных изменений и убедиться, что изображение сохраняется.
- Зафиксировать seed, изменить только prompt и сравнить результат.
- Вернуть prompt, изменить один параметр sampler и снова сравнить.
- Сохранить чистый рабочий workflow как точку возврата.
После такого круга граф уже читается как процесс, а не как чужая картинка. Следующую возможность — LoRA, ControlNet, референс или второй проход — можно добавить отдельной веткой и сразу увидеть, куда она входит.
Как искать поломку
Диагностика начинается не с полной перестройки, а с короткого прохода по маршруту.
Нода отсутствует
Если импортированный workflow содержит незнакомый тип, ComfyUI не может исполнить этот участок. Встроенный Manager умеет находить зарегистрированные пакеты для missing nodes, устанавливать, обновлять, отключать и удалять их. Перед установкой полезно посмотреть, какой пакет добавляет нужную ноду и зачем она участвует в графе.
Custom node — исполняемый код со своими зависимостями. Несколько пакетов могут требовать разные версии одной библиотеки, поэтому рабочая сборка ценит умеренность. Снимок состояния или отдельная экспериментальная установка делает обновления менее нервными.
Нода есть, но вход красный
Чаще всего это несовместимый тип, отсутствующая модель или неверная форма данных. Названия нод могут быть похожи, но выход одного loader не обязан подходить к узлу другого семейства.
Здесь помогает чтение от ошибки назад: какой вход обязателен, откуда он приходит, что выдаёт предыдущая нода. Журнал запуска добавляет техническую причину — отсутствующий файл, зависимость, нехватку памяти или ошибку внутри custom node.
Граф работает, но результат странный
Технически успешная генерация ещё не означает, что параметры подходят задаче. Удобнее вернуться к чистой версии и по очереди проверить модель, prompt, latent, guidance, denoise, декодер и каждую дополнительную ветку.
Как расширять workflow
Дополнительные ветки проще воспринимать по их роли:
- LoRA меняет поведение модели через дополнительные веса.
- ControlNet и родственные способы управления добавляют условие по позе, глубине, линиям или другой структуре.
- Референс изображения передаёт визуальные признаки через подходящий encoder или adapter.
- Второй проход получает уже созданный латент или изображение и дорабатывает его.
- Batch и очередь повторяют стабильный процесс с разными входами.
Сложный workflow необязательно держать одним полотном. Группы, понятные названия и subgraphs помогают свернуть проверенный участок в повторно используемый блок. Это меняет оформление, но не скрывает типы входов и выходов.
С чем часто путают
- Workflow и изображение. Граф описывает процесс, но не включает автоматически все внешние модели и custom nodes. Для переноса нужны совместимые компоненты.
- Seed и воспроизводимость. Seed фиксирует исходную случайность, а не всю среду. Другая модель, sampler или версия узла может изменить результат.
- Manager и сама генерация. Встроенный Manager управляет пакетами и моделями; он не заменяет ноды, из которых собран workflow.
- Связь и порядок на экране. Исполнение определяют зависимости, а не положение прямоугольников слева или справа.
Частые вопросы
Нужно ли собирать первый workflow вручную?
Необязательно. Официальный шаблон выбранной модели лучше показывает совместимые loader, encoder и decoder. После первого успешного запуска его можно разобрать и собрать заново как упражнение.
Почему некоторые workflow не используют negative prompt?
Способ текстового conditioning зависит от архитектуры модели. Если штатный template не передаёт отрицательное условие, добавление знакомой ноды из другого семейства не обязательно даст ожидаемый эффект.
Где теперь устанавливать custom nodes?
В официальном Desktop используется встроенный Manager. Он ищет зарегистрированные пакеты, показывает missing nodes и управляет обновлениями. Отдельная установка Manager как custom node относится к другим или старым вариантам сборки и не нужна для этого маршрута.
Почему после смены checkpoint граф сломался?
Файл мог принадлежать другому семейству и требовать иной loader, текстовый encoder, latent format или decoder. Безопаснее открыть подходящий template и сравнить компоненты, а не менять только имя модели.
Как сохранить рабочий вариант?
Workflow можно сохранить отдельно, а изображения часто содержат метаданные графа, если этот механизм не был отключён или удалён при обработке. Для проекта надёжнее хранить JSON, список моделей и заметку о важных версиях рядом.
Источники и связанные материалы
- Официальный репозиторий ComfyUI — варианты установки, поддерживаемые платформы и изменения проекта.
- Встроенные ноды — актуальный справочник по Comfy Core.
- ComfyUI Manager — missing nodes, пакеты, модели и snapshots.
- Custom Nodes — чем расширения отличаются от core nodes.
- KSampler — параметры процесса сэмплирования.
- VAE и Denoising Strength — декодирование и глубина изменения исходника.
- JSON Workflow — перенос и хранение графа.
Главное
ComfyUI становится понятнее, когда граф читается от результата к зависимостям. Loader даёт компоненты модели, text encoder создаёт условия, sampler меняет латент, decoder превращает его в изображение, а output сохраняет результат. Названия нод и интерфейс будут развиваться, но совместимость портов и видимый маршрут данных останутся основой. Чистый template, одно изменение за раз и сохранённая точка возврата дают больше контроля, чем большая коллекция случайных расширений.
Карта дальше — термины из словаря
Если хотите идти глубже — вот все термины, упомянутые в этом гиде. Можно открыть в новой вкладке и читать параллельно.
Подписка Neurosaver
Получать новые разборы Neurosaver
Большие материалы выходят не каждый день, зато их стоит читать спокойно. Подпишитесь, и мы пришлём новые разборы и важные обновления словаря.