Sampler
sampling method — алгоритм пути от шума к картинке
Sampler (сэмплер) — алгоритм, который ведёт диффузионную модель от чистого шума к готовой картинке за 15–40 шагов. От его выбора зависит, насколько чисто и быстро получится результат при том же промпте и seed. Современный стандарт — DPM++ 2M Karras (20–25 шагов на чистовик). Для скорости — Euler a или LCM, для анимации — только детерминированные сэмплеры без буквы `a` в названии.
Коротко
Коротко. Сэмплер — это правило, по которому диффузионная модель идёт от чистого шума к готовой картинке за 15–40 шагов. Если базовая модель — художник, то сэмплер — его темп работы. Один и тот же художник, работающий рывками или плавно, нарисует одну и ту же сцену по-разному. Современный стандарт —
DPM++ 2M Karras, 20–25 шагов.
Что это такое
«Сгенерируй кота на подоконнике». Кажется, что после клика модель просто рисует картинку. На самом деле там идёт двадцатиминутная (или двадцатисекундная — зависит от железа) пошаговая работа.
Модель не «рисует» — она начинает с тензора случайных чисел (шума) и постепенно «вычитает» из него лишнее, оставляя картинку. На каждом шаге она предсказывает, какой шум должен исчезнуть, и убирает его. Через 20–30 шагов из хаоса проступает образ.
Этот процесс называется денойзингом. И вот тут на сцену выходит сэмплер.
Сэмплер и шедулер часто путают, но это разные вещи:
- Шедулер — это таблица уровней шума, которые должны быть в каждой точке пути (Karras, Beta, Linear).
- Сэмплер — это алгоритм, который шаг за шагом ведёт картинку от одного уровня шума к следующему, используя предсказание модели.
В Automatic1111 эти два понятия часто объединены в одно выпадающее меню: DPM++ 2M Karras — это сэмплер DPM++ 2M плюс шедулер Karras. В ComfyUI и Forge они разделены на отдельные поля.
История сэмплеров короткая, но плотная. В 2020-м был только DDIM. В 2021-м появился Euler. В 2022-м — Heun, DPM Solver, DPM++, и Karras-шедулер, который сразу стал стандартом. К 2024-му добавились LCM (для скорости) и серия современных DPM++.
Как это работает
На каждом шаге модель предсказывает шум, который, по её мнению, остался в текущей картинке. Сэмплер использует это предсказание, чтобы сделать шаг в сторону «чище». Разные сэмплеры отличаются стратегией:
- Euler — самый простой. На каждом шаге берёт текущее предсказание шума и вычитает фиксированную долю. Быстро и предсказуемо, но иногда «жёстко» в деталях.
- Euler a (ancestral) — то же, что Euler, но с добавлением случайности на каждом шаге. Картинка получается живее и креативнее, но менее воспроизводима — даже с одним seed соседние шаги могут разойтись.
- Heun — делает каждый шаг дважды: сначала предсказывает, потом усредняет предсказания. В два раза медленнее Euler, зато точнее, особенно на середине пути.
- DPM++ 2M — использует не только текущее предсказание, но и предыдущее, чтобы понять, в каком направлении ситуация меняется. Это даёт быструю и точную сходимость.
- DPM++ 2M Karras — тот же DPM++ 2M, но с расписанием Karras: первые шаги делаются крупно, последние — точечно. Стандарт по умолчанию.
- LCM — Latent Consistency Model, специально натренированный сэмплер для генерации за 4–8 шагов. Качество ниже, но в 5 раз быстрее.
Большинство сэмплеров детерминированы: с одним seed получаются одинаковые картинки. Сэмплеры с a или SDE в названии добавляют случайность, поэтому одинаковыми не получаются.
Пример на практике
Видеомонтажёр генерирует кадры для AI-вставки в ролик. Перед ним два сценария — и в каждом нужный сэмплер свой.
Сценарий первый — поиск идеи. Нужно за час перебрать 50 вариантов одной сцены. Качество вторично, скорость критична. Берётся Euler a + 20 шагов или LCM + 4 шага: одна генерация за секунду. Через час из 50 кадров выбираются 1–2 удачных.
Сценарий второй — финальный рендер. Идея найдена, нужно сделать качественные кадры на чистовик. Переключается на DPM++ 2M Karras + 25 шагов: чёткая детализация, минимум артефактов. Время на кадр — 6–10 секунд, но переделок не будет.
Сценарий третий — анимация. Тех же 50 кадров, но они должны быть согласованы между собой. Любой сэмплер с a или SDE в названии не подойдёт — кадры будут «мерцать», даже при фиксированном seed. Нужны детерминированные: DPM++ 2M Karras, DDIM, Euler без a.
Один проект — три разных сэмплера. Это нормально.
С чем часто путают
- Сэмплер и шедулер — сэмплер это алгоритм пересчёта следующего шага, шедулер это таблица уровней шума на каждом шаге. В Automatic1111 они слиты в одно меню (
DPM++ 2M Karras), в ComfyUI разделены. Поменять можно по отдельности. - Сэмплер и модель — модель определяет, что рисовать. Сэмплер определяет, как идти от шума к картинке. Одну и ту же модель можно гонять с разными сэмплерами и получать разные результаты.
- Euler и Euler a — это два разных сэмплера. Euler детерминирован (одинаковый seed → одинаковая картинка). Euler a добавляет случайность на каждом шаге. Это критично для анимации: Euler a даёт «мерцание», Euler — стабильность.
- DPM++ 2M и DPM++ SDE — оба из семейства DPM++, но SDE добавляет стохастику. SDE-варианты часто чуть «креативнее», но менее воспроизводимы. Для финального рендера лучше детерминированные.
Частые ошибки и заблуждения
- Больше шагов всегда лучше. Нет. На современных сэмплерах (DPM++, Karras) после 25 шагов разница уже минимальна. После 40 — заметна только на специфичных артефактах. Лучше потратить шаги на больше CFG-вариантов или другой seed.
- Один сэмплер лучший на все случаи. Нет. DPM++ 2M Karras хорош как стандарт, но для аниме лучше работает Euler a, для фотореалистичных портретов — DPM++ SDE Karras. Опыт — пробовать на конкретной модели.
- Сэмплер с
aвсегда лучше — он «живее». Случайность — это и плюс, и минус. Для одного кадра — да, живее. Для серии или анимации — катастрофа: согласованности нет. - Все модели одинаково реагируют на сэмплер. Нет. Flux натренирован преимущественно на Euler. SDXL — на DPM++. На «не своих» сэмплерах модели иногда выдают артефакты.
- LCM в 5 раз быстрее — значит, заменит остальные. Для finals — нет. LCM-картинки чуть мягче, теряют тонкие детали. Для превью и быстрого перебора — отлично, для чистового — переключайтесь.
Связанные термины
- Scheduler — расписание шумоподавления, которое использует сэмплер (Karras и др.).
- Steps — количество шагов сэмплера.
- CFG Scale — параметр силы промпта, параллельный сэмплеру.
- Seed — стартовый шум, с которого сэмплер начинает работать.
- LCM — отдельная техника, требует специально натренированной модели или LoRA.
Частые вопросы
С чего начать новичку? DPM++ 2M Karras, 20 шагов, CFG 7. Этот набор хорошо работает почти на любой модели и почти на любом промпте. Когда станет понятно, что хочется быстрее или живее — можно пробовать другие.
Чем сэмплер отличается от шедулера? Сэмплер — это алгоритм пересчёта следующего шага. Шедулер — это таблица, какой уровень шума должен быть на каждом шаге. Сэмплер пользуется шедулером как картой.
Почему Euler a даёт разные результаты с одним seed?
Потому что в нём встроена случайность на каждом шаге (a = ancestral). Один seed задаёт стартовый шум, но не отменяет случайные подмешивания дальше. Для воспроизводимости берите версию без a или DPM++ 2M Karras.
Сколько шагов нужно для Flux? Flux натренирован на 20–28 шагах для базовой модели, 4–8 шагов для Flux Schnell-варианта. Больше шагов на стандартном Flux — пустая трата времени.
Можно ли менять сэмплер в процессе генерации?
Да, но это редкий приём. Техника KSamplerAdvanced в ComfyUI позволяет первые N шагов сделать одним сэмплером, остальные — другим. Иногда даёт интересный эффект: грубая форма от Euler, детализация от DPM++.
Главное
Сэмплер задаёт темп шумоподавления, и от него зависит, насколько чисто получится картинка за данное число шагов. Для финального качества стандарт — DPM++ 2M Karras, 20–25 шагов. Для быстрого перебора — Euler a или LCM. Для анимации — только детерминированные сэмплеры без a в названии. Остальное — нюансы конкретной модели.