Sampler

sampling method — алгоритм пути от шума к картинке

Раздел
Сэмплеры
Сокращ.
sampling method
Обновлено
19.06.26

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: первые шаги делаются крупно, последние — точечно. Стандарт по умолчанию.
  • LCMLatent 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 в названии. Остальное — нюансы конкретной модели.