Главная Юзердоски Каталог Трекер NSFW Настройки

Искусственный интеллект

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 38 16 23
Stable Diffusion технотред #20 /tech/ Аноним 11/07/25 Птн 04:39:36 1272560 1
training methods.png 1034Кб, 3510x2910
3510x2910
diffusion proce[...].png 358Кб, 2546x1822
2546x1822
lr.png 252Кб, 1853x624
1853x624
performance cha[...].webp 53Кб, 1200x900
1200x900
flux arch.jpg 1196Кб, 3258x3242
3258x3242
sd3 mmdit arch.png 257Кб, 2004x1372
2004x1372
ИТТ делимся советами, лайфхаками, наблюдениями, результатами обучения, обсуждаем внутреннее устройство диффузионных моделей, собираем датасеты, решаем проблемы и экспериментируем Тред общенаправленныей, тренировка дедов, лупоглазых и фуррей приветствуются

Предыдущий тред: >>1118663 (OP)

➤ Софт для обучения

https://github.com/kohya-ss/sd-scripts
Набор скриптов для тренировки, используется под капотом в большей части готовых GUI и прочих скриптах.
Для удобства запуска можно использовать дополнительные скрипты в целях передачи параметров, например: https://rentry.org/simple_kohya_ss

https://github.com/bghira/SimpleTuner Линукс онли, бэк отличается от сд-скриптс

https://github.com/Nerogar/OneTrainer Фич меньше, чем в сд-скриптс, бэк тоже свой

➤ GUI-обёртки для sd-scripts

https://github.com/bmaltais/kohya_ss
https://github.com/derrian-distro/LoRA_Easy_Training_Scripts

➤ Обучение SDXL

https://2ch-ai.gitgud.site/wiki/tech/sdxl/

➤ Flux

https://2ch-ai.gitgud.site/wiki/nai/models/flux/

➤ Гайды по обучению

Существующую модель можно обучить симулировать определенный стиль или рисовать конкретного персонажа.

LoRA – "Low Rank Adaptation" – подойдет для любых задач. Отличается малыми требованиями к VRAM (6 Гб+) и быстрым обучением. https://github.com/cloneofsimo/lora - изначальная имплементация алгоритма, пришедшая из мира архитектуры transformers, тренирует лишь attention слои, гайды по тренировкам:
https://rentry.co/waavd - гайд по подготовке датасета и обучению LoRA для неофитов
https://rentry.org/2chAI_hard_LoRA_guide - ещё один гайд по использованию и обучению LoRA
https://rentry.org/59xed3 - более углубленный гайд по лорам, содержит много инфы для уже разбирающихся (англ.)

LyCORIS (Lora beYond Conventional methods, Other Rank adaptation Implementations for Stable diffusion) - проект по созданию алгоритмов для обучения дополнительных частей модели. Ранее имел название LoCon и предлагал лишь тренировку дополнительных conv слоёв. В настоящий момент включает в себя алгоритмы LoCon, LoHa, LoKr, DyLoRA, IA3, а так же на последних dev ветках возможность тренировки всех (или не всех, в зависимости от конфига) частей сети на выбранном ранге:
https://github.com/KohakuBlueleaf/LyCORIS

Подробнее про алгоритмы в вики https://2ch-ai.gitgud.site/wiki/tech/lycoris/

Dreambooth – для SD 1.5 обучение доступно начиная с 16 GB VRAM. Ни одна из потребительских карт не осилит тренировку будки для SDXL. Выдаёт отличные результаты. Генерирует полноразмерные модели:
https://rentry.co/lycoris-and-lora-from-dreambooth (англ.)
https://github.com/nitrosocke/dreambooth-training-guide (англ.) https://rentry.org/lora-is-not-a-finetune (англ.)

Текстуальная инверсия (Textual inversion), или же просто Embedding, может подойти, если сеть уже умеет рисовать что-то похожее, этот способ тренирует лишь текстовый энкодер модели, не затрагивая UNet:
https://rentry.org/textard (англ.)

➤ Тренировка YOLO-моделей для ADetailer:
YOLO-модели (You Only Look Once) могут быть обучены для поиска определённых объектов на изображении. В паре с ADetailer они могут быть использованы для автоматического инпеинта по найденной области.

Подробнее в вики: https://2ch-ai.gitgud.site/wiki/tech/yolo/

Не забываем про золотое правило GIGO ("Garbage in, garbage out"): какой датасет, такой и результат.

➤ Гугл колабы

﹡Текстуальная инверсия: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/sd_textual_inversion_training.ipynb
﹡Dreambooth: https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/blob/main/fast-DreamBooth.ipynb
﹡LoRA https://colab.research.google.com/github/hollowstrawberry/kohya-colab/blob/main/Lora_Trainer.ipynb

➤ Полезное

Расширение для фикса CLIP модели, изменения её точности в один клик и более продвинутых вещей, по типу замены клипа на кастомный: https://github.com/arenasys/stable-diffusion-webui-model-toolkit
Гайд по блок мерджингу: https://rentry.org/BlockMergeExplained (англ.)
Гайд по ControlNet: https://stable-diffusion-art.com/controlnet (англ.)

Подборка мокрописек для датасетов от анона: https://rentry.org/te3oh
Группы тегов для бур: https://danbooru.donmai.us/wiki_pages/tag_groups (англ.)
NLP тэггер для кэпшенов T5: https://github.com/2dameneko/ide-cap-chan (gui), https://huggingface.co/Minthy/ToriiGate-v0.3 (модель), https://huggingface.co/2dameneko/ToriiGate-v0.3-nf4/tree/main (квант для врамлетов)

Оптимайзеры: https://2ch-ai.gitgud.site/wiki/tech/optimizers/
Визуализация работы разных оптимайзеров: https://github.com/kozistr/pytorch_optimizer/blob/main/docs/visualization.md

Гайды по апскейлу от анонов:
https://rentry.org/SD_upscale
https://rentry.org/sd__upscale
https://rentry.org/2ch_nai_guide#апскейл
https://rentry.org/UpscaleByControl

Старая коллекция лор от анонов: https://rentry.org/2chAI_LoRA

Гайды, эмбеды, хайпернетворки, лоры с форча:
https://rentry.org/sdgoldmine
https://rentry.org/sdg-link
https://rentry.org/hdgfaq
https://rentry.org/hdglorarepo
https://gitgud.io/badhands/makesomefuckingporn
https://rentry.org/ponyxl_loras_n_stuff - пони лоры
https://rentry.org/illustrious_loras_n_stuff - люстролоры

➤ Legacy ссылки на устаревшие технологии и гайды с дополнительной информацией

https://2ch-ai.gitgud.site/wiki/tech/legacy/

➤ Прошлые треды

https://2ch-ai.gitgud.site/wiki/tech/old_threads/

Шапка: https://2ch-ai.gitgud.site/wiki/tech/tech-shapka/
Аноним 13/07/25 Вск 22:35:15 1275731 2
image.png 79Кб, 1474x478
1474x478
14 часов достаточно агрессивной тренировки на продижах с идеально выдроченным микродатасетом, и ошибка все еще снижается.
Вопрос: какая комбуха из лосс функции и оптимайзера по вашему мнению имеет наиболее быстрое, эффективное и мощное схождение?
Аноним 13/07/25 Вск 22:45:23 1275745 3
1690712757307.png 77Кб, 1000x600
1000x600
1656195902382.png 72Кб, 1000x600
1000x600
1640148602337.png 328Кб, 2023x1168
2023x1168
>>1275731
Loss это не метрика. Он куда угодно идти может. Пикрил на 1 пике датасет на 3к пикч с парой десятков концептов, лосс как будто бы даже вверх идёт, потому что некуда сходиться, все пики разные, вот и лосс как рандомный шум. На втором пике датасет из 10 пикч на стиль, с абсолютно такими же параметрами. Оба оттренились как положено.
> лосс функции
Пик3 - как выглядит loss настоящих мужчин.
Аноним 13/07/25 Вск 23:40:25 1275855 4
>>1275745
>Loss это не метрика. Он куда угодно идти может.
Позвольте, снижение ошибки предсказания это главная метрика стабильного вывода.
>Пикрил на 1 пике датасет на 3к пикч с парой десятков концептов, лосс как будто бы даже вверх идёт, потому что некуда сходиться, все пики разные, вот и лосс как рандомный шум.
Это говорит о том, что модель не может сообразить как правильно предсказывать, поэтому наоборот старается вычленить более общее сначала и лосс растет. В далеком будущем она обобщит лучше и лосс будет снижаться. Плюс надо иметь в виду что вероятно это лора, а она парметрическую емкость низкую имеет.
Аноним 14/07/25 Пнд 01:28:54 1275958 5
>>1275855
На втором пике у меня лосс вниз пошёл потому что было 500 эпох, а в первом случае 3. На качество финального результата это никак не влияет, это ты просто видишь как сетка запоминает конкретные пикчи. Попробуй потренить большой датасет в одну эпоху с тем же стилем как и у модели, тоже не увидишь снижения лосса.
Аноним 14/07/25 Пнд 18:07:09 1276638 6
Для тренировки на noobai нужно ставить debiased_estimation_loss если с edm2 тренируешь? edm2 же автоматически выставляет приоритет таймстепов, а как я понял debiased_estimation_loss тоже выставляет приоритет, только статически и увеличивает важность последних шагов
Аноним 14/07/25 Пнд 19:27:02 1276769 7
это нормально, что Forge больше чем в 2 раза быстрее, чем automatic1111? там в районе 250% ускорение - было примерно 2 it/s, стало примерно 5

я что-то не верю в такие оптимизации и мне кажется, что где-то что-то отвалилось или скипается посередине генерации.
модель и лоры запускаю такие же, семплеры и их конфиги тоже такие же, настройки в Settings тоже вроде похожи, а картинки генерятся быстрее, что за фигня? или там реально прям так сильно оптимизировано (или автоматик1111 - тормознутая хуйня?)
Аноним 15/07/25 Втр 00:41:55 1277383 8
>>1276769
>(или автоматик1111 - тормознутая хуйня?)
Да, если бы ты сидел на нём с начала, ты был бы в курсе кто его и руками из какого места торчащими делал.
Аноним 15/07/25 Втр 02:22:26 1277456 9
>>1276638
Что то одно юзай
>>1276769
> или автоматик1111 - тормознутая хуйня?
Да, на заре эпохи xl было буквально в два раза медленнее, чем сейчас можно выжать
Аноним 15/07/25 Втр 11:02:08 1277670 10
>>1276638
а в каком тренере едм2 вкостылен нормально?
Аноним 15/07/25 Втр 11:08:48 1277678 11
>>1276769
скорее всего такая большая разница из-за версий сопутствующего софта. автоматик1111 я запускал с питоном 3.11 и какими-то старыми трансформерами и торчем, а форж с питоном 3.13 и свежими трансформерами и торчем.
так шо не всегда обновления делают только хуже, иногда и улучшают.
Аноним 16/07/25 Срд 15:21:18 1279002 12
Клайбиус накодил наканецта свой магнум опус оказывается

https://github.com/Clybius/Personalized-Optimizers/blob/main/TALON.py

Что ето: Temporal Adaptation via Level and Orientation Normalization, адаптивный оптимизатор, направлен на стабильность, адаптацию к направлению и масштабу градиента, и устойчивость к шуму (судя по мои тестам полностью насрать в хорошем смысле на неоднородность даты и количество концептов). Наследует идеи из Compass, AdaNorm, Adam, Adan, DoRA и адаптивных спектральных нормализаторов, но соединяет их в единую систему, при этом не требуя тонкой настройки гиперпараметров (там буквально нечего менять, вставил и поехал).

Общие майлстоуны:
1. Отдельно отслеживает знак и величину градиента через два EMA, рассчитан на работу с высоким lr.
2. Применяет атан2-нормализацию вместо обычного деления (то есть никаких клипперов использовать дополнительно не нужно, если ты используешь, но атан2 замедляет обучение вместо деления, имейте в виду).
3. Может использовать спектральное клиппирование (вкл по дефолту), инвариантное преобразование (тестовая опция, выкл) и ортогональные градиенты (опция, выкл).

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

Из личных минусов разве что медлительность с Huber с адаптивным snr (что очевидно, т.к. талон сам супер осторожный, а тут еще слабые сигналы от snr фильтра хубера, кароче мультипликативный эффект), там прямо чуть ли не 1e-1 скорость можно выставлять, шестичасовой тест на 1e-3 с двумя десятками эпох дал прекрасный тонкий результат без говна в выдаче, но точно скорость можно выше выставить, возможно требует дельту подкорректировать. С l2 работает бодрее и lr наоборот пониже. l1 не тестировал.

Debiased est loss переваривает отлично (многие оптимайзеры не переваривают задранные таймстепы), так что в целом любое вмешательство в них допускается, кому не лень может едм подрочить.
Аноним 16/07/25 Срд 21:23:41 1279630 13
>>1279002
> градиент-клиппинг погоняет градиент-клиппингом
Бесполезное говно, как и десяток подобных до него, ещё и медленное. Смысл чистить всратый mse/huber-лосс душением градиентов, если уже давно придумали делать wavelet-декомпозицию лосса, сужай сколько хочешь влияние мусора.
Аноним 16/07/25 Срд 23:47:37 1279759 14
>>1279002
Цифры бы увидеть, метрики или хоть какой-то живой результат, а то хуй поймешь шиза это или нет.
Вот мюон например уже показали что на 30% лучше работает, но только если с нуля обучать, но если не с нуля то хотя бы память экономит. Но может вызывать дополнительную нестабильность на долгой тренировке.
А на лорах это вообще другой мир где по нюансам оптимизации 0 работ.
Аноним 16/07/25 Срд 23:51:54 1279762 15
image.png 166Кб, 1463x1114
1463x1114
>>1279630
>делать wavelet-декомпозицию
Ты про эту хуйню с пика из дифужн4к чтоли? Не работает с bf16, только с флоат32 -> на хуй идет.

>Бесполезное говно
Мне понравилось, рукопожатие крепкое, не выебонит на сверхмалых или сверхвсратых датасетах и всегда знаешь что не пизданется и не начнет ходить по кругу.

>как и десяток подобных до него
Перечисляй.

>ещё и медленное
Медленное это FMARSCropV2, а тут чуть медленнее продижей.
Аноним 17/07/25 Чтв 08:52:26 1279861 16
>>1279762
> Не работает с bf16
С чего бы ей не работать? Всё работает.
Аноним 17/07/25 Чтв 20:47:31 1280531 17
Аноним 17/07/25 Чтв 21:12:28 1280584 18
>>1280531
Пруфы чего? Я сейчас только так и треню, обычного лосса нет у меня, выше скрин кидал с кодом расчёта лосса с автоматическими весами от timestep.
Аноним 17/07/25 Чтв 22:58:19 1280677 19
>>1280584
ну дай код реализации и как впендюрить в скрипты, че из тебя щипцами вытягивать?
Аноним 18/07/25 Птн 06:46:56 1280881 20
image.png 146Кб, 2349x895
2349x895
image.png 32Кб, 1396x228
1396x228
image.png 11Кб, 1303x60
1303x60
>>1280677

кароче вроде впердолил эту поебистику

нигде нихуя не написано как куда сувать, как будтов се погромисты дохуя

1. в трейн нетворке

строка 465 loss = train_util.conditional_loss(noise_pred.float(), target.float(), args.loss_type, "none", huber_c, timesteps)
строка 470 loss = loss

(вероятно будут ошибки если с классическими лоссами включать обратно, не проверял)

2. в трейн утиле

а) пик1, ввести новый тип лосса
б) после импортов запихать пик2
в) добавить в импорты
import torch.nn.functional as F
from pytorch_wavelets import DWTForward

вроде работает гавно, уже сдохло нахуй
Аноним 18/07/25 Птн 06:55:17 1280885 21
>>1280881
>уже сдохло нахуй
ха, прикол, не сдохло с такими конскими значениями оказывается, прям четенько результат уже на первой эпохе
Аноним 18/07/25 Птн 06:59:52 1280886 22
image.png 94Кб, 1363x706
1363x706
>>1280881
Там кстати погромист который дрочится с вейвлетом полевельно веса сделал, можно типа отключать каждый лвл отдельно и влиять только на чтото конкретное, в коде отсюда >>1275745 не реализовано

кароче можно пул реквест для кои открывать, пусть добавляет, ток проверю как с другими лоссами работает теперь
Аноним 18/07/25 Птн 21:38:47 1281884 23
>>1280881
ну это прям шикардос результы у меня с этим, я еще таких крутых тренингов не делал ни с л2, ни с хубером, почему это еще не зарелизено везде по дефолту-то, дифужн 4к вышел в марте такто
Аноним 18/07/25 Птн 21:57:13 1281928 24
>>1281884
А в пулах лежит оказывается внедрение вейвлетов https://github.com/kohya-ss/sd-scripts/pull/2037 ток там какая-то суперпедольная реализация с миллиардом выведенных отдельно настраиваемых параметров.
Аноним 18/07/25 Птн 22:10:37 1281964 25
>>1281884
Потому что веса для уровней не очень универсальные, надо под задачу подбирать. А тренировка без весов заметно хуже чем правильные веса. А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать.
Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber.
>>1281928
Все волны кроме haar говно, я уже всё это говно перетестил давно. У него ещё в списке недискретные, они не работают с дискретным DWT. Тот кто делал pr явно отбалды все возможное параметры впердолил не тестируя.
Аноним 18/07/25 Птн 23:38:42 1282159 26
>>1281964
>Потому что веса для уровней не очень универсальные, надо под задачу подбирать. А тренировка без весов заметно хуже чем правильные веса. А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать.
>Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber.
Эта часть поста ответ на >>1280886 ?

>А тренировка без весов заметно хуже чем правильные веса.
А почему ты взял именно 6 уровней?

>А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать.
А что если их адаптивными сделать от timesteps или num_levels?

>Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber.
Есть код?

>Все волны кроме haar говно
В чем их проблема?
Аноним 18/07/25 Птн 23:44:44 1282179 27
>>1282159
>А что если их
Его, в смысле пик
Аноним 18/07/25 Птн 23:54:50 1282206 28
>>1281964
Кстати твоя реализация отлично работает с дебиаседом. Несколько более когерентные результаты получаются и чуть быстрее тренирует.
Аноним 19/07/25 Суб 04:21:35 1282334 29
Вкратце можно как работает эта частотка с латентами? Латент в сд же говно, не инвариантен к масштабу/поворотам/сдвигам, и канал для формы сильно отличается от цветности и яркости по структуре.
Аноним 19/07/25 Суб 12:23:45 1282509 30
>>1282334
>как работает
прицельно настроенные веса уровней
Аноним 20/07/25 Вск 00:55:25 1283160 31
>>1282159
> Есть код?
Брал отсюда либу - https://github.com/tunakasif/torch-frft
Просто пропускаешь латенты через трансформацию. Там на выходе будет тензор с комплексными числами - амплитуда и фаза. Фазу можно просто выкинуть скастовав к float, без неё немного другой результат. Обычный лосс с комплексными числами не работает, mse будет вот так: torch.mean((pred - target).real ⚹⚹ 2 + (pred - target).imag ⚹⚹ 2)
Если упороться, то можно ещё маску накинуть, центр спектра с шифтом по центру.
> В чем их проблема?
Они усредняют пиксели латента. Всякие номерные типа db4 берут большими блоками пиксели, 4 тут - это в 4 раза больше блок. Ещё и смазывают если волна плавная. У haar просто резкие 2х2 блоки, для мелких деталей лучше всего должно быть.
Аноним 20/07/25 Вск 03:54:03 1283309 32
>>1282509
Латент это не картинка. Особенно в канале "формы".
Аноним 26/07/25 Суб 11:21:56 1288832 33
image.png 51Кб, 1104x446
1104x446
Нужен ли warmup при продолжении тренировки?
После использования каких счедулеров лучше не продолжать тренировку?
Аноним 26/07/25 Суб 18:57:37 1289186 34
>>1288832
вармап в принципе излишный страховочный элемент, можно им вообще не пользоваться
Аноним 26/07/25 Суб 20:55:09 1289346 35
>>1289186
Аноны в предыдущих тредах говорили что на начальных этапах шума слишком много чтобы извлечь полезную информацию и это сбивает модель. Ну и после увеличения вармап, у меня вроде как семплы стали более вариативные, но это не точно.
Аноним 26/07/25 Суб 21:38:45 1289403 36
>>1288832
Позволяет оптимайзеру с накоплением (считай все) выйти в режим и не взорваться в начале при прохождении выбивающихся данных. При продолжении достаточно будет короткого, но его наличие крайне желательно.
Аноним 26/07/25 Суб 23:35:30 1289491 37
>>1289346
>Аноны в предыдущих тредах говорили что на начальных этапах шума слишком много чтобы извлечь полезную информацию и это сбивает модель.
Ну я контраргументирую следующим:
1. Адаптивным лосс функциям насрать на взрывы градиентов при инициализации. Huber + SNR неубиваем практически. Вейвлеты рассмотренные выше по треду тоже стабильные на этот случай. L1 просто похуй на взрывы. Единственное что может обосраться от них это L2, не пользуйся л2 да и все.
2. На каком лр гоняешь? Если это не выше 1e-4 то выгода от вармапа сомнительна, т.к. все что ниже 1e-4 считается низкой скоростью и сила обновлений недостаточная чтобы поломать все.
3. Если ты обучаешь на датасете, который доменом уже имеется в модели - вармап тоже не нужен. Условно у тебя модель с бабами, ты берешь фотки бабы - резкой смены домена данных не будет.
4. Ты тренируешь лору а не фуллфт, у тебя нет огромного батча и биг даты чтобы переживать о взрыве знаний при инициализации.
5. Если ты используешь шедулерфри оптимы, то тем более тебе не нужен вармап, т.к. они по сути адаптивны и сами себе сделают вармап где нужно.
6. Если ты используешь CosineAnnealingWarmRestarts или какойнибудь вансайкл тоже вармап нинужон.
Аноним 27/07/25 Вск 01:55:08 1289563 38
>>1288832
>Нужен ли warmup при продолжении тренировки?
Если не сохранил состояния оптимизатора, то нужен.
Прогрев нужен для того чтобы адаптивные оптимизаторы и моментумы накопили статистику. Иначе у тебя первая картинка может получить вес в 10 раз больше чем другие, как пример проблемы.
Этот бред >>1289491 не слушай, не имеет отношения к проблеме.
Разве что 6 имеет смысл, может быть 5.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов