Разное

Как обучить LoRa для Stable Diffusion? Инструкция

Что такое LoRa?

LoRa, Low-Rank Adaptation или низкоранговая адаптация для быстрой настройки диффузии текста в изображение — это новый математический метод, позволяющий уменьшить количество параметров для обучения модели Stable Diffusion. Если не вдаваться в технические подробности, LoRa можно назвать миниатюрной версией SD, в которую с помощью специальной тренировки добавили новую информацию. Например, об авторском стиле, лицах, позах или окружении.

Примеры изображений, созданных после обучения LoRa для Stable Diffusion
Low-Rank Adaptation - не замена традиционным моделям Stable Diffusion, а своеобразная надстройка, помогающая улучшить результаты генерации.

По сравнению с Dreambooth, LoRa можно обучать даже на очень небольшом наборе файлов — 5, 10, 20 фотографиях, получая при этом достаточно качественный результат. Причём низкоранговая адаптация не привязана к одной модели — её можно использовать как в аниме нейросетях, так и в моделях, направленных на хардкорный фотореализм.

Главное преимущество LoRa — небольшой вес. Средний размер модели не превышает 40-150 Мб.

Размер LoRa Stable Diffusion на примере свойств файлов низкоранговой адаптации в проводнике Windows 10
Компактность модели объясняется тем, что из неё буквально удаляется всё лишнее, кроме добавленных вами данных и минимального количества необходимой информации, позаимствованной из нейросети SD, использованной в качестве исходника.

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

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

Женщина в длинном зелёном платье позирует на фоне папоротника - изображение, созданное с помощью LoRa в Stable Diffusion Webui (Automatic1111)

Однако модели LoRa хороши тем, что их влияние на генерируемые изображения можно как усиливать, так и ослаблять. Например, создав универсальный стиль на основе отснятых фотосессий и назвав его Tengyart, я могу изменить не только вес ключевого слова — токена (Tengyart), но и силу воздействия модели низкоранговой адаптации.

По умолчанию модель влияет на картинку по максимуму (<lora:Tengyart:1>). Изменив значение до 0:5, можно смешать свой стиль со стилем модели, уменьшив до 0:1 — практически полностью нивелировать её влияние на Stable Diffusion.

Чувственная загорелая рыжеволосая девушка в зелёном белье и красивым лицом позирует на фоне водопада, спрятав руки за спину - нейросетевой арт, сделанный с помощью LoRa для Stable Diffusion

Токен, используемый вместе с LoRa, также даёт дополнительную степень контроля — его можно использовать без модификаторов (просто Tengyart), усилить влияние, написав в текстовой подсказке (Tengyart:1.4), либо ослабить, добавив (Tengyart)0.6 или [Tengyart:0.6].

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

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

Подробнее о синтаксисе SD и использовании модификаторов можно прочитать в этой статье.

Что необходимо для обучения LoRa?

  • Любая модель Stable Diffusion (выбрать подходящую можно на Civitai);
  • Stable Diffsuion Webui (Automatic1111);
  • Коллекция фотографий или артов;
  • Kohya_ss (GUI и sd-webui-additional-networks);
  • Библиотека NVIDIA cuDNN для ускорения тренировки на видеокартах Nvidia. Наибольший прирост скорости заметен на RTX 30/40. Вы можете скачать старую версию одним архивом на Mega или выбрать актуальный вариант в cuDNN Archive;
  • Конфигурационные файлы от Aitrepreneur для быстрой настройки тренировочных параметров. Здесь можно скачать стандартную версию, а тут — вариант для карт с 4 Гб VRAM.

Перед тем, как вы перейдёте к тренировке LoRa, понадобится установить весь софт из списка.

Если у вас мало места на диске, много свободного времени, либо есть желание самостоятельно разбираться в тренировочных параметрах, можно не устанавливать cuDNN и не использовать конфигурационные файлы для Kohya-ss.
Пример генерации изображения с помощью модели LoRa, обученной на пользовательских данных (фотографиях и артах, созданных в нейросети Stable Diffusion)

Установка Automatic1111

Чтобы установить Automatic1111, скачайте и запустите Python 3.10.6, отметив «Add Python to PATH», затем установите git и загрузите репозиторий stable-diffusion-webui. На Windows 10 установить webui очень легко — достаточно запустить git и выполнить команду git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git.

Как только установка завершится, закройте git и запустите webui-user.bat из проводника Windows от имени обычного пользователя.

Первый запуск необходим для проверки работоспособности программы. На этом этапе webui вам не нужен, поэтому его можно закрывать и идти дальше.

Кое-что важное о CUDNN и torch (прочитайте перед установкой Kohya_ss!)

К тому моменту, когда вы займётесь тренировкой LoRa, версии cuDNN и torch уже наверняка устареют! Поэтому настоятельно рекомендую изменить их на актуальные, если вы устанавливаете программу с помощью PowerShell.

При установке софта с помощью setup.bat проблемы не должны возникнуть, так как новые релизы публикуются чуть ли не пару раз в месяц. Однако перестраховка лишней не будет, так что посматривайте краем глаза на информацию со страницы ниже!

Чтобы проверить актуальность версии cuDNN, вбейте в Google запрос cuDNN actual version или используйте последний стабильный релиз из архива cuDNN на сайте Nvidia.

Если для вашей системы требуется определённая версия cuDNN, лучше сразу воспользоваться архивом. К сожелению, что пригодится именно вам, посоветовать не смогу, так что ищите информацию в Google или Яндекс.

Чтобы узнать акутальную версию torch, введите в поисковую систему запрос torch actual version, либо посетите страницу с релизами версий PyTorch на GitHub. Доступные версии CUDA и torch также можно проверить на сайте PyTorch.

На последнем также можно получить код для установки torch для вашей операционной системы, но на практике вам понадобится информация лишь о версиях PyTorch и CUDA (CU), чтобы подставить их в код Kohya. Например, torch==2.2.1 и cu121.

Узнать акутальную версию torchvision можно здесь. Последняя версия, упоминаемая в этой статье - 0.17.1, о всех следующих, пожалуйста, ищите информацию самостоятельно!

Как установить Kohya_ss?

Вариант 1 — установка приложения с помощью файла setup.bat

Лучше всего подходит для новых версий, предназначенных для Windows 10 и Windows 11:

  • Скачайте самый новый zip-архив с кодом Kohya_ss со страницы с релизами на GitHub;
  • Распакуйте его в папку с установленным Git, задав альбому название kohya_ss;
  • Откройте папку с разархивированной программой;
  • Запустите файл setup.bat;
  • Нажмите на цифру напротив надписи install kohya_ss_gui. На момент написания статьи это 1;
Установка kohya ss gui для тренировки SD и SDXL LoRa
  • Дождитесь завершения установки;
  • Завершите настройку программы, ответив на системные вопросы. Примеры ответов можно посмотреть на картинке ниже:
Установка и финальная настройка программы для тренировки LoRa - kohya_ss

Когда финальная настройка программы завершится, запустите её в браузере, введя цифру 5 в меню. Если перед Start Kohya_ss GUI находится другая цифра, пожалуйста, напишите её!

Для последующего запуска программы используйте файл gui.bat:

Лёгкая установка и быстрый запуск kohya_ss gui для тренировки моделей нейросети LoRa SDXL и любых других loRa для нейросети Stable Diffusion

После запуска Kohya_ss GUI в браузере можно переходить к другим этапам. Если установка и настрока не удались, попробуйте воспользоваться другим PowerShell.

Вариант 2 — установка с помощью PowerShell

Универсальный способ, подходящий для тех, кто любит делать всё вручную. Первоначально использовался для установки старых версий ПО:
  • Запустите PowerShell от имени администратора;
  • Введите команду Set-ExecutionPolicy Unrestricted и ответьте ‘A’ (это необходимо для предоставления неограниченного доступа к сценариям PowerShell и нормальной работы venv);
  • Закройте PowerShell;
  • Откройте терминал PowerShell в роли обычного пользователя и выполните команды со страницы ниже.
Запуск Windows PowerShell от имени администратора - первый этап подготовки к установке Kohya_ss на Win 10
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv venv
.\venv\Scripts\activate
pip install torch==2.2.1+cu121 torchvision==0.17.1+cu121 --extra-index-url https://download.pytorch.org/whl/cu118
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
accelerate config

В новых версиях Kohya_ss установка bitsandybytes стала опциональной:

С августа 2023 года установка bitsandybytes в kohya_ss (GUI для тренировки LoRa в Stable Diffusion 1.5 - 2.1, а также SDXL) стала опциональной (необзяталеьной для установки, но желательной для производительности)

Если вы сталкиваетесь с ошибками во время установки через PowerShell, попробуйте убрать эту часть кода:

cp .\bitsandbytes_windows*.dll .\venv\Lib\site-packages\bitsandbytes\ 
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py 
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbyte

Не помогло? Используйте первый вариант!

Когда установка завершится, необходимо завершить настройку Kohya_ss в терминале PowerShell. Для этого вам понадобится ответить на вопросы, нажав Enter или выбрав правильный ответ с помощью клавиатуры (рекомендую использовать цифры, чтобы случайно не вставить код какой-либо другой команды).

Примеры ответов можно посмотреть на скриншоте ниже или посмотреть урок от Aitrepreneur на YouTube (добавил его сразу после этой картинки):

Установка и настройка kohya_ss - программы, необходимой для обучения LoRa (особой модели нейросети, улучшающей картинки в Stable Diffusion)

Завершив настройку Kohya_ss, скачайте архив с cuDNN и установите его с помощью PowerShell.

Пока открытый терминал болтается в отдельном окне, создайте папку с названием cudnn_windows в репозитории Kohya_ss на ПК, затем распакуйте в неё архив с файлами. Если вы скачали файлы с Mega, папку можно не создавать, а перенести прямо из архива.

Когда завершится копирование файлов, разверните окно терминала PowerShell и выполните следующую команду:

.\venv\Scripts\activate

python .\tools\cudann_1.8_install.py

Перед вами появится окно с предупреждением и двумя кнопками — Paste anyway и Cancel. Нажмите на первую («Вставить в любом случае») и дождитесь завершения установки. После этого терминал PowerShell можно закрывать.

Если вы закрыли терминал до того, как установили cuDNN, в этом нет ничего страшного! Снова запустите терминал, скопируйте скрипт со страницы выше и выполните команду, нажав на кнопку Enter.

С помощью библиотеки cuDNN можно ускорить тренировку LoRa на 10-15%, используя бюджетные карты RTX 30, либо на 20-40%, если на вашем ПК установлены высокопроизводительные карты из серии RTX 40.

Если сочетать cuDNN и обучение на модели в формате .safetensors, скорость тренировки может увеличиться на 50% и более даже на видеокартах из серии RTX 20!

Простой пример - тестовая выборка из 96 изображений на RTX 2070 Super без cuDNN обучалась примерно 1 час 15 минут. Тренировка LoRa на той же видеокарте с подборкой из 116 изображений заняла меньше 28 минут. Соответственно, используя маленькие коллекции, можно завершить обучение нейросети менее чем за 8-15 минут, что довольно неплохо для старенькой видеокарты.
Тренировка LoRa в Kohya_ss на видеокарте Nvidia RTX 2070 super

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

Если cuDNN (библиотека примитивов для глубоких нейронных сетей с GPU-ускорением) помогла вам даже на старых видеокартах, которые с трудом запускали обучение, пожалуйста, напишите о своём опыте в комментариях!

Как выбрать исходники для LoRa?

Чтобы создать модель LoRa, передающую внешность определённого персонажа, необходимо собрать коллекцию фотографий или артов, на которых лицо модели хорошо заметно и занимает большую часть кадра. Если для вас важнее стиль и позы, можно использовать исходники, на которых лучше видно окружение, одежду или движения выбранного героя.

Выбор и подготовка исходников для обучения LoRa (Low-rank Adaptation, низкоранговой адаптации для быстрой настройки диффузии текста в изображение) в программе Kohya_ss
Чем больше разноплановых картинок вы используете, тем слабее LoRa будет влиять на образ генерируемого персонажа. И наоборот, жёсткая фиксация на одном лице будет максимально сильно подгонять внешность под заданные стандарты.

Оба варианта имеют как слабые, так и сильные стороны.

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

Генерируя девушек в стиле аниме, лучше не использовать LoRa, обученные на фотографиях реальных женщин, либо уменьшать влияние моделей до 0.5 и меньше. При 100% воздействии качество картинок упадёт из-за большого количества искажений.
Девушка в белом платье позирует на фоне моря - пример арта в нейросети Stable Diffusion
Чтобы избавиться от багов, можно прогнать исходники через любую аниме нейросеть, выбрать наиболее удачные из получившихся, а затем обучить на их основе отдельную версию LoRa. Компенсировать нехватку портретов с разными ракурсами сложнее - понадобится использовать ControlNet, смешивая реальные снимки с нейросетевыми, либо самостоятельно фотографировать (рисовать) недостающие.

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

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

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

Подготовка файлов к тренировке LoRa

Создайте отдельную папку, скопируйте в неё файлы, выбранные для тренировки LoRa, затем обрежьте изображения в соотношении 1:1 и сохраните их. Завершив обрезку, сделайте новый альбом, а в нём ещё три папки — Image, Log, Model. Откройте первую из них и создайте папку с названием вашей будущей модели.

Поскольку в процессе редактирования оригиналы обрезаются, я рекомендую использовать для обучения LoRa только копии файлов!
Подготовка файлов к тренировке LoRa для STable Diffusion в программе Kohya_ss начинается с создания трёх папок - Image, Model, Log

Завершив предварительную подготовку, запустите Automatic1111, нажав на webui-user.bat в папке с установленной программой (по умолчанию называется stable-diffusion-webui). Когда появится строка с веб-адресом (например, http://127.0.0.1:7860/), откройте её в новой вкладке браузера, чтобы получить доступ к консоли управления программой.

Перейдите во вкладку Train и переключитесь на Preprocess Images. Укажите в первом поле (Source directory) папку с исходниками, во втором (Destination directory) путь к папке с названием модели (той, что хранится в Image). Если у вас слабая видеокарта или вы хотите ускорить обучение LoRa, Width и Height стоит оставить без изменений (512 пикселей с каждой стороны). В других случаях разрешение можно увеличить. Разобравшись с базовыми настройками, активируйте чекбокс рядом с надписью Use BLIP for caption, затем нажмите на кнопку Preprocess.

Используя BLIP в Automatic1111 можно подготовить изображения к тренировке LoRa, подогнав размер картинок и автоматически сгенерировать текстовые файлы с их описанием

Дождитесь завершения обработки, затем закройте Webui.

Перейдите в папку с готовыми изображениями. С помощью Automatic1111 вы уменьшили их размер и сделали текстовые файлы с автоматическим описанием исходников. Каждый текстовый файл с описанием нужно проверить и внести в него дополнительные изменения.

Автоматическая генерация описания не спасает от ошибок, а лишь ускоряет подготовку файлов.

В первую очередь вам необходимо создать уникальную текстовую подсказку для модели.

Например, я хочу сделать LoRa для улучшения генерации волшебных зелий в Stable Diffusion, поэтому прописываю ключевое слово Magicheskoezelye в начале каждого текстового файла. Вместо транслитерации можно было создать токен MagicpotionMP, но это решение могло ухудшить выдачу (SD воспринимает английские слова с ошибками, хотя и не всегда верно).

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

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

В моём случае это Northern Lights, glass bottle, alchemical potion with northern lights inside. Иногда я добавляю чуть больше ключевых слов — glare, reflection, shadow of the bottle, starry sky and northern lights in the background.

Сохраняю текстовый документ после редактирования описания и повторяю процесс со всеми файлами в формате .txt в выборке.

Закончили работу с датасетом? Самое время изменить название папки!

Перед названием папки с картинками нужно поставить число, равное количеству шагов обучения на каждое изображение. Для больших датасетов по умолчанию можно ставить 100 шагов. После числа добавляется нижнее подчёркивание, затем идёт название модели. Выглядит это примерно так: 100_Magicheskoezelye или 100_MagicpotionMP.

Настройка содержимого папки Image перед созданием модели LoRa для нейросети Stable Diffusion в программе Kohya_ss
Учитывайте, что общее количество шагов на число изображений в подборке должно быть не меньше 1500! Соответственно, если у вас маленький датасет, необходимо пересчитать шаги вручную и изменить название папки.

Например, если у вас 5 картинок, нужно разделить 1500 на 5. 1500 / 5 = 300. Соответственно, название папки изменится на 300_Name. В папке 10 картинок? Добавьте перед названием папки цифру 150! Если в вашей выборке больше 15-20 картинок, рекомендую использовать стандартное минимальное количество шагов для обучения LoRa — 100.

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

На этом подготовка завершена, можно перейти к созданию низкоранговой адаптации.

Обучение LoRa с помощью Kohya_ss

Чтобы обучить LoRa на фотографиях или артах, запустите gui.bat в папке с Kohya_ss. Когда в окне с программой появится веб-адрес, нажмите на него или скопируйте ссылку, чтобы открыть веб-интерфейс программы. Например, http://127.0.0.1:7860/.

Чтобы открыть Kohya_ss, запустите gui.bat в папке с программой

Переключитесь на вкладку Dreambooth LoRa, затем откройте конфигурационный файл, о котором я писал в начале статьи. Для карт с 8 Гб памяти и выше используйте LoraBasicSettings.json, в остальных случаях — LoraLowVRAMSettings.json.

Первоначальная настройка папки Folders в Kohya-ss
Использовать конфигурацию не обязательно, но с её помощью вы сэкономите себе время, которое можно пустить на эксперименты или потратить на что-нибудь ещё.

В разделе Source model осуществляется выбор исходной модели, используемой для обучения loRa. Вы можете выбрать одну из базовых моделей Stable Diffusion, предлагаемых в выпадающем списке, либо нажать custom, чтобы использовать другую модель. Лично я за использование кастомных моделей SD, поскольку с ними вы получите больше дополнительных возможностей и контроля над результатом.

Нажав custom, откройте иконку с символом папки и укажите путь к нужной модели нейросети, либо скопируйте его вручную и добавьте в поле Pretrained model name or path. В поле Save trained model as («Сохранить обученную модель как») по умолчанию стоит формат safetensors. Вы можете выбрать ckpt или diffusers, но формат safetensors намного быстрее и безопасней, поэтому лучше ничего не изменять и оставить его.

Выбор модели нейронной сети Stable Diffusion для обучения LoRa в программе Kohya_ss
Помимо этого, в большинстве альтернативных GUI до сих пор не поддерживается LoRa Stable Diffusion, поэтому нет никакой разницы, в каком формате вы сохраните модель. Зато webui Automatic1111 переварит и ckpt, и safetensors, так что проблем с использованием не будет!

После завершения базовых настроек обратите внимание на два чексбокса — v2 и v_parameterization.

Если вы используете одну из базовых моделей нейросетей в списке Model Quick Pick, ничего менять не нужно — webui сам подставит нужные значения. А вот с кастомными моделями нужно быть осторожней и проверять, какая версия SD использовалась в их основе. Начиная с SD 2.0, вам понадобится активировать оба параметра, до SD 2.0 чекбоксы вообще не нужно трогать.

Ради перестраховки (вдруг я что напутал!) рекомендую выбрать одну из базовых моделей, чтобы подсмотреть настройки и выставить их соответствующим образом для кастомной версии SD, которую вы планируете использовать для тренировки в kohya_ss.

Выбрав модель для обучения, параметры и финальный формат файла, переключитесь на вкладку Folders. В первом поле (с названием Image folder) укажите путь к папке Image. Например, I:\AI\Magic potion\Image. Указывать подпапку с вашими картинками не нужно — Kohya_ss подхватит их самостоятельно.

По этой же причине не оставляйте в папке Image огрызки других файлов и прочий мусор!

В поле Output folder укажите путь к папке Model, в Logging folder — путь к папке Log. В Model output name укажите название будущей модели. Лучше всего давать название, аналогичное запросу, добавленному в начале описания файлов. В моём случае это Magicheskoezelye. Можете продублировать запрос в поле Training comment или оставить его пустым.

Обучение LoRa с помощью Kohya_ss - предварительная настройка Dreambooth LoRa перед тренировкой модели нейросети
Перед запуском обучения LoRa рекомендую зайти в раздел "Тренировочные параметры" (Train parameters), чтобы проверить их или изменить под себя. Главное, на что я советую обратить внимание - поля Mixed precision и Save precision. Для большинства моделей видеокарт (кроме самых новых и производительных) желательно использовать fp16. Установив bf16 на старой видеокарте, вы даже не сможете начать тренировку!

Запустив обучения LoRa для Stable Diffusion, можете пойти пить чай или заняться своими делами.

В зависимости от размера выборки, предварительных настроек и мощности видеокарты обучение может занять как 5 минут, так и 2-3 часа. Если подборка изображений не превышает 30-40 штук, даже на видеокартах 2019-2020 годов тренировка длится примерно 15-20 минут.

Как только тренировка завершится и файл LoRa сохранится на ПК, скопируйте его в папку LoRa. Найти её можно по одному из следующих адресов — C:\stable-diffusion-webui\models\Lora или C:\Git\stable-diffusion-webui\models\Lora. Если вы устанавливали SD на другой диск, измените метку тома в скопированной строке и нажмите Enter.

Скопировав LoRa, вы подготовили модель для использования в Stable Diffsuion. Теперь осталось добавить оформление и научиться с ней работать!

В качестве обложки для модели можно использовать изображения в форматах .PNG и .JPG.

Для отображения превью достаточно перенести любую картинку в папку LoRa и назвать её именем модели. После перезапуска в веб-консоли SD вместо серой картинки будет отображаться выбранная вами обложка. Чтобы посмотреть, как именно она будет выглядеть, нажмите на кнопку Show extra networks и переключитесь на вкладку Lora.
Настройка обложки LoRa для Stable Diffusion webui (Automatic1111)

Лучше всего для превью подходят вертикальные изображения со стандартными соотношениями сторон. Горизонтальные и квадратные картинки автоматически обрезаются webui, из-за чего могут неудачно выглядеть. Чтобы обложки соответствовали вашим ожиданиям, рекомендую предварительно подгонять их в Adobe Photoshop или других графических редакторах.

Превью LoRa в webui после настройки оформления внутри папки с файлами Automatic1111

Как использовать LoRa в Automatic1111?

  • Запустите Automatic1111 с помощью webui-user.bat и откройте веб-интерфейс программы. Адрес находится в строке Running on local URL (например, http://127.0.0.1:7860);
  • Перейдите в раздел Extensions, затем во вкладку Install from url, введите https://github.com/kohya-ss/sd-webui-additional-networks.git и нажмите Install. После установки намите Apply settings и Reload UI (это можно сделать в разделе Settings), чтобы изменения вступили в силу;
  • Откройте настройки (Settings) и переключитесь на Additional Networks. В этом разделе нужно указать путь к папке LoRa. Например, I:\Git\stable-diffusion-webui\models\Lora;
Установка расширения Kohya-ss SD webui additional networks для программы Automatic1111
  • Снова нажмите Apply settings и Reload UI;
  • Нажмите на вкладку text2img или img2img;
  • С помощью чекбокса над ними (поля Stable Diffusion checkpoint) переключитесь на модель SD, которую вы использовали для обучения низкоранговой адаптации. Если она уже выбрана в качестве активной, ничего менять не нужно;
  • Добавьте негативные подсказки, чтобы улучшить результат генерации;
  • Напишите короткий текстовый запрос, описывая, что именно вы хотите получить. Делать детальный запрос не нужно, потому что вам надо проверить влияние низкоранговой адаптации;
  • Нажмите на Show extra networks (на иконку с пейзажной фотографией, третью слева под кнопкой Generate);
  • После нажатия перед вами появится четыре вкладки (в зависимости от установленных расширений их может быть больше!) — Textual Inversion, Hypernetworks, Checkpoints и Lora. Переключившись на последнюю вкладку, перед вами появятся превью всех доступных моделей Lora. Нажмите на превью своей модели, чтобы активировать её;
Кнопка Show extra networks в webui (Automatic1111) показывает список доступных моделей Textual Inversion, Hypernetworks, Checkpoints и Lora
  • Как только вы нажмёте на превью, в поле с текстовой подсказкой появится специальный элемент с названием модели (например, у меня добавилось <lora:Magicheskoezelye:1>). С его помощью вы сможете модифицировать картинки, добавляя заложенный стиль, объект или лицо. Если низкоранговая адаптация слишком сильно влияет на результат, её можно ослабить, поменяв цифру в конце на 0:5, 0:6, 0:75 и так далее;
  • Помимо названия модели, заключённого в <>, вы можете использовать текстовые подсказки из файлов описания. То, что вы чаще прописывали, будет сильнее влиять на генерацию, то, что использовали реже — слабее. В моём случае самые жирные подсказки это Magicheskoezelye, Northern lights, glass bottle, alchemical potion;
  • Снова нажмите на кнопку Show extra networks, чтобы скрыть превью;
  • Настройте параметры генерации — метод семплирования, ширину и высоту для генерируемых изображений, креативность модели (GFP scale), количество создаваемых картинок. В поле Seed оставьте значение по умолчанию;
  • Запустите генерацию, чтобы проверить результат.
Магическое зелье со звёздами и северным сиянием, сгенерированное в Stable Diffusion webui

Как видите, в использовании LoRa нет ничего сложного. Более того, низкоуровневые адаптации можно сочетать!

Чтобы задействовать несколько моделей LoRa одновременно, нажмите на превью и измените вес каждой модели. Например, одной пропишите 0:6, другой 0:4. Таким образом вы сможете их смешать, позаимствовав разные элементы.

Сочетать можно и 3, и 4, и 5 моделей одновременно. Однако чем больше их добавите, тем хаотичней будет результат.

Можно ли использовать LoRa, не используя кнопку Show extra networks?

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

Кстати, если нажать на пятую кнопку, находящуюся под Generate, можно сохранить стиль вместо со всеми текстовыми подсказками и низкоранговыми адаптациями. С помощью стилей вам не нужно будет заново вводить промпты с интересными результатами, ведь их можно повторить, загрузив в веб-интерфейсе SD! 

Где скачать LoRa для Stable Diffusion?

Самая большая и регулярно пополняемая коллекция LoRa для Stable Diffusion находится на Civitai. Пользователи ежедневно добавляют новые модели, подходящие для любых поколений SD, а также аниме нейросетей.

Для облегчения поиска на сайте есть удобная фильтрация, позволяющая отсортировать модели по новизне, популярности, типу контента (SFW или NSFW). Помимо низкоранговых адаптаций, на сайте можно скачать кастомные модели Stable Diffusion, lyCORIS, файлы для ControlNet и много другое.
Скачать LoRa для Stable Diffusion можно в бесплатной онлайн коллекции на сайте civitai

Подробнее о возможностях Civitai я писал в другой статье. Если хотите, можете прочитать её прямо сейчас!

Помимо Civitai, модели можно скачать на Hugging Face. Учитывайте, что на этой платформе многие из них не сопровождаются картинками, описанием, либо вовсе созданы в экспериментальных целях. Копаться в базе достаточно интересно, но больше похоже на ловлю кота в мешке. Причём мешок необъятный, вы — внутри, а фонарика даже близко под рукой нет.

Альтернативный, пусть и не самый удачный способ искать модели низкоранговой адаптации - нырнуть поглубже на нейросетевые форумы. Например, на неофициальный форум Stable Diffusion на Reddit. Здесь куда чаще публикуют новости, промпты, ведут горячие баталии и спорят по тысяче поводов, чем выкладывают полезные модели.

Несмотря на имеющиеся минусы, именно на Reddit можно найти актуальную информацию обо всех нововведениях SD, попросить о помощи, исправить баги с помощью подробных гайдов и даже пообщаться с авторами любимых нейросетей!

Чтобы найти ссылки на модели, рекомендую использовать комбинированный поиск — вбивать LoRa в поисковой строке и изучать новые посты с примерами работ (в них зачастую делятся ссылками на модели, идеями и советами).

Удачных экспериментов!

Понравилась статья?

Поддержите автора репостом, комментарием, подпиской на Telegram и другие страницы!

Фотограф, гик, ретушёр

16 комментариев

    • Tengyart

      Спасибо за комментарий!

      Поправил статью и добавил информацию, где можно проверить актуальную версию CUDNN (возможно, кому-то пригодится).

      К сожалению, не всегда обновляю данные, так что очень благодарен, что вы обратили внимание на проблему)

  • Денис

    Что должно быть в папке «Log», если вся работа по датасету(обрезка, подготовка фото, текстовое описание) производилась вручную?

    • Tengyart

      Папка Log — системная, ей нужно оставить пустой. В ней будет храниться информация о том, что происходит во время тренировки LoRa, включая сведения об ошибках и сбоях.

      Когда вы создадите новую модель, в разделе Log автоматически появится папка с длинным цифровым обозначением, содержащая ещё одну вложенную папку — network_train и файл, начинающийся с events.out.tfevents. В дальнейшем они вам не понадобится, можете про них забыть.

      Всё, что в итоге нужно — исключительно файл LoRa и (возможно) пример изображения, которое вы использовали для тренировки / сгенерировали с помощью данной модели. И то не обязательно, т.к. это лишь облегчает поиск модели среди остальных, но не является чем-то жизненно необходимым.

      Поэтому в папке Log первоначально вообще ничего не должно быть. Kohya_ss всё заполнит за вас)

  • Danila Erofeev

    cp : Не удалось найти часть пути «D:\kohya_ss\venv\Lib\site-packages\bitsandbytes\cextension.py».
    строка:9 знак:1
    + cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bits …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Copy-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.PowerShell.Commands.CopyItemCommand

    cp : Не удалось найти часть пути «D:\kohya_ss\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py».
    строка:10 знак:1
    + cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbyt …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Copy-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.PowerShell.Commands.CopyItemCommand

    • Tengyart

      Если проблема до сих пор не решена, попробуйте написать разработчику, либо попросить помощи на Reddit.

      На первый взгляд, больше похоже на то, что по указанному пути не было нужных файлов (например, установились с ошибками или вовсе не добавились), либо установка велась не на тот диск / ПО не может распознать папку. Но это лишь на первый взгляд, я могу и ошибаться!

    • Николай

      Столкнулся с аналогичной проблемой. В kohya_ss\venv\Lib\site-packages\ отсутствует папка bitsandbytes
      поэтому команда не отрабатывает видимо. Но как это исправить я не знаю. У меня только пошаговая инструкция и на этом шаге для меня установка kohya завершилась провалом. -F
      Если есть решение, оно бы многим помогло.

    • Tengyart

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

      Ещё лучше попробовать скачать архив с одним из новых релизов, опубликованных на GitHub, поместить в папку с git, задать имя kohya_ss, затем запустить установку с помощью setup.bat.

      А так… судя по апдейтам, это может быть не только багом, но и несоответствием использованного мной кода настройкам новых релизов ПО.

      Например, в следующих версиях может прекратиться поддержка Torch 1, поэтому изменил в коде для PowerShell инфу на Torch 2 (его уже сейчас рекомендуют устанавливать в первую очередь), обновились данные о torchvision, cu116 сменился на cul18, вместо --extra-index-url можно попробовать использовать просто --index-url. На GitHub появилась информация, что bitsandbytes и вовсе стал опциональным (не обязательным для установки), так что можно попробовать обойтись без него или установить отдельно, воспользовавшись файлом setup.bat.

      Переписал статью, добавил новый способ установки, чуть-чуть видоизменил старый. Надеюсь, это поможет решить вашу проблему!

      P.S. В новой версии Kohya_ss можно тренировать LoRa как для Stable Diffusion 1.5, так и для Stable Diffusion XL (SDXL). Но последние я ещё не тестировал, так что публикацию пока не дополняю.

    • Tengyart

      Обновил пост, сделал установку с нуля. Теперь должно работать)

      P.S. Добавил два варианта установки, рекомендую начинать с первого!

    • Tengyart

      Честно говоря, возникший баг больше похож на ошибку при установке. На скриншоте видно, что часть файлов отсутствует или не смогла установиться (например, из-за несовместимости с другим софтом).

      Не сталкивался с подобными ошибками, поэтому могу лишь посоветовать поискать решение на YouTube или других ресурсах, чтобы не плодить сущности сверх не обходимого и не давать советов, которые могут навредить.

      Могу лишь сказать, что устанавливал софт другу буквально за неделю до вашего комментария, на тот момент всё работало.

      P.S. Устареть тоже мог, но пока не видел массовых жалоб на ошибки.

    • Артем

      Столкнулся с похожей проблемой на этапе вставки кода. Буду признателен, если поделитесь, как пофиксили, а то я совсем ничего не понимаю в этих технических делах ) https://postimg.cc/qtMYQHW4

    • Tengyart

      Если смотреть на командную строку, то там буквально написано «не распознается как имя команды, функции, файла сценария или управляемой программы. Проверьте написание имени или, если был указан путь, убедитесь, что путь
      правильность пути и повторите попытку.»

      Так что начать можно с проверки пути к файлу или правильности команды, например, не было ли опечатки или не потеряли ли что-нибудь при копировании. Либо снова изменились версии CUDNN и т.п., о чём я уже упоминал ранее, в таком случае достаточно будет изменить их до актуальных

      Прямо сейчас у меня нет возможности воспроизвести установку, поэтому могу предложить несколько альтернатив:

      — Установить портативную версию kohya_ss (редко обновляется, не содержит актуальных фич, но не требует работы с консолью после распаковки);
      — Скачать NMKD GUI, установить последние обновления во вкладке Manage Installation and Install Updates, затем найти опцию Train LoRa Model, выбрать размер будущего LoRa-файла, базовую модель, имя проекта, путь к датасету и так далее, затем нажать на кнопку Start Training. Этот вариант интересен тем, что не требует от вас много телодвижений, но так как По обновляется редко и медленно, гарантированно будет отставать по добавлению различных приятных функций от kohya_ss;
      — Заглянуть на страницу программы, изучить инструкции и нововведения, затем задать вопросы разработчику, либо посетить Reddit Stable Diffusion и написать о проблеме там. Наверняка найдётся хотя бы несколько увлечённых нейроэнтузиастов, которые подскажут решение проблемы или предложат больше удобных вариантов для тренировки ЛоРа.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *