LORA, почему кажется, что не работает, и как не потратить день в пустую

Требования

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

Здесь не будет красивых картинок, чисто гайд и одна картинка для сравнения. Если вы ищите картинки - посмотрите мои старые посты.

Гайд не трудный, но многие моменты на данный момент просто не известны. Работаю с тем, что есть. Так же могут быть проблемы с установкой Dreambooth, но я справился - а значит и в вас поверю.

LORA тренируется быстрее чем Dreambooth и потребляет куда меньше памяти.

Тренировка на 8 гигах VRAM РАБОТАЕТ.
Возможно работает даже на 6, я не проверял, НО, с xformers я могу запускать батч 4, поэтому скорее всего правда, а если нет - используйте flash attention.

Предисловие

LORA это мой первый опыт с Dreambooth-подобной тренировкой модели лично. Что бы она заработала так, как нужно, требуется достичь некоего барьера, который бы перезаписал знание токена, что требует от 6 до 13+ тысяч шагов, судя по треду, а так же судя по личным наблюдениям. Моя тренировка для стиля начала давать хоть какие-то результаты в нужном ключе на +-14к шагов. До этого барьера кажется, будто нужного эффекта нет, хоть генерация и меняется, но меняется не так, как хочется.

Так же я пытался сделать тренировку сразу трёх стилей, но она закончилась абсолютным позором, видимо, нужно куда больше шагов, хоть я и сделал 15х4, то есть 15 тысяч шагов на градиенте 4, но, кажется, его лучше не включать(точнее включить, но оставить на 1, иначе много жрёт без него). Так же я пока не совсем понимаю, что нужно указать, а что не нужно, в концепте, что бы получить стиль, привязанный к конкретному токену. На данный момент стиль будет расползаться в принципе по всей модели, но в данном случае это нам не мешает. Сам токен будет усиливать стиль. То как это, возможно, можно побороть - в гайде.

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

В данном гайде я рассмотрю нужные настройки, пройдусь по базе, которую нужно знать при составлении датасета, и сравню результаты действия голой LORA модели против Anything3 с гиперсетью.

Преимущества LORA

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

LORA, имхо, работает куда лучше с обучением специфическим деталям, чем гиперсети и инверсии, даже продвинутые. Вдаваться в них не буду, но я лично получил результаты лучше, чем все мои текущие гиперсети, основанные на работах художника, который был использован в данном датасете.(Используется только в личных целях)

Сетап

UI - AUTOMATIC1111
Модель - Anything3
VRAM - 8GB
Датасет - 102(204 аугментированных) картинки, обрезанные и протеганные вручную.
P.S. Аугментированные - это когда картинки повторяются, но в другом виде, например отзеркаленные, как в данном случае.

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

Подготовка

Что бы тренировать LORA, нужно установить Dreambooth, он присутствует во вкладке расширений.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Возможно придётся повозиться с удалением папки venv и переустановкой интерфейса с помощью батника, идущего вместе с расширением, но я представлю, что мы живём в мире, где люди способны справиться с базовым траблшутингом и не буду разбирать это.

Это всё, что нам понадобится из расширений.

Настройки

Я убил целый день вчера на разбор и подбор рабочих настроек... Но, оно работает! И я очень рад, ведь LORA работает очень хорошо.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Нас встретит вот такое окно, разбираться в нём - я ебал, честно. Но это лучше, чем было раньше. Волшебные кнопки вам не помогут, так как не заточены под LORA.

Первое - создаём модель.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Называете как хотите. Сурс - Anything3, или любая другая модель по вашему желанию.

Scheduler - на данный момент не изучено, что лучше, но подозреваю, что будет зависеть от объекта тренировки, медиума. Оставьте ddim, это стандарт.

EMA не трогайте, или трогайте, как хотите. Подсказка при создании намекает, что без этого флага хорошо для файн-тюна, а с этим флагом - для генерации картинок. Мы занимаемся файн-тюном по сути, но хотите - трогайте, должно и так и так работать.

Дальше у нас параметры.

Интервалы:

LORA, почему кажется, что не работает, и как не потратить день в пустую

Можете тренировать по эпохам, а можете по шагам. Если у вас небольшой датасет - делайте по шагам, что бы не задать меньше, чем нужно. Я посоветую около 15к, если у вас 100 картинок и более.

Советую ничего не генерировать и не сохранять, то есть по нулям. Ибо сохраняется здесь вся модель, то есть 4 гига(2 на половинной модели) каждый раз. Генерация превью картинок лично у меня не работает вообще, даже в тестовом порядке вне тренировки. Советую отключить, либо протестить в окне дебаггинга перед стартом, если запустите с ней, а окажется, что оно не работает - потеряете тренировку.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Батч - оставляйте 1, если у вас 8 гигов и меньше. Класс батч нам не нужен, мы не будет генерировать картинки классификации для сохранения стиля основной модели.

LR - стандартный в какой-то из колонок на 2 нуля больше - делайте 0.0002, так как LORA требует более высокий рейт. Дальше ничего не трогайте, либо трогайте, если знаете, что трогать, но стандартное работает нормально.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Ничего не трогаем. Если датасет не имеет зеркальных картинок - ставим флип.

Вообще на счёт датасета:
По хорошему, нужно хотя бы сотку картинок, но LORA можно натренировать и на 10, но такой вариант я не буду рассматривать, это как заниматься мазохизмом.
Я понимаю, что тегать сотню картинок ручками очень лень, я уже проходил через это. Попробуйте использовать расширение WD1.4 Tagger, если у вас нет нужды тренировать какие-то нишевые фетиши, на данный момент ничего лучше для автоматизации данного процесса нет.
Без тегов вообще тренировать можно, но больно, долго и не факт, что вообще получится что-то годное.

ВАЖНО

LORA, почему кажется, что не работает, и как не потратить день в пустую

Ставим LORA, 8bit Adam, и, если у вас 8 гигов - bf16 + default, если 6 - fp16 + xformers, либо flash attention, если не запустится с ними.

Латенты не кешируем, у нас память и так под лимиты, если 8/6.
Энкодер - тренируем, либо не тренируем, если вылетает OOM, у меня не вылетает, на 8 - можно.
Пад токенов - включаем, это уже настройки генерации промптов.
Теги - шафлим, это улучшит качество генерации вне зависимости от расположения тегов в промпте, но может замедлить тренировку.
Максимум токенов - смотрите по датасету, если длинные тексты - увеличиваем.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Градиенты - обязательны для 8/6. Без них ООМ. Оставьте на 1, мои эксперимент с 4 ни к чему не привели, вроде.
Адам не трогаем вообще, даже автор расширения не может дать рекомендации по этим настройкам. Нужны исследования.

Подготовка концепта

LORA, почему кажется, что не работает, и как не потратить день в пустую

Задаём папку датасета, ставим токен.
ТОКЕН НЕ ДЛИННЫЙ, ИНАЧЕ ПРИДЁТСЯ ДОЛГО ТРЕНИРОВАТЬ, ИЗ-ЗА БОЛЕЕ ВЫСОКОГО КОЛИЧЕСТВА ВЕКТОРОВ.
Рекомендуется до 4 букв, желательно из токенов, которые занимают 1 вектор. Список таких вы может найти в интернете.
Класс токен - если вы тренируете какой-либо конкретный объект - классифицируйте его одним словом, типа man, woman и т.д. Это сократит нужное количество шагов, так как модель не будет пытаться искать классификацию сама. НО это уменьшит возможность кастомизации, так сказать, объект будет именно этим классом.

Инстанс промпт - это то, что будет кушать модель при тренировке, оно не обязательно, но если вы хотите хоть какие-то годные и быстрые результаты, то [filewords] обязателен, и обязательно хороший. И не забудьте в начале добавить наш токен.
Класс промпт - то же самое, но без нашего токена.

Далее я оставляю всё пустым, ибо не генерирую классификационные картинки и картинки посреди тренировки.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Тут ничего не трогаем. Ибо не используем prior preservation. Оно нужно, что бы сгенерировать классификационный датасет, который смешается с нашим основным, что бы сохранить основной стиль модели. Можете попробовать, но придётся тренировать долго, и не факт, что получится.

Собственно Тренировка

Всё, нажимаем кнопочку Train. И ждём.

LORA тренируется быстрее чем обычный Dreambooth, но всё-равно займёт час-два для полноценной тренировки. В моём случае это примерно час сорок на 15300 шагов.

После окончания оно само соберёт вам модель, но LORA веса останутся, вы сможете смешать их с любой другой моделью, ведь они сохраняют только разницу, то есть то, что вы натренировали. Насколько это полезно - увидим. Свою LORA не дам. Тренируйте собственную.

P.S. Больше шагов - сильнее результат, я думаю потренировать ещё тысяч десять вдогонку к 15к например.

Сравнение

LORA, почему кажется, что не работает, и как не потратить день в пустую

Можно видеть, что LORA очень сильно влияет на генерацию в целом. Что по стилю - она тоже его передаёт лучше. Но придётся верить мне на слово.

Пытаться так же мешать уже готовые гиперсети с новой LORA хуйня идея.

LORA, почему кажется, что не работает, и как не потратить день в пустую

Тренируйте с нуля на её основе - тогда скорее всего сработает.

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

3737
56 комментариев

и, если у вас 8 гигов - bf16 + default, если 6 - fp16 + xformers, либо flash attention, если не запустится с ними.Только ты вот не учитываешь что не на всех картах есть нормальная поддержка fp16/bf16. У тебя 3070Ti, там она есть и на тюринге она тоже есть. А вот на паскале нету.

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

Видеокарты поколения Паскаль не особо стоит рассматривать в локальной тренировке энивей. Будет быстрее найти колаб с нужным интерфейсом. Быстрее будет. Там вон человеку выше 10 часов на 1660ти нужно на 7500 шагов, что уж говорить про всё, что ниже 1080/ти.

1
Ответить

Статья для новичков.
Спасибо, что так хорошо все разъяснил.
Мне все было очень понятно, но паэлья не получилась

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

А датасет паэльи протеган хорошо?

Ответить

пум-пум-пум, но памяти реально жрёт мало 1660ti vram=3.6/4.2GB

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

Ух, боль.

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

Но, всё ещё куда лучше дримбута на процессоре, где на каждую тыщу шагов надо 10 часов

Ответить