Детальный гайд по тренировке Гиперсеток для Stable Diffusion

Искал я тут хоть какой-то пост с наглядной разницей между pruned и полной моделью в плане тренировки гиперсеток и инверсий — не нашёл, но нашёл лонгрид про дебри СД, в котором было много заблуждений про тренировки.

И на этом я понял, что кто-то должен нормально объяснить, что да как на русском языке, ведь всё это на клятом английском, на котором я правда общаюсь чаще… Но не важно.

Представляю вашему вниманию небольшой, а может и большой, но точно, на данный момент, самый развёрнутый гайд, специализирующийся на гиперсетях для Stable Diffusion*
*На русском языке

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

Для тех, кто дочитает, в конце будет пример влияния гиперсетки и несколько маняме артов от меня ;3

Дисклеймер: Автор гайда любитель аниме девочек с большими бубами и плохих шуток.

Предисловие

Я не буду разбирать основы, как запустить веб интерфейс и какие функции в настройках вам нужно включить. Я буду ожидать, что все вы уже выгрузили ваши VAE и CLIPы, и готовы к базовым процессам тренировки. Xformers можно не выключать, они и так не работают при тренировке гиперсетей, даже если включены в настройках.

Так же я ожидаю, что вы уже поставили флажок --deepdanbooru и знаете для чего оно нужно, а так же приготовили датасет для обучения.

И вы знаете, что нужно использовать модель с полными весами.

А теперь можно приступать к основному.

Кто такая эта ваша н***й функция активации

Детальный гайд по тренировке Гиперсеток для Stable Diffusion

Вот встречает нас такая хрень, ничего не понятно, кроме имени.

Давайте по порядку.

Модули — хер знает, Автоматик писал, что 768 — это база. А остальные дополнительные. Пока нет детальных тестов, которые показали бы разницу между этими галочками, поэтому оставляем всё включенным.

Структууууура — это нам надо знать.
Вкратце — это то, сколько нейронов и на каких слоях вы размещаете.
Первый и последний слой всегда 1, это входной и выходной уровень гиперсети. А вот в середине между ними вы может разместить какое угодно количество слоёв с какой угодно широтой.

Широта и глубина
Это понятия, которые мы отнесём к структуре слоёв.
Широкие нейросети хороши для запоминания объектов, по типу 1 4 1, а глубокие — для стиля, по типу 1 1.5 1.5 1. Heathen сравнивает такие с воронками.
Одновременно широкие и глубокие сети работают плохо, по словам Heathen. Ну оно и не мудрено, я тоже работаю плохо и понимаю такие гиперсетки.

ВНИМАНИЕ — Структура гиперсети влияет на то, сколько она занимает места, в том числе в памяти видеокарты во время тренировки. Если у вас как и у меня нищенская 3070ти на 8 гигов, то нам не светит тренировка широких гиперсетей, по крайней мере под виндой, и если хочется посмотреть видосиков пока она тренится. 1 3 1 уже вызовет ООМ ошибку после нескольких шагов, по крайней мере у меня. В основном сейчас я тренирую 2.4 0.8 тип сетей, и результаты меня вполне устраивают, но так как я любитель больших и длинных… Тренировок, то материала на сравнение особо не предоставлю, особенно под новую модель.

А кто такая эта ваша функция таки?
А тут на наш вопрос ответят питон-программисты, ведь это их функции активации. А я не питон. И не программист. Возможно к сожалению. Но скорее нет, чем да.
Всё, что вам нужно знать, это то, что Linear — работает и является базой модели SD, поэтому это стабильный вариант.
Так же хороши rrelu, gelu, swish, softsign и т.д. и. т.п.
Мой любимец — Gelu. Heathen, автор основного гайда, от которого я отталкиваюсь(+ свой опыт), тоже оценил его высоко.
Любимцы Heathen:
Tanh/Softsign для фото/ирл.
Gelu/RRelu как альтернатива вышеназванной паре, но более мягкая.
Mish — Ещё мягче, чем Gelu.
Так же он называет активации для разных медиумов, типа арта и т. д., но, честно скажу, у меня не получилось это проверить и выдавало шум. Возможно нужна более долгая тренировка, ибо указано, что для обучения с нуля, то есть рандомный вес = изначальный шум. Но об этом мы поговорим в следующей части.

Нормально? Или не нормально.
Инициализация весов. Это рандомизация, или распределение весов нейронов. Это так же математика, поэтому конкретно мне сказать нечего.

Используйте Normal, что бы работать на базе того, что уже знает модель, на которой тренируете, что бы она двигала стиль/знание объектов в сторону того, что вы тренируете. Ксавьер и Кайминг — мне не удалось подтвердить, что они вообще полезны, так как выдавали один шум, вне зависимости о того, следовал я рекомендациям, или нет. Используйте на свой страх и риск.

А теперь нормально?
Нет, не нормально. Не добавляйте нормализацию слоёв.
Эта функция усредняет слои, делая гиперсеть слабее, хоть и помогает избежать некоторых проблем в тренировке, которые могут возникнуть с некоторыми функциями активации. О них подробно описано в гайде от Heathen, но мы не будем на них останавливаться, так как я не заметил этих проблем в нормальном процессе тренировки. Просто знайте, если картинки стали артефачить — гиперсеть потрачена. Возвращайтесь на несколько тысяч шагов назад и понижайте скорость обучения.

Dropout
Не выкидывайте свои нейроны, их иногда и так мало. На данный момент функция негативно влияет на тренировку.
Она отключает 30% ваших нейронов, то есть, условно поставили 1 3 1 — оно не будет использовать все 3, а будет только лишь чуть больше 2. По словам Heathen, данная функция бесполезна для небольших нейронных сетей, коей и является гиперсеть.
Не включать.

Пару слов о препроцессинге датасета

Если он маленький — пройдитесь ручками и расставьте теги самостоятельно в дополнение к deepdanbooru — упростите себе жизнь.
Это всё.

Нейроны тоже тренируются

Детальный гайд по тренировке Гиперсеток для Stable Diffusion

Ну вот оно нас встречает, а дальше что? Запускаем со стандартными настройками?
А вот х*р там. Идём в \stable-diffusion-webui\textual_inversion_templates
и создаём файл, который в себе содержит только "[filewords]", если вы тренируете маняме. Если нет — оставляете стандартное(меняете subject или что-то там на hypernetworks).
Ну и соответственно вписываем путь на этот новый файл, или уже существующий, если тренируете обычную, не маняме модель.
Шаги — сколько хочется.
Batch size - не трогаем. Он вроде собирает несколько картинок и усредняет их градиент. Такое слышал, поэтому лучше оставить на 1, но если сильно бустит скорость на 2 - делайте 2. На 8 гигах не выйдет больше 1.
По умолчанию сетка будет сохраняться каждый 500 шагов, поэтому приготовьте пару десятков гигабайт места, либо увеличьте параметр сохранения. Уберите галочку с "save images with embedding in png chunks" — я вообще не понял, зачем оно надо, бесполезная штука, которая сохраняет картинки результатов, но с оверлеем названия сети и шагов, что она и так делает, но в названии самого файла.
Читать параметры — ставьте, если хочется контролированной генерации картинок при тренировке.

А что по скорости обучения?
А вот тут мы остановимся. Нужно пояснить, что то, что у вас там написано — на самом деле не обязательно одно число.

5e-5:125, 5e-6:1500, 5e-7:8000, 5e-8:20000, 5e-9:-1

Такое — тоже работает, более того — вы обязаны использовать вариативную тренировку, если хотите тренировать долго и ради мощного результата.

Это один из небольших и общих примеров таких вариаций. Я использую другую, но вам оно не надо, ибо я использую более агрессивную стратегию и куда больше шагов.

Ну, это всё, что нужно знать в базе для правильной тренировки

А что не в базе? А не в базе идите читать англоязычные статьи. Очень интересно. Посмотрите глазами, как выглядят функции активации, я таким методом и выбрал Gelu как основу ещё до появления гайда.

Заключение

Я уже месяца два изучаю всю эту хрень. Очень интересно, затягивает, а ещё я аниме люблю, поэтому провожу много тренировок гиперсеток для стиля. Показать не смогу сейчас, ибо тренирую стили заново на новую Anything3 модель, покажу только один.

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

Детальный гайд по тренировке Гиперсеток для Stable Diffusion

Так меняет картинку моя основная гиперсеть, тренированная на 60000 шагов. По сути, полностью новая генерация.
НО. Это не лучший пример, так как тренировано по ошибке на модели с неполными весами.

Ну, как и обещал, подборочка артов из моих последних генераций: 3

Больше не покажу, учитесь сами :D
P. S. Пишите, спрашивайте, отвечу.

P.P.S. Первый пост на ДТФ, хз шо как, звиняйте если что-то не поставил, не указал, как 18+ поставить кнопки не вижу, само чтоле? Откровенного 18+ нет, но всё-таки.
#stablediffusion #нейроарт #NAI #NovelAI #nsfw #гиперсети #длиннопост #нейросети

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

детальный гайдНормально объяснитьна данный момент, самый развёрнутый гайд Потом такой:
Это я не буду объяснять, я ожидаю что вы уже знаете, вы уже все выгрузили и тд. Я бы понял если бы гайд действительно бы суперобъемным и какая-то совсем базавая инфа действительно была бы лишней и перегружала или если бы гайд для профильного ресурса делался где сидят мамкины датасаентисты. Но в реальности он попал на дтф, где мб 2.5 человека найдут его полезным так как действительно знают о том как выполнить пропущенные шаги

10
Ответить

Полностью с тобой согласен. На моменте, где автор начал нудить мол я это должен знать, я больше ничего полезного не получил.. Гайд дерьмо

1
Ответить
Автор

Хы, так гайд по гиперсеткам, а не по установке веб интерфейса, созданию датасета, и даже не по нажатию галочек в обычных настройках! :)

Я всё-таки ожидаю, что те, кто заинтересовался ИМЕННО гиперсетками, уже знаю базу. Ибо без неё они бы не знали о гиперсетках.
Тем, кому нужна самая базовая информация - уже есть посты и мне смысла добавлять к ним нет.

Ответить
Автор

Хы, так гайд по гиперсеткам, а не по установке веб интерфейса, созданию датасета, и даже не по нажатию галочек в обычных настройках! :)

Я всё-таки ожидаю, что те, кто заинтересовался ИМЕННО гиперсетками, уже знают базу. Ибо без неё они бы не знали о гиперсетках.
Тем, кому нужна самая базовая информация - уже есть посты и мне смысла добавлять к ним нет.

Ответить

Отличный гайд для тех, кто уже прочитал первые три общих гайда по Stable Diffusion и четвертый по добавлению novelAi. А также все комментарии к ним. Только после этого будет полнота знаний, чтобы понять и пользоваться этим гайдом. Но он хорош и глубок. Всё как мы любим.

1
Ответить

Что это хоть такое-то, в двух словах, эта ваша гиперсеть?

Ответить
Автор

Дополнительный слой нейронной сети, позволяющий так или иначе изменять генерацию.

Ответить