Scheduler
noise schedule — последовательность уровней шума при генерации
Scheduler задаёт, на каких уровнях шума или временных точках sampler делает шаги генерации. При одинаковом числе шагов расписание может распределить их равномерно, плотнее в середине или ближе к одному из краёв траектории. Поэтому результат зависит не только от sampler, но и от их совместимости с моделью.
Коротко
Scheduler определяет, на каких уровнях шума или временных точках sampler будет обновлять изображение. Sampler отвечает за расчёт следующего состояния, scheduler — за маршрут этих расчётов. Одинаковое число шагов можно распределить по траектории по-разному, поэтому два расписания способны дать разные детали, контраст и устойчивость.
Представим дорогу от почти чистого шума к готовой фотографии. На ней есть несколько остановок. Их можно расставить через равные интервалы, собрать плотнее в середине или сдвинуть к концу. Число остановок не изменилось, но внимание к разным участкам пути стало другим. Это и есть основная идея расписания.
Что именно задаёт scheduler
Диффузионная генерация не удаляет весь шум одним движением. Модель много раз предсказывает, как изменить текущее состояние. Каждый такой переход происходит при определённом уровне шума.
Удобно представить расписание как последовательность:
σ₀ > σ₁ > σ₂ > ... > σₙ
Здесь σ — условная мера зашумлённости. В других параметризациях используются timesteps или непрерывное время t, но смысл похож: sampler должен знать, из какой точки траектории он делает шаг и в какую переходит.
Scheduler формирует эти точки. При одном и том же n расстояния между соседними значениями могут отличаться:
равномерно: ●──●──●──●──●──●──●
плотнее в середине: ●────●●●●●────●
плотнее к концу: ●────────●●●●●●
Такое распределение называют discretization или spacing — дискретизацией непрерывной траектории.
Scheduler и sampler — не одно и то же
В ComfyUI эти параметры выбраны отдельно. Sampler получает предсказание модели и вычисляет следующее состояние латента. Scheduler выдаёт последовательность уровней, на которых sampler должен это сделать.
Метафора с дорогой здесь довольно точная:
- sampler — способ движения от одной остановки к следующей;
- scheduler — расположение остановок;
- steps — сколько переходов запланировано;
- seed — исходная точка в пространстве шума.
Название готовой комбинации иногда склеивает обе части. Например, одно слово может обозначать численный метод, а второе — вариант распределения сигм. Из-за этого легко принять расписание за самостоятельный sampler.
В некоторых библиотеках термин используется шире: объект scheduler может одновременно хранить timesteps, выполнять формулу обновления и управлять всем циклом денойзинга. Это не противоречие, а различие интерфейсов. Когда речь идёт о выпадающем списке scheduler в ComfyUI, имеется в виду именно последовательность уровней шума.
Почему расположение шагов влияет на картинку
На разных участках траектории модель решает разные по масштабу задачи. В сильно зашумлённом состоянии формируется общая структура. Дальше проявляются формы, границы, материал и мелкие детали. Это не жёсткое деление на фазы, но полезная интуиция.
Если шаги крупные, численная ошибка между точками может быть заметнее. Если они расположены плотнее, sampler чаще спрашивает модель о направлении движения именно в этой области. Поэтому scheduler влияет на:
- устойчивость композиции;
- сохранение мелких деталей;
- характер текстуры;
- контраст и диапазон яркости;
- поведение при небольшом числе шагов;
- чувствительность к конкретному sampler.
При этом «больше точек в важном месте» не гарантирует лучшую картинку. Важное место зависит от обучения модели, её параметризации и метода интегрирования.
Связь с обучением модели
Во время обучения модель видит примеры с разными уровнями шума. Распределение этих уровней, вес функции потерь и способ представления времени формируют области, в которых предсказания особенно надёжны.
Во время инференса scheduler выбирает, какие из этих областей посетить. Если траектория плохо согласована с тем, как модель обучалась, даже известное расписание может работать нестабильно. Поэтому конфигурация из референсного workflow модели — более надёжная отправная точка, чем универсальный совет из чужого проекта.
Для flow-matching моделей язык «удаления шума» становится условным: sampler движется по заданной траектории между распределениями, а scheduler выбирает значения времени или сигмы на этом пути. Практический смысл остаётся прежним — он расставляет точки вычисления.
Что меняется вместе со scheduler
Расписание нельзя оценивать в полном отрыве от остального конвейера.
Sampler
Один численный метод лучше переносит большие промежутки, другой использует историю нескольких предсказаний, третий добавляет случайность. Одна и та же сетка уровней для них не обязана быть равноценной.
Число шагов
При редкой сетке расположение точек особенно заметно. Когда шагов больше, разница между близкими расписаниями может уменьшиться, но не обязана исчезнуть.
Модель и её параметризация
Модели предсказывают шум, скорость, очищенный образец или другую величину. Параметризация и preconditioning влияют на то, какие sigmas и timesteps допустимы.
Denoising strength
В img2img и inpainting процесс часто начинается не с самого шумного края, а с промежуточной точки. Тогда используется только часть расписания. Два scheduler могут по-разному расположить шаги именно на этом сокращённом отрезке.
Ускоренная генерация
Дистиллированные и другие малошаговые модели нередко обучаются под определённую траекторию. Свободная замена расписания может разрушить предпосылки ускорения. Здесь особенно важно начинать с рекомендованного workflow.
Семейства расписаний
Названия в интерфейсе обычно описывают способ построить последовательность sigmas или timesteps.
- Равномерные распределяют точки по выбранной шкале через одинаковые интервалы. Важно, по какой именно шкале измеряется «равномерность».
- Степенные управляют плотностью точек с помощью степени и могут сосредоточить вычисления в определённой области.
- Экспоненциальные меняют сигму с постоянным отношением между соседними точками.
- Распределения на основе beta-функции формируют гибкую кривую плотности с помощью параметров распределения.
- Оптимизированные последовательности подбираются для конкретной модели, sampler или малого бюджета шагов.
Karras — известный пример степенной дискретизации, предложенной в работе о пространстве дизайна диффузионных моделей. Это не отдельный алгоритм денойзинга и не универсальный ответ: он лишь задаёт одну конкретную геометрию сигм.
Как сравнивать scheduler честно
Чтобы увидеть вклад расписания, остальные условия оставляют одинаковыми:
- checkpoint и VAE;
- prompt и negative prompt;
- seed;
- sampler;
- число шагов;
- CFG и другие параметры guidance;
- размер изображения;
- denoising strength;
- подключённые адаптеры и контрольные модели.
Затем меняют только scheduler и смотрят не один удачный seed, а небольшую серию сцен: портрет, мелкие предметы, тёмный кадр, текстуры, сложную композицию. У расписаний бывают разные сильные и слабые области, которые один пример скрывает.
Лучше сравнивать не только финальные картинки. Полезно сохранить промежуточные состояния: по ним видно, на каком участке начинает распадаться композиция или исчезает фактура.
Типичные ошибки
Выбирать расписание отдельно от модели
Рекомендация для одной архитектуры может оказаться неудачной для другой. Название scheduler само по себе не описывает совместимость.
Менять сразу sampler и scheduler
Если одновременно заменить обе части, невозможно понять, какая из них повлияла на результат. Для диагностики параметры меняют по одному.
Считать расстояния на картинке буквальными
Равномерные timesteps не обязательно дают равномерные sigmas. Одна шкала может быть нелинейной относительно другой. Поэтому два визуально похожих списка индексов способны описывать разные траектории шума.
Ожидать, что больше шагов всегда спасёт
Дополнительные вычисления помогают лишь пока метод и модель получают полезную информацию. После некоторого уровня они могут почти не менять изображение или усиливать нежелательные особенности.
Переносить настройки из text-to-image в img2img
При частичном денойзинге начало расписания обрезается. Комбинация, приятная на полном пути от шума, может иначе вести себя на коротком участке.
Scheduler при обучении и при генерации
Выражение noise schedule встречается в обоих контекстах.
При обучении расписание описывает, как зашумляются данные и как распределяются учебные примеры по времени. При генерации scheduler задаёт, какие точки обратного или связанного процесса посетит sampler. Эти решения связаны, но не тождественны: нельзя механически перенести название одной настройки из training-конфига в список инференса.
ComfyUI
В стандартном KSampler есть отдельные поля sampler_name и scheduler. Это удобно для эксперимента: можно зафиксировать sampler и пройти несколько расписаний на одном seed.
Продвинутые графы могут получать sigmas отдельной нодой, делить путь на участки или передавать подготовленную последовательность в sampler. Такая схема полезна для каскадов, частичного денойзинга и исследований, но требует следить за непрерывностью границ: конец одного участка должен согласовываться с началом следующего.
Частые вопросы
Какой scheduler выбрать первым?
Начать стоит с конфигурации, приложенной к модели или её официальному workflow. Если её нет, берут совместимую базовую схему и сравнивают несколько вариантов при фиксированном seed.
Karras — это sampler?
В контексте ComfyUI — нет. Это способ распределить sigmas. Он используется вместе с sampler, который выполняет численный шаг.
Можно ли менять scheduler посреди генерации?
Технически путь можно разделить на участки, но последовательность уровней должна оставаться согласованной. Случайная склейка двух расписаний способна создать скачок сигмы и артефакты.
Почему одинаковый seed даёт другую картинку?
Seed фиксирует исходный шум, а не весь путь. Другой scheduler приводит sampler в другие промежуточные точки, поэтому траектория и итог меняются.
Чем timesteps отличаются от sigmas?
Timestep — координата времени или индекс шага в параметризации модели. Sigma выражает уровень шума. Между ними есть преобразование, которое зависит от scheduler и конфигурации модели.
Бывает ли scheduler без диффузии?
Слово используют и в других областях для расписаний обучения, скорости обучения или выполнения задач. На странице о генеративных изображениях речь идёт о расписании sampling-процесса.
Главное
Scheduler расставляет точки на пути от шумного состояния к изображению. Sampler решает, как перейти между соседними точками, а число steps говорит, сколько таких переходов будет.
Хорошее расписание не существует само по себе. Оно должно совпасть с моделью, её способом обучения, sampler и режимом генерации. Поэтому надёжная стратегия проста: начать с референсной конфигурации, менять один параметр за раз и сравнивать одинаковые сцены на фиксированном seed.