Guidance
guidance — способы направлять генерацию к заданному условию
Guidance — семейство способов направлять генерацию к условию. Классический CFG усиливает разницу между условным и опорным предсказаниями, некоторые модели получают guidance как собственный параметр conditioning, а модульный guider может соединять ветви по другой формуле. Эти шкалы не равны весам ControlNet, LoRA или IP-Adapter и не переносятся между моделями один к одному.
Коротко
Guidance направляет генерацию к условию, но не сводится к одному универсальному ползунку. В классическом classifier-free guidance модель сравнивает предсказание с условием и опорное предсказание без него, затем усиливает разницу. Другие модели принимают число guidance как часть conditioning или используют специально обученный guider.
Чем больше значение, тем не обязательно точнее промпт. Усиление может повысить заметность условия, но одновременно уменьшить разнообразие, испортить цвет, свет и мелкие формы. Рабочая шкала зависит от модели, её обучения, sampler и конкретной реализации guidance.
Что означает guidance
В широком смысле guidance — любой механизм, который меняет траекторию генерации в сторону заданного условия: текста, класса, изображения или другого сигнала.
У этого слова есть несколько уровней:
- идея — направлять выборку к условию;
- алгоритм — например, classifier guidance или classifier-free guidance;
- параметр модели — число
guidance, которое модель получила во время обучения; - объект в программе — например,
GUIDERв модульном sampling ComfyUI.
Из-за этого два поля с подписью guidance могут делать совершенно разные вещи. Сравнивать их только по цифре бессмысленно.
Как работает классический CFG
Classifier-free guidance использует два предсказания одной модели:
C— conditional: предсказание с положительным условием;U— unconditional или reference: опорное предсказание без положительного условия.
Распространённая формула в интерфейсах выглядит так:
guided = U + s × (C − U)
При s = 0 остаётся U. При s = 1 получается C. Значения выше 1 продолжают движение за conditional-предсказание — это уже экстраполяция, а не спокойное смешивание двух картинок.
В статьях и библиотеках встречаются другие обозначения коэффициента. Иногда формулу записывают через C + w × (C − U), и тогда w = 0 соответствует conditional-ветви. Перед сравнением чисел важно сравнить сами формулы.
Откуда берётся отрицательный промпт
В практических text-to-image workflow роль U часто играет не пустая строка, а negative conditioning. Тогда CFG усиливает направление от negative-ветви к positive-ветви.
Negative prompt не является списком объектов, которые модель сначала находит и удаляет. Это второе conditioning-предсказание в формуле. Поэтому длинный negative может менять стиль, свет и композицию, даже если перечисленные слова не появлялись буквально.
Название classifier-free означает, что отдельный внешний классификатор для guidance не нужен. Условную и опорную оценки даёт сама генеративная модель, обученная работать в обоих режимах.
Почему высокий CFG портит изображение
CFG усиливает разность C − U. Вместе с полезным направлением усиливаются ошибки и особенности конкретной пары conditioning.
На больших значениях часто появляются:
- жёсткий локальный контраст и неестественные цвета;
- потеря тонких текстур и полутонов;
- ломкие контуры и повторяющиеся детали;
- меньшая вариативность между seed;
- нестабильность при несовместимом sampler или коротком schedule.
Это не универсальный список и не порог. Современные модели могут быть обучены, дистиллированы или донастроены под иной режим guidance. Для одних CFG выше единицы — штатная часть sampling, для других парная CFG-ветвь вообще не нужна.
Model-native guidance
Некоторые архитектуры получают guidance как входной параметр самой модели. В ComfyUI узел FluxGuidance не вычисляет формулу CFG: он записывает числовое значение guidance в объект CONDITIONING. Дальше модель использует его так, как предусмотрено её обучением.
Это объясняет, почему model-native guidance нельзя считать «тем же CFG с другой шкалой». Число находится в другой части графа и может менять внутреннее поведение модели, не создавая отдельную negative-ветвь.
Название узла историческое и не означает, что одно значение подходит всему семейству моделей. Варианты одной архитектуры — base, dev, distilled, schnell, edit — могут ожидать разные conditioning и sampling-схемы.
Guider в ComfyUI
В обычном KSampler положительное и отрицательное conditioning вместе с cfg скрыты внутри одного узла. Модульный sampling выносит эту логику отдельно.
CFGGuiderполучаетMODEL, positive, negative иcfg, затем создаёт объектGUIDER.BasicGuiderработает с одним conditioning без классической пары positive/negative.DualCFGGuiderсоединяет две conditional-ветви с отдельными коэффициентами относительно negative-ветви.
Guider не заменяет sampler и scheduler. Он отвечает за подготовку направленного предсказания модели, а sampler решает, как по этому предсказанию перейти к следующей точке sigma schedule.
Такое разделение полезно для понимания: guidance — не свойство seed и не число «качества», а часть вычисления, которое sampler получает на каждом шаге.
ControlNet strength, LoRA strength и IP-Adapter weight
Эти параметры иногда называют guidance в разговорной речи, потому что они тоже меняют влияние условия. Технически это разные операции.
- ControlNet strength масштабирует добавку или conditioning, созданные ControlNet.
- IP-Adapter weight управляет вкладом image-conditioning в предусмотренной точке модели.
- LoRA strength масштабирует низкоранговую поправку к весам модели или текстового энкодера.
- Prompt weighting меняет вклад токенов или фрагментов conditioning до sampling.
CFG применяется к разнице предсказаний. Вес LoRA меняет сами веса, а ControlNet — дополнительные признаки или residual. Поэтому значение 1 в этих местах не имеет общего физического смысла и не обязано давать одинаковую «силу».
Guidance и точность промпта
Одна цифра не умеет исправлять все причины слабого соответствия. Модель может не знать термин, токенизация может разделить слово неудачно, conditioning может быть обрезан, а несколько требований — конфликтовать.
Повышение guidance усиливает уже существующее направление. Если модель неверно поняла условие, она может увереннее усиливать именно неверную интерпретацию.
Оценивать полезнее не абстрактную «послушность», а конкретные признаки: присутствует ли объект, сохранены ли отношения, читается ли стиль, не исчезла ли естественность света и не повторяются ли детали.
Как сравнивать значения
Честная сетка сохраняет неизменными модель, conditioning, seed, latent, sampler, scheduler, steps и подключённые адаптеры. Меняется только один guidance-параметр.
Один seed показывает частный случай. Несколько сцен и seed позволяют увидеть три независимых эффекта:
- соответствие условию;
- визуальное качество;
- разнообразие результатов.
Оптимум по этим осям может быть разным. Самый буквальный вариант не всегда самый живой, а самый красивый — не всегда выполняет задачу.
Guidance schedule и rescale
Guidance не обязательно остаётся постоянным на всём пути. Некоторые workflow меняют коэффициент по sigma schedule: сильнее направляют раннюю композицию или, наоборот, ослабляют CFG на поздних деталях.
Guidance rescale, CFG++ и другие модификации меняют нормализацию либо саму формулу объединения ветвей. Они могут уменьшать отдельные артефакты, но не образуют единого стандарта. Название метода, его реализация и коэффициенты должны храниться вместе с workflow.
Скорость и память
Классический CFG требует получить conditional и reference-предсказания. Реализация может собрать их в один batch, вычислить последовательно или пропустить ненужную ветвь при специальном режиме.
Поэтому утверждение «CFG всегда ровно вдвое медленнее» неверно. Нагрузка зависит от модели, batch, оптимизаций, offload и того, выполняется ли reference-ветвь фактически. Изменение самой цифры cfg обычно дешевле, чем изменение числа ветвей.
С чем часто путают
- Guidance и conditioning — conditioning содержит сигнал; guidance определяет, как этот сигнал участвует в предсказании или передаётся модели.
- CFG и negative prompt — negative conditioning является одной ветвью практической CFG-схемы, но не всей схемой.
- Guidance и steps — steps задают дискретизацию пути, guidance меняет направленное предсказание на его точках.
- Guidance и denoise — denoise выбирает участок sigma schedule, а не силу текста.
- Guidance и adapter weight — оба влияют на результат, но в разных местах вычислительного графа.
- CFG scale и качество — это коэффициент алгоритма, а не рейтинг изображения.
Частые вопросы
Какое значение guidance выбрать?
То, на котором конкретная модель и workflow дают нужный баланс соответствия, качества и разнообразия. Начальная точка берётся из model card или официального примера именно этой версии модели, затем проверяется небольшой сеткой вокруг неё.
CFG 1 означает отсутствие guidance?
В формуле U + s × (C − U) при s = 1 результат равен conditional-предсказанию. Экстраполяции за него нет, но условие всё ещё присутствует. Некоторые интерфейсы называют это «CFG отключён», имея в виду отсутствие второй усиливающей ветви или её оптимизированный пропуск.
Можно ли перенести CFG из одной модели в другую?
Цифру перенести можно, смысл — нет. Модели различаются обучением, parameterization, conditioning и distillation. Даже похожий визуальный результат на одном промпте не гарантирует одинакового поведения на других сценах.
Почему FluxGuidance и cfg стоят в одном workflow?
Они могут выполнять разные роли. FluxGuidance кладёт model-native число в conditioning, а cfg у KSampler или CFGGuider управляет парным смешиванием предсказаний. Если модель ожидает только первый механизм, второй часто оставляют в нейтральном режиме — но конкретную схему определяет model card.
Чем BasicGuider отличается от CFGGuider?
BasicGuider передаёт одно conditioning без классического positive/negative CFG-смешивания. CFGGuider строит пару ветвей и применяет коэффициент cfg.
Первоисточники
- Classifier-Free Diffusion Guidance
- CFGGuider — документация ComfyUI
- FluxGuidance — документация ComfyUI
- DualCFGGuider — документация ComfyUI
- Реализация модульных guider в ComfyUI
- Реализация sampling и CFGGuider в ComfyUI
Главное
Guidance — это семейство механизмов направления генерации, а не единая шкала «послушности». Классический CFG усиливает разницу между conditional и reference-предсказаниями. Model-native guidance передаёт число внутрь conditioning, а веса ControlNet, IP-Adapter и LoRA действуют в других частях модели. Рабочие значения определяются обучением и реализацией, поэтому числа сравнивают только внутри одного зафиксированного workflow.