Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

С февраля ничего не писал, было лень, да и стимула нет, поэтому статейки такого формата будут продолжать выходить с похожим интервалом.

За подписки спасибо, вас уже почти 150.

Если вы видели предыдущие статьи, то уже знакомы с концептом Лоры, а если нет, то вот краткий экскурс, куда вы только что вляпались:
Лора - один из способов тренировки модели, но в отличии от Дримбута, она сохраняет матрицу с разницей весов, которые могут быть динамично накинуты на модель при генерации, что позволяет сохранить место, время, а так же деньги, учитывая, что тренируется она быстрее.

К сожалению она не тренирует все слои модели как Дримбут, но u-net и tenc достаточны для хороших результатов.

Лора требует от 6 гигабайт памяти для самой минимальной тренировки, но я не могу с уверенностью сказать, что вам не понадобится 8, что бы тренировать по образцу данной статьи.

Сегодня мы поговорим о, уже не новой, расширенной Лоре, таковой тип добавляет тренировку resnet слоёв, что бы это не значило, я не ML инженер, поэтому такое здесь объяснятся не будет. ML-инженеры - прошу в комменты, я почитаю и поучусь.

Конкретно мы затронем Adan и раздельный Weight Decay, что вроде бы ещё нигде не сделано, на момент написания статьи, кроме эксперимента одного человека, который любезно скинул код мне для тестов. Так же он сейчас занят добавлением клиппинга весов, что тоже может быть очень полезно. Данный код скорее всего будет запушен в расширение Dreambooth для AUTOMATIC1111 в ближайшие дни, так как я уже потестил, остаётся только фиксить баги. Именно поэтому пока вы не сможете потренировать с параметрами, которые будут предоставлены в статье, но будете готовы к будущему.

Перед тем как мы начнём, установите расширение LoCon, так как без него вы не сможете динамически подгружать расширенную Лору.

Навигация

Adan D-Adaptation

Если вы интересуетесь тренировкой, то уже знаете что это, либо видели другие вариации D-Adaptation, как Adagrad, AdamW и SGD. Adan является более точным оптимайзером, если судить по бумаге из архива -

Для ленивых - Adan выигрывает в точности у AdamW в среднем на 1-2%(84.3 против 82.5), а так же добивается результата быстрее остальных.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Мы активно тестировали его парой-тройкой человек в дискорде последнюю, наверное, неделю. Результаты очень хороши.

Раздельный Weight Decay

Если вы хоть разок запускали расширение, то видели этот параметр -

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Но вы никогда не видели, что бы их было два -

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Именно это и есть последняя новая фича, которую вы вскоре сможете попробовать.

Вкратце, WD отвечает за нормализацию весов во время тренировки, отдавая предпочтение меньшему изменению, что позволяет получать более редактируемые модели и избегать оверфита.

Во время теста Adan, было предположено, что текстовый энкодер требует спад выше, чем u-net, что и привело к созданию второго слайдера. Данная гипотеза подтвердилась как в тестах разработавшего, так и в моих.

Дисклеймер

Как я помню, один из разработчиков откомментил часть кода, которая отвечает за отображение D-Adaptation оптимайзеров, поэтому вы можете их не увидеть. Что бы они появились, найдите коммит, который откомментил их, и раскомментите в коде, либо отмените этот коммит. Тогда они появятся.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Данное изменение находится в ветке main. На dev раскомменчивать не нужно.
Да и в общем вам скорее всего понадобится dev ветка, не думаю, что данную фичу скоро отправят в main.

Галерея результатов и сравнений

Вам же не интересно будет читать, если вы не будете знать, а работает ли оно вообще. Поэтому накидаю парочку готовых моделей, сравнений со старыми, разницу от раздельного WD и т.д.

Далее пойдут примеры с различными тренировками.

Помните, смысл сравнения в том, что бы показать качество тренировки, которая зачастую портит генерации, добавляя блюра, или постепенно сжигая модель, особенно на более высоком CFG.

S12.
Данная лора концентрируется на более абстрактных окружениях и композициях, что позволяет делать мощные картинки, даже если они не имеют смысла.

Обе модели в сравнении тренированы на Адане, но новая тренирована на новой версии и с оптимизированными параметрами тренировки.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Новое - Старое - База

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Стоит отметить, что новая версия следует композиции базовой модели в большинстве случаев лучше, не смотря на меньший спад весов, что так же говорит о качестве тренировки новой версии. Конкретно это значит, что возможности основной модели будут страдать куда меньше, и оверфит датасета вряд ли произойдёт.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Страшно, вырубай. Но тут опять же новая версия лучше следует промпту, он рандомный, так что верьте на слово.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Старую версию скосило немножко, но ничего.

Далее пойдут генерации уже не совсем в аниме стиле, полу-3д, называйте как хотите. До этого момента S12 была запромпчена от 3д и реалистичных изображений, которые составляли примерно 1/3 датасета.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Я бы сравнил с тренировкой на Адаме, но кажется я удалил ту версию за ненадобностью.

Далее небольшое сравнение общего спада против раздельного на примере Лоры Ехидны.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Раздельный спад добился более высокого качества платья и добавил в сцену мелких деталей(партикли, которые я не вижу без приближения, лол). Картинка в общем более чёткая, а в данном примере ещё и руку поправило.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Раздельный спад в среднем обычно лучше, а в некоторых случаях исправляет ошибки, которые получились на лоре с единым спадом. Так же лучше учит стиль.

А как тренировать

Я буду считать, что вы знакомы с базой тренировки Лоры, а иначе вы вряд ли бы читали это. Я дам вам конфиг, в нём все базовые настройки, так же я дам вам формулу, по которой вы сможет посчитать правильный Learning Rate для u-net и tenc.

В базе, если вы всё-таки ничего не знаете, но хотите попробовать, нажимаем эти 2 кнопки:

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Так как я не ожидаю, что ваша тренировка будет крупной, ранги вам трогать не нужно, а значит LR можете выставить 1/1.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Батч ставите какой вывозит, на Торч2 выше 6 поставить не выйдет, будет ошибка. На торч1 как пойдёт - так и ставите.
Опции градиента по возможностям. Если хватает памяти - можете и не включать.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

Оптимайзер - Адан, конечно же.
Точность - fp16/bf16, какую хотите.
Оптимизация памяти - я ставлю дефолт, так как я на Torch2, и он не забирает много памяти на нём, но вы скорее всего должны будете поставить xformers(довольно сильно влияет на качество, но какой у вас выбор? Правильно, установить Torch2).

Step Ratio of Tenc training - в зависимости от цели, от 0.25 для какого-нибудь стиля, до 0.75 для персонажей. Если влом думать - ставите 1 и не думаете.
Заморозка CLIP слоёв - как хотите, эффект не тестил, но должно делать лучше при нормальной тренировке.
Клип Скип - конкретный эффект при тестах выявить не удалось, но исходя из некоторых теорий обычно мы тренируем на скипе 2.

Спад 1 - поставьте ~0.04
Спад TENC - поставьте выше, чем предыдущий, я порекоммендую примерно 0.06-0.055.
далее штуки не трогаем.

Не забудьте сделать концепт, и сходить в меню сохранения, что бы нажать эту галочку, что бы сохранилась лора, которую можно использовать без мержа:

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

LoCon обязателен, что бы это сработало, не забудьте установить перед тренировкой.

Для более продвинутых оставлю конфиг. Там настройки для рангов 16/96, на которых, например, и тренировалась Ехидна.

Имейте ввиду, что на более высокие ранги стоит повышать спад и понижать LR. Там уже выставлен нужный.

Для самостоятельных и умных:

LR выставляется путём его уполовинивания за каждое удвоение ранга, начиная с 4, то есть:

Если у вас ранг 4/4, то и LR будет 1/1
При ранге 8/16 уже 0.5/0.25
И так далее.
За каждое удвоение повышайте оба WD, тенк я повышаю на 0.01 за каждое удвоение, а дальше по ситуации.
Я в основном тренирую 32/192 или 48/256 для более крупных моделей, как S12.
Условные 50 картинок не особо нуждаются в увеличении ранга, разве что если очень хочется.

Конец

И помните, если вы не удосужились нормально протегать датасет - нихуя у вас не получится. Удачи.

Немножко картиночек под конец

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

S12 делает вот такой стиль при апскейле кста

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

О, а ещё я нашёл парочку сравнений промежуточной модели S12 между первой Адановой, и текущей

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

v4 ещё не полностью готова, поэтому в отдельный случаях она хуже v3.3.3/4(Adan_18000 это v3.3.2, а новая модель в сравнении перед текстом тренировки это v4 ранняя, версия 0.6).

Но это всё, и что за S12 вообще, я расскажу как-нибудь в другой статье.

Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)
Лора, Адан, два WD | Тренировка Расширенной Лоры(LoHA/LyCoris | LoCon) с параметром, который пока не завезли(для вас)

P.S. Написал не в 5 утра, теперь ты доволенб, Некройд? xD
Теперь и поспать можно.

Контент для взрослых
2727
2 комментария

Как всегда лучший~ ❤️
Новая авка сасная кста 👉👈🥹

1
Ответить

И все бы хорошо, но логичнее показывать на живых фотках, а не аниманутости

Ответить