Содержание статьи
- Семплер и шедулер: что это такое
- Семплеры
- Устаревшие семплеры
- Обычные дифференциальные уравнения: семплеры класса ODE
- Семплеры класса ancestral
- DPM, DPM++ и их производные
- SDE: щепотка случайности
- Специализированные семплеры
- Лучшее — враг хорошего?
- Шедулеры
- Uniform: отправная точка
- Karras
- Экспоненциальный шедулер
- Align Your Steps
- Beta
- Шпаргалка
Принято считать, что если выбор семплера (а тем более — шедулера) и влияет на результат генерации, то, во‑первых, влияние это минимально, а во‑вторых, достаточное количество шагов нивелирует и без того небольшую разницу между финальными изображениями. Это глубочайшее заблуждение, что я и намерен продемонстрировать в сегодняшней статье.
Читай также по теме генеративных моделей:
- Stable Diffusion XL. Генерируем картинки нейросетью на своем компьютере
- Stable Diffusion XL. Выбираем модели, рефайнеры, лоры и стили
- ReForge. Улучшаем картинки, генерируемые Stable Diffusion
- FLUX.1 и SwarmUI. Генерируем картинки новой открытой моделью
- Фишки Flux.1. Добиваемся лучших картинок от новой генеративной модели
- Карта мира генеративного ИИ. Выбираем модель и интерфейс, разбираемся с терминами
Семплер и шедулер: что это такое
В контексте генеративного ИИ, особенно при работе с диффузионными моделями, термины sampler и scheduler играют ключевую роль в процессе генерации изображений.
Как создать скульптуру? Взять глыбу мрамора и отсечь все лишнее. Именно по этому принципу работают диффузионные модели искусственного интеллекта, к которым относится и семейство Stable Diffusion. Глыбой мрамора здесь выступает сгенерированный моделью шум, а инструментом, который отсекает лишнее, — семплер. Таким образом, вместо создания изображения с нуля картинка постепенно восстанавливается из шума, а семплер определяет, как именно будет происходить этот процесс.
Семплеры управляют тем, как на каждом шаге генерации выбирается и корректируется шумовое распределение. Разные семплеры дают различные результаты. Грубо говоря, из полена можно вырубить Буратино как стамеской, так и топором; результат будет отличаться.
Какие‑то семплеры оптимизированы на скорость (условный «топор») и могут быстрее восстанавливать изображение (быстрее конвергировать) — как правило, в ущерб качеству картинки или разнообразию результатов. Другие могут давать более детализированные («стамеска») или, наоборот, упрощенные изображения. Какие‑то семплеры требуют меньшего числа шагов (но каждый шаг занимает больше времени), а какие‑то — большего, но изменения картинки на каждом шаге диффузии будут не столь велики.
Для некоторых видов семплеров увеличение числа шагов приведет в итоге к очень похожим результатам, для других результат будет разительно отличаться. Именно по этой причине рекомендации вроде «используйте 20–30 шагов» лишены смысла, если не указан семплер, для которого рекомендуется это число шагов.
Семплеры бывают сходящиеся (конвергентные) и несходящиеся. При использовании сходящегося семплера картинки, сгенерированные с определенным числом шагов, перестают отличаться от изображений, сгенерированных с теми же настройками, но большим числом шагов. Несходящиеся семплеры будут продолжать выдавать вариации изображений при использовании сколь угодно большого числа шагов. Свои особенности применения есть у обоих типов семплеров.
- Сходящиеся (конвергентные) семплеры: Euler, LMS, Heun, DPM2, DPM++ 2M.
- Несходящиеся семплеры: Euler a, DPM2 a и прочие семплеры класса ancestral («a» в конце названия), DPM Fast, DDIM, PLMS, DPM adaptive, Restart, а также все семплеры, в названии которых присутствует SDE (например, DPM++ SDE, DPM++ 2M SDE, DPM++ 3M SDE).
Шедулер (scheduler) — это механизм, ответственный за динамическое изменение ряда параметров на каждом шаге генерации. Он определяет, как на каждом шаге изменяются такие параметры, как уровень шума или шаг обучения. В каком‑то смысле можно сказать, что шедулер задает ритм генерации (грубо говоря, «сперва работаем топором, потом берем стамеску, постепенно уменьшая ее размер»), но это было бы сильным упрощением.
Теперь перейдем к конкретным типам семплеров.
Все иллюстрации сгенерированы моделью tangbohuKalosXl_vx в разрешении 1024 на 1024 с последующим удвоением разрешения в hi-res fix. Использовался фиксированный сид 4001446319, CFG = 7. Текстовый запрос:
simple watercolor painting of a child girl wearing a hanfu dress playing with a kitten, with pagoda and foggy mountains in distant background
Для тестирования семплеров использовался фиксированный шедулер Align Your Steps (AYS). Тестирование различных шедулеров проводилось с фиксированным семплером Эйлера. Целью тестирования была демонстрация того, как выбранный семплер и шедулер может влиять не только на композицию, но и на стиль изображения.
Семплеры
Устаревшие семплеры
Семплеры, в названии которых есть DDIM, DDPM и PLMS, появились на ранней стадии развития генеративных моделей; DDIM и PLMS вошли еще в репозиторий Latent Diffusion. Пользоваться ими сейчас бессмысленно: так, для конвергенции с использованием семплера DDIM требуется порядка тысячи шагов, а у DDPM и PLMS нет каких‑либо зримых преимуществ перед более простыми (и намного более быстрыми) семплерами из числа описанных ниже.
info
Если ты решишь поэкспериментировать с DDIM, то используй его в связке с семплером под названием ddim_uniform или DDIM (зависит от используемого веб‑интерфейса).
Большая часть современных семплеров (и ряд шедулеров — в частности, Karras) были описаны в репозитории k-diffusion, опубликованном Катериной Кроусон (crowsonkb). О них мы поговорим более подробно.
Обычные дифференциальные уравнения: семплеры класса ODE
Здесь всё просто: эти семплеры просто решают систему дифференциальных уравнений. Самый известный из них — семплер, использующий метод Эйлера (Euler), разработанный в... 1768 году, задолго до возникновения компьютеров. Если ты интересуешься математикой, то формулы можно подсмотреть в Википедии.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее