У веб‑интерфей­сов к диф­фузи­онным ней­рон­кам вро­де Stable Diffusion есть огромная мас­са парамет­ров, движ­ков и пол­зунков, меняя зна­чения которых мож­но добить­ся изме­нения кар­тинки при про­чих рав­ных усло­виях. Сегод­ня погово­рим о выборе сем­пле­ров и шедуле­ров.

При­нято счи­тать, что если выбор сем­пле­ра (а тем более — шедуле­ра) и вли­яет на резуль­тат генера­ции, то, во‑пер­вых, вли­яние это минималь­но, а во‑вто­рых, дос­таточ­ное количес­тво шагов нивели­рует и без того неболь­шую раз­ницу меж­ду финаль­ными изоб­ражени­ями. Это глу­бочай­шее заб­лужде­ние, что я и намерен про­демонс­три­ровать в сегод­няшней статье.

 

Семплер и шедулер: что это такое

В кон­тек­сте генера­тив­ного ИИ, осо­бен­но при работе с диф­фузи­онны­ми моделя­ми, тер­мины 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, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии