Контроль генерации: sampler, CFG, seed, разрешение и upscale
В предыдущих статьях вы разобрали базовый граф text-to-image, научились выбирать ресурсы (checkpoint, VAE, LoRA, embeddings) и строить промпты. Теперь добавим следующий слой управления: параметры, которые определяют как именно модель приходит к изображению и в каком разрешении вы получаете результат.
Эта тема связывает всё пройденное:
Промпт и ресурсы задают цель и возможности.
Sampler, scheduler, steps, CFG и seed определяют траекторию поиска изображения.
Разрешение и upscale определяют детализацию, скорость, стоимость по VRAM и то, насколько хорошо сохраняется композиция.Где эти параметры живут в графе ComfyUI
В базовой схеме (из первой статьи) ключевой узел управления генерацией — KSampler. Именно в нём вы управляете:
sampler_name и scheduler
steps
cfg
seed
denoiseА параметры разрешения чаще всего задаются узлом Empty Latent Image (для text-to-image) или настройками, которые создают/масштабируют латент при двухпроходной генерации.
Метод работы, который делает результат предсказуемым
Чтобы понимать причинно-следственные связи, придерживайтесь простого лабораторного цикла:
Фиксируйте seed, когда сравниваете изменения.
Меняйте один фактор за раз: либо sampler, либо CFG, либо steps, либо промпт.
Сравнивайте не один кадр: берите 3–6 разных seed, если проверяете устойчивость настройки.Это продолжает инженерный подход из первых статей: ComfyUI удобен тем, что вы можете собирать управляемые эксперименты прямо в графе.
Sampler и scheduler: как модель проходит путь от шума к изображению
Что такое sampler
Sampler — это алгоритм, который решает, как на каждом шаге уменьшать шум и приближаться к изображению. Он влияет на:
характер деталей (резкость, микротекстуры)
стабильность (насколько часто «ломает» лица/руки)
скорость при тех же шагахComfyUI использует набор сэмплеров, широко распространённых в экосистеме Stable Diffusion. Источник исторически связан с реализациями семейства k-diffusion: k-diffusion на GitHub.
Что такое scheduler
Scheduler — это то, как распределяются уровни шума по шагам. Проще думать так:
sampler — как делаем шаг
scheduler — как меняем «громкость шума» от шага к шагуОдна и та же пара sampler + steps может вести себя по-разному при разных scheduler.
Практические ориентиры по выбору
Нет «лучшего навсегда» варианта, но есть рабочие стартовые сочетания:
Для универсального качества: DPM++-семейство (часто даёт аккуратные детали и стабильность).
Для быстрых черновиков: более простые варианты с меньшим числом шагов.
Для художественной “неровности” и большего разнообразия: варианты с более «шумным» характером.Главная мысль: выбирайте связку под задачу и фиксируйте её как часть пресета, как вы фиксируете checkpoint.
Steps: когда шаги помогают, а когда нет
Steps — число итераций. Больше шагов:
обычно повышает проработку деталей
повышает время генерации
после некоторого порога даёт убывающую отдачуПрактический диапазон для старта (часто работает как база для сравнения):
15–25 steps для быстрых тестов
25–40 steps для «финальных» кадровЕсли изображение «грязное» или недоделанное, прибавьте steps. Если изображение уже хорошее, но «не слушается промпт» или рушится стиль — проблема часто не в шагах (а в CFG, промпте, ресурсе или несовместимой LoRA).
CFG: сила следования промпту
Что означает CFG
CFG (Classifier-Free Guidance) — параметр, который регулирует, насколько сильно модель следует positive по сравнению с базовой “свободной” генерацией. Концептуальную основу описывает работа про classifier-free guidance: Classifier-Free Diffusion Guidance (arXiv).
Как это проявляется на практике:
низкий CFG: изображение более естественное, но модель может «не услышать» детали промпта
высокий CFG: детали промпта усиливаются, но растут риски артефактов и «пережатого» видаТипичные симптомы неправильного CFG
CFG слишком низкий:
- теряются конкретные атрибуты (
red dress становится “просто платьем”)
- стиль “плавает”
CFG слишком высокий:
- кожа становится пластиковой или “перешарпленной”
- фон начинает ломаться
- появляются странные контуры и артефакты
Рабочие диапазоны
Стартовая зона, которую удобно брать как “норму”:
4–8 для многих задачНо это не правило, а точка отсчёта. CFG нужно подбирать вместе с:
промптом (особенно с весами и перегрузом)
выбранным checkpoint
LoRA (сильная LoRA + высокий CFG часто дают перебор)Seed: управляемая случайность и воспроизводимость
Что такое seed
Seed — это число, из которого инициализируется генератор случайности. В контексте диффузии это влияет на начальный шум и, как следствие, на итоговую композицию и детали.
Практические правила:
Один и тот же seed при одинаковых настройках даёт воспроизводимый результат.
Если вы меняете sampler, CFG, steps, промпт или LoRA, фиксированный seed помогает честно сравнивать изменения.
Если вы хотите разнообразие, меняйте seed, а не переписывайте промпт “в надежде”.Seed как инструмент контроля вариативности
Удобная стратегия в работе:
Сначала найдите удачный seed, где композиция “в целом правильная”.
Потом фиксируйте seed и полируйте: промпт, CFG, steps, LoRA, VAE.
Затем проверяйте устойчивость на нескольких других seed.Разрешение: качество, композиция, VRAM и скорость
Где задаётся разрешение
В text-to-image разрешение обычно задаётся в Empty Latent Image. Это важно: модель на самом деле генерирует латент, и стоимость по памяти/времени растёт вместе с размером латента.
Как разрешение влияет на результат
Разрешение меняет не только детализацию, но и поведение композиции:
Малое разрешение:
- быстрее
- проще держать целостную композицию
- меньше микродеталей
Большое разрешение:
- больше деталей
- выше риск “расползания” (особенно если промпт перегружен)
- резко растут требования к VRAM
База модели и “родные” размеры
Разные семейства моделей “любят” разные масштабы. Практически полезно помнить:
SD 1.5 чаще комфортно чувствует себя около 512 по короткой стороне.
SDXL обычно рассчитан на более высокие базовые размеры.Если вы генерируете сильно выше «родного» диапазона, вы часто платите качеством (или стабильностью), даже если VRAM позволяет.
Соотношение сторон как часть промптинга
Соотношение сторон — это скрытая часть композиции. Для дисциплины полезно выбирать его осознанно:
портрет: вертикальные форматы
пейзаж/кино: широкие форматы
товарка/каталог: ближе к квадрату или умеренному прямоугольникуЕсли вы просите wide shot cinematic frame, но генерируете квадрат, модель будет “бороться” между текстом и геометрией.
Upscale: как получать высокое разрешение без потери управляемости
Многие новички сразу увеличивают размер в Empty Latent Image и получают:
медленную генерацию
меньше устойчивости
больше артефактовЧаще профессиональный подход — делать upscale в 1–2 этапа.
Стратегия A: апскейл уже готового изображения
Смысл: сначала сгенерировать картинку, затем увеличить её алгоритмом апскейла.
Плюсы:
быстро и экономно по VRAM
композиция сохраняется максимальноМинусы:
апскейл повышает резкость и размер, но не всегда добавляет “настоящую” новую детальЭта стратегия хороша, если изображение уже достаточно детализировано и вам нужно больше пикселей для печати/верстки.
Стратегия B: двухпроходная генерация (hires-подход)
Смысл: сначала получить хорошую композицию в меньшем размере, затем увеличить латент или изображение и доделать детали вторым проходом с небольшим denoise.
!Диаграмма показывает, как делается upscale через второй проход сэмплирования
Ключевой параметр здесь — denoise во втором KSampler:
denoise около 0.2–0.35:
- композиция почти не меняется
- добавляется аккуратная детализация
denoise около 0.4–0.6:
- деталей больше
- растёт риск заметно изменить лицо, позу, одежду
Практический смысл denoise: это “сколько свободы” вы даёте модели перерисовать изображение на втором проходе.
Как не испортить результат при upscale
Проверяйте типичные проблемы и решения:
Детализация выросла, но лицо “поехало”:
- уменьшите denoise во втором проходе
- уменьшите CFG во втором проходе
Появился шум/перешарп:
- уменьшите CFG
- попробуйте другую связку sampler/scheduler
- проверьте VAE (иногда смена VAE влияет сильнее, чем кажется)
Стиль “сломался” после upscale:
- убедитесь, что LoRA и промпт одинаково поданы в оба прохода
- уменьшите вес LoRA на втором проходе, если она слишком доминирует
Практические пресеты для старта
Таблица ниже — не «истина», а удобные отправные точки для экспериментов при фиксированном seed.
| Задача | Базовое разрешение | Steps | CFG | Upscale-подход |
|---|---:|---:|---:|---|
| Быстрый поиск идеи | 512 по короткой стороне | 15–20 | 4–7 | без upscale |
| Портрет с аккуратной кожей | 512–768 по короткой стороне | 25–35 | 4–7 | 2 прохода, denoise 0.2–0.35 |
| Иллюстрация с текстурами | 512–768 по короткой стороне | 25–40 | 5–8 | 2 прохода, denoise 0.25–0.45 |
| Большой кадр для верстки | меньшее базовое | 20–35 | 4–7 | сначала стабильная композиция, затем upscale |
Частые ошибки и быстрые диагностики
Ошибка: “кручу всё сразу и не понимаю, что помогло”.
- Решение: фиксируйте seed и меняйте один параметр.
Ошибка: “ставлю огромное разрешение, чтобы было детально”.
- Решение: сначала композиция на меньшем размере, затем upscale и второй проход.
Ошибка: “повышаю CFG, чтобы модель слушалась”.
- Решение: сначала уберите конфликты в промпте и перегруз; затем добавляйте веса точечно.
Что дальше по курсу
Теперь у вас есть базовые ручки управления процессом генерации: sampler/scheduler, steps, CFG, seed, разрешение и upscale. Следующий логичный шаг — графовые фишки управления условием: смешивание conditioning, разные промпты на разные этапы, управление композицией через дополнительные узлы.
Это станет мостом к custom nodes: многие “фишки” в ComfyUI — это просто удачно упакованные куски графа, которые можно превратить в переиспользуемый компонент.
Полезные источники:
ComfyUI на GitHub
Classifier-Free Diffusion Guidance (arXiv)
k-diffusion на GitHub