ИТТ делимся советами, лайфхаками, наблюдениями, результатами обучения, обсуждаем внутреннее устройство диффузионных моделей, собираем датасеты, решаем проблемы и экспериментируемТред общенаправленныей, тренировка дедов, лупоглазых и фуррей приветствуются
Существующую модель можно обучить симулировать определенный стиль или рисовать конкретного персонажа.
✱ 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
✱ Текстуальная инверсия (Textual inversion), или же просто Embedding, может подойти, если сеть уже умеет рисовать что-то похожее, этот способ тренирует лишь текстовый энкодер модели, не затрагивая UNet: https://rentry.org/textard (англ.)
➤ Тренировка YOLO-моделей для ADetailer: YOLO-модели (You Only Look Once) могут быть обучены для поиска определённых объектов на изображении. В паре с ADetailer они могут быть использованы для автоматического инпеинта по найденной области.
14 часов достаточно агрессивной тренировки на продижах с идеально выдроченным микродатасетом, и ошибка все еще снижается. Вопрос: какая комбуха из лосс функции и оптимайзера по вашему мнению имеет наиболее быстрое, эффективное и мощное схождение?
>>1275731 Loss это не метрика. Он куда угодно идти может. Пикрил на 1 пике датасет на 3к пикч с парой десятков концептов, лосс как будто бы даже вверх идёт, потому что некуда сходиться, все пики разные, вот и лосс как рандомный шум. На втором пике датасет из 10 пикч на стиль, с абсолютно такими же параметрами. Оба оттренились как положено. > лосс функции Пик3 - как выглядит loss настоящих мужчин.
>>1275745 >Loss это не метрика. Он куда угодно идти может. Позвольте, снижение ошибки предсказания это главная метрика стабильного вывода. >Пикрил на 1 пике датасет на 3к пикч с парой десятков концептов, лосс как будто бы даже вверх идёт, потому что некуда сходиться, все пики разные, вот и лосс как рандомный шум. Это говорит о том, что модель не может сообразить как правильно предсказывать, поэтому наоборот старается вычленить более общее сначала и лосс растет. В далеком будущем она обобщит лучше и лосс будет снижаться. Плюс надо иметь в виду что вероятно это лора, а она парметрическую емкость низкую имеет.
>>1275855 На втором пике у меня лосс вниз пошёл потому что было 500 эпох, а в первом случае 3. На качество финального результата это никак не влияет, это ты просто видишь как сетка запоминает конкретные пикчи. Попробуй потренить большой датасет в одну эпоху с тем же стилем как и у модели, тоже не увидишь снижения лосса.
Для тренировки на noobai нужно ставить debiased_estimation_loss если с edm2 тренируешь? edm2 же автоматически выставляет приоритет таймстепов, а как я понял debiased_estimation_loss тоже выставляет приоритет, только статически и увеличивает важность последних шагов
это нормально, что Forge больше чем в 2 раза быстрее, чем automatic1111? там в районе 250% ускорение - было примерно 2 it/s, стало примерно 5
я что-то не верю в такие оптимизации и мне кажется, что где-то что-то отвалилось или скипается посередине генерации. модель и лоры запускаю такие же, семплеры и их конфиги тоже такие же, настройки в Settings тоже вроде похожи, а картинки генерятся быстрее, что за фигня? или там реально прям так сильно оптимизировано (или автоматик1111 - тормознутая хуйня?)
>>1276769 >(или автоматик1111 - тормознутая хуйня?) Да, если бы ты сидел на нём с начала, ты был бы в курсе кто его и руками из какого места торчащими делал.
>>1276638 Что то одно юзай >>1276769 > или автоматик1111 - тормознутая хуйня? Да, на заре эпохи xl было буквально в два раза медленнее, чем сейчас можно выжать
>>1276769 скорее всего такая большая разница из-за версий сопутствующего софта. автоматик1111 я запускал с питоном 3.11 и какими-то старыми трансформерами и торчем, а форж с питоном 3.13 и свежими трансформерами и торчем. так шо не всегда обновления делают только хуже, иногда и улучшают.
Что ето: 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 переваривает отлично (многие оптимайзеры не переваривают задранные таймстепы), так что в целом любое вмешательство в них допускается, кому не лень может едм подрочить.
>>1279002 > градиент-клиппинг погоняет градиент-клиппингом Бесполезное говно, как и десяток подобных до него, ещё и медленное. Смысл чистить всратый mse/huber-лосс душением градиентов, если уже давно придумали делать wavelet-декомпозицию лосса, сужай сколько хочешь влияние мусора.
>>1279002 Цифры бы увидеть, метрики или хоть какой-то живой результат, а то хуй поймешь шиза это или нет. Вот мюон например уже показали что на 30% лучше работает, но только если с нуля обучать, но если не с нуля то хотя бы память экономит. Но может вызывать дополнительную нестабильность на долгой тренировке. А на лорах это вообще другой мир где по нюансам оптимизации 0 работ.
>>1279630 >делать wavelet-декомпозицию Ты про эту хуйню с пика из дифужн4к чтоли? Не работает с bf16, только с флоат32 -> на хуй идет.
>Бесполезное говно Мне понравилось, рукопожатие крепкое, не выебонит на сверхмалых или сверхвсратых датасетах и всегда знаешь что не пизданется и не начнет ходить по кругу.
>как и десяток подобных до него Перечисляй.
>ещё и медленное Медленное это FMARSCropV2, а тут чуть медленнее продижей.
>>1280531 Пруфы чего? Я сейчас только так и треню, обычного лосса нет у меня, выше скрин кидал с кодом расчёта лосса с автоматическими весами от timestep.
нигде нихуя не написано как куда сувать, как будтов се погромисты дохуя
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
>>1280881 Там кстати погромист который дрочится с вейвлетом полевельно веса сделал, можно типа отключать каждый лвл отдельно и влиять только на чтото конкретное, в коде отсюда >>1275745 не реализовано
кароче можно пул реквест для кои открывать, пусть добавляет, ток проверю как с другими лоссами работает теперь
>>1280881 ну это прям шикардос результы у меня с этим, я еще таких крутых тренингов не делал ни с л2, ни с хубером, почему это еще не зарелизено везде по дефолту-то, дифужн 4к вышел в марте такто
>>1281884 Потому что веса для уровней не очень универсальные, надо под задачу подбирать. А тренировка без весов заметно хуже чем правильные веса. А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать. Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber. >>1281928 Все волны кроме haar говно, я уже всё это говно перетестил давно. У него ещё в списке недискретные, они не работают с дискретным DWT. Тот кто делал pr явно отбалды все возможное параметры впердолил не тестируя.
>>1281964 >Потому что веса для уровней не очень универсальные, надо под задачу подбирать. А тренировка без весов заметно хуже чем правильные веса. А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать. >Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber. Эта часть поста ответ на >>1280886 ?
>А тренировка без весов заметно хуже чем правильные веса. А почему ты взял именно 6 уровней?
>А с автовесами ещё больше подстроек надо, я довольно долго пердолился чтоб ширину пика подобрать. А что если их адаптивными сделать от timesteps или num_levels?
>Можно для XL проще делать - трансформации Фурье. Результат тоже лучше mse/huber. Есть код?
Вкратце можно как работает эта частотка с латентами? Латент в сд же говно, не инвариантен к масштабу/поворотам/сдвигам, и канал для формы сильно отличается от цветности и яркости по структуре.
>>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 блоки, для мелких деталей лучше всего должно быть.
>>1289186 Аноны в предыдущих тредах говорили что на начальных этапах шума слишком много чтобы извлечь полезную информацию и это сбивает модель. Ну и после увеличения вармап, у меня вроде как семплы стали более вариативные, но это не точно.
>>1288832 Позволяет оптимайзеру с накоплением (считай все) выйти в режим и не взорваться в начале при прохождении выбивающихся данных. При продолжении достаточно будет короткого, но его наличие крайне желательно.
>>1289346 >Аноны в предыдущих тредах говорили что на начальных этапах шума слишком много чтобы извлечь полезную информацию и это сбивает модель. Ну я контраргументирую следующим: 1. Адаптивным лосс функциям насрать на взрывы градиентов при инициализации. Huber + SNR неубиваем практически. Вейвлеты рассмотренные выше по треду тоже стабильные на этот случай. L1 просто похуй на взрывы. Единственное что может обосраться от них это L2, не пользуйся л2 да и все. 2. На каком лр гоняешь? Если это не выше 1e-4 то выгода от вармапа сомнительна, т.к. все что ниже 1e-4 считается низкой скоростью и сила обновлений недостаточная чтобы поломать все. 3. Если ты обучаешь на датасете, который доменом уже имеется в модели - вармап тоже не нужен. Условно у тебя модель с бабами, ты берешь фотки бабы - резкой смены домена данных не будет. 4. Ты тренируешь лору а не фуллфт, у тебя нет огромного батча и биг даты чтобы переживать о взрыве знаний при инициализации. 5. Если ты используешь шедулерфри оптимы, то тем более тебе не нужен вармап, т.к. они по сути адаптивны и сами себе сделают вармап где нужно. 6. Если ты используешь CosineAnnealingWarmRestarts или какойнибудь вансайкл тоже вармап нинужон.
>>1288832 >Нужен ли warmup при продолжении тренировки? Если не сохранил состояния оптимизатора, то нужен. Прогрев нужен для того чтобы адаптивные оптимизаторы и моментумы накопили статистику. Иначе у тебя первая картинка может получить вес в 10 раз больше чем другие, как пример проблемы. Этот бред >>1289491 не слушай, не имеет отношения к проблеме. Разве что 6 имеет смысл, может быть 5.
>>1282206 Я по итогу дропнул wavelet лосс, говно какое-то. Надо дрочить веса, но как бы их не дрочил всё не то. Всегда что-то лучше становится, что-то хуже, а чтоб прям заебись было невозможно подобрать. Перешёл на Фурье, с ним стабильность просто ахуевшая и ничего не надо пердолить, что дало возможность сделать то что раньше ломало картинку - сделал фиксированный шум для каждого пика, а не как в ваниле рандом. С mse от такого пережаривало и почти неюзабельно было, а с FFT тренится заебись и при этом вариативность генераций огромная и стабильно всё. Ещё и на оптимизатор focus перешёл.
>>1290650 >>1290650 > Перешёл на Фурье, с ним стабильность просто ахуевшая и ничего не надо пердолить, что дало возможность сделать то что раньше ломало картинку - сделал фиксированный шум для каждого пика, а не как в ваниле рандом. Дай код реализации то
>>1291301 Я при кешировании латентов шум генерю и потом только его использую, без генерации нового, у каждого латента свой фиксированный шум. >>1291323 Выше писал же.
>>1291324 >Я при кешировании латентов шум генерю и потом только его использую, без генерации нового, у каждого латента свой фиксированный шум. а ну то есть если у меня не кешируется ниче, то мне нинужно
Как корректно в toml указать таргеты на conv слои? Если в таргет модулях указывать conv2d, то оно начинает вообще все тренировать практически, независимо от регекса в таргет юнет В фуловой лоре естественно conv_in и conv_out для таргет юнет нет, и при enable_conv = true и с/без конвин/конваут никакие конволюшены не тренируются. Если брать базовые блоки в таргет модулях ResnetBlock2DDownsample2D Upsample2D то оно сразу перетренировывает моментально, супер анстейбл кароч
>>1291402 В ваниле каждую эпоху у тебя разные сиды для одинаковых пиков, но логичнее чтобы одинаковые пики были с одним и тем же шумом. Но проблема в том что оно с mse оверфитится адово, до того как успеваешь что-то натренить лора уже запорота, а FFT фиксит это. Оно станет ещё быстрее трениться и повысится вариативность генераций. Тут где-то был любитель обобщения, ему это в первую очередь надо делать. При претрейне так не делают по очевидной причине - мало эпох и они большие. >>1291422 Там авторы перебором нашли наиболее важные для тренировки слои. Тренятся только attentions.0 и attentions.1 в up-блоках. Один из них концепт, другой стиль. Вообще не рекомендую, у тебя будет всегда недотрен. Есть смысл только если тебе надо прям жестко отделить стиль и сам стиль довольно простой. Из плюсов оверфита нет, можно и надо тренить до усрачки, смысл б-лоры - это хуяк-хуяк как попало и оно даже норм натренилось. Если ты врубил другие слои, то это уже не б-лора.
>>1291617 >Там авторы перебором нашли наиболее важные для тренировки слои. Тренятся только attentions.0 и attentions.1 в up-блоках. Один из них концепт, другой стиль. Да я в курсе что там атеншены, мне нужно просто конвы указать правильно чтоб оно локальные данные изучило для точности т.к. с одними атеншенами прямо видно недостаточность ортоганальных изменений, я уже проверил такой вариант когда конвы врубаются - он рабочий, но конкретно указать конволюшены связанные с аутпут блоками 0.1 и 1.1 я не могу нормально. >Вообще не рекомендую, у тебя будет всегда недотрен. Я бы не скозал, зависит от настроек, плюс я офт надрачиваю, оно сохраняет данные основные слоев и юзаю в основном с плюснутым dmd, результат конфетный. >Если ты врубил другие слои, то это уже не б-лора. Ну называй как хочешь, разряженная тренировка, мне нужны конвы хоть тресни.
>но логичнее чтобы одинаковые пики были с одним и тем же шумом обоснуй на чем основана логика, мне всегда казалось что рандом нойз это метод регуляризации типа дропаутов, ты типа не подвязываешь сетку жестко к данным, таким образом давая ей свободу выражения
пока писал спросил у гпт, оно также сказало, что жестко обучать на фикс нойзе нахуй надо
>>1291797 У тебя генерации из шума. Если тренишь один пик на разных сидах, то модель и учится генерить один и тот же пик на разных сидах. Если так долго тренить, то модель начинает тупо с любых сидов генерить пики из датасета. И делает она не потому что оверфит или ещё что, а именно из-за того что ты научил её из любого шума их генерить. Собственно я это и на практике вижу, фиксированный сид даёт больше разнообразия генераций. > гпт Нашёл у кого спрашивать что-то, лол.
>>1291947 > Если тренишь один пик на разных сидах, то модель и учится генерить один и тот же пик на разных сидах. но модель не учит картинки, она учит признаки на основе текстового описания >фиксированный сид даёт больше разнообразия генераций. как оцениваешь разнообразие? >Нашёл у кого спрашивать что-то, лол. че за трансформерный шовинизм? он мне код правит и он работает, да и нет смысла не доверять нейросетке в вопросах нейросеток
>>1291947 Кмк, смысл есть и там и там. Сделать шанс или заготовленного шума или случайного и получать профиты без подводных. >>1292123 > нет смысла не доверять нейросетке в вопросах нейросеток Они могут просто не понять твой вопрос и притащить случайную ассициацию, или просто взять предложенный тобою же вариант если в вопросе уже заложен ответ. Попросить ллм проанализировать вопрос с разных сторон и дать какую-то инфу о практике и как это может сыграть - хорошая идея, но желательно посвайпать оценивая выдачу. Требовать сделать вывод и дать ответ - плохая.
>>1292292 >Они могут просто не понять твой вопрос и притащить случайную ассициацию, или просто взять предложенный тобою же вариант если в вопросе уже заложен ответ. Попросить ллм проанализировать вопрос с разных сторон и дать какую-то инфу о практике и как это может сыграть - хорошая идея, но желательно посвайпать оценивая выдачу. Требовать сделать вывод и дать ответ - плохая.
>>1292123 > че за трансформерный шовинизм? Скорее гопотный. Жпт очень тупая, если это не о-модели. > нет смысла не доверять нейросетке в вопросах нейросеток Нейросетки обычно гонят банальщину, выдают самый попсовый вариант ответа.
Спустя полгода дрочки я понял структуру сдхл наканецта, что основные концепты датасета (форма, цвет, объекты, особенные особенности) пиздятся напрямую в ffnet и proj слои, причем в основном в конечные инпут блоки и мидл блок. При этом ффнет просто запоминает все подчистую (и по факту обладает наибольшей выразительностью), а не обобщает, являясь очень мощным фильтром, который способен любой вывод атеншенов перекроить, т.к. независим. А прожекшен слои это входы выходы для атеншенов, которые имеют более высокий приоритет над данными самих атеншенов, как бы рамки для атеншена, а атеншен это само наполнение рамок. Гдето в атеншенах еще нормы сидят, но я их не обучал для теста практически, не могу сказать фактическое влияние.
То есть логика сдхл такая: атеншен строит суть картиночки, прожекшен конструирует финальную структуру, которая пропускается через MLP ffnet, который независимо обмазывает уникальными независимыми параметрами, полученными из датасета внимание ПОЛНОСТЬЮ ВНЕ КОНТЕКСТА. То есть вся проблема переобучения строится на том что в ффнет подается слишком сильная дата, которая его ломает - отключи вест ффнет и модель/лору невозможно убить никаким конским лр. Алсо все лоры убыстрялки и модели дистилляты из которых их экстрагировали содержат переобученный, но нормализованный для конкретного семплера ффнет за счет которого и идёт выигрыш в скорости.
При этом все атеншены очень стабильные и осторожные, напичканные селфчекингом, поэтому невероятно трудно переобучить/дообучить конкретно их (как в блоре, где одни атеншены).
То есть фактически для корректного обучения требуется обучать самый большой блок инпута т.к. он финализирующий и содержит основную дату для картиночки в середине процесса денойза, какуюто часть мидл блока или полностью потому что это параметрический финализатор и сборщик скрытых признаков в одно целое и обучать первые два блока аутпута (поздний этап денойза), которые собирают картинку из общей формы и среднечастотных деталей. При этом имеет смысл обучать ффнет и прожекшены на более низкой скорости в виду их огромной силы. Все остальное буквально излишество.
Надеюсь кому-то поможет данная инфа, основанная на рисерче из овер 300 моделек.
>>1294449 Какая-то каша у тебя в башке. Фид-форварды нужны для нелинейности трансформера, т.к. трансформер только трансформирует данные, в трансформере даже активаций нет. > в ффнет подается слишком сильная дата, которая его ломает Во всех тренерах, в том числе у кохи, по умолчанию фф не тренится. Только если ты специально выбираешь тренить вообще все линейные, по умолчанию тренятся линейные в трансформерах (to_q, to_v, to_k, proj). А поломка почти всегда происходит в первых слоях, именно первые слои очень чувствительны к тренировке и легко превращают всё в кашу. Естественно у тебя средние слои менее чувствительны к кривой тренировке, ведь там уже нет пиксельных данных латента. > для корректного обучения требуется обучать самый большой блок инпута Для корректного обучения надо просто правильно обучать, ничего там не ломается при обучении фф/конволюшенов, если сделал всё правильно. Все попытки задушить тренировку отрубанием слоёв/обрезкой градиентов/душением лосса по snr и прочим весам - это лечение симптомов и проблема где-то в другом месте.
>>1294476 > Какая-то каша у тебя в башке. Я бы поотвечал на каждый пункт, но ты невоспитанный и категоричный, чувства такта нет, да и пост написан в ультимативной форме (я понимаю что тебе очень нужно чувствовать себя экспертом на анонимном форуме, но впредь держи себя в руках, мне лично твои "ря ты криворучка, просто дыши пук пук хрюк" неинтересны), я по таким правилам не буду играть. Добра, щастья, здоровья.
Двачую >>1294476 а ты >>1294488 слишком болезненно реагируешь на замечание по сути. > невоспитанный и категоричный, чувства такта нет, да и пост написан в ультимативной форме (я понимаю что тебе очень нужно чувствовать себя экспертом на анонимном форуме Вот этот пост >>1294449 много постулатов, никакой конкретики и примеров.
>>1294476 >Фид-форварды нужны для нелинейности трансформера, т.к. трансформер только трансформирует данные, в трансформере даже активаций нет. Нелинейность и в софтмаксе атеншена есть. Ну и чет с "Фид-форварды нужны для нелинейности" орнул. Типа, по твоему они нужны ТОЛЬКО для нелинейности? >Во всех тренерах, в том числе у кохи, по умолчанию фф не тренится. Пиздабол. ff_net адаптеры присутствуют для всех млпшек, в дефолтной лоре. >Для корректного обучения надо просто правильно обучать, ничего там не ломается при обучении фф/конволюшенов, если сделал всё правильно. И по классике ты нам конечно не расскажешь как правильно. Просто пук в воздух.
Так что реакция вполне оправдана. >>1294449 Впрочем, какие-то осмысленные выводы из изначального поста я не могу сделать. Настройку лр по слоям обычно просто так не делают, те же проекции атеншена частично впитывают в себя инфу вместе с ff, которая выбьется только другим устойчивым сигналом и переполнением емкости. Нахуя просто понижать лр для ff? То есть хочешь сказать, что нам надо усиленно тренить атеншн? Опять же, даже если мы треним только атеншн, проекции спокойно навпитают инфу как и ff. У меня одна из самых популярных лор одноранговая, на стиль, вполне хватает. Работает нормально. Про переобучение спорно, какого-то конкретного пайплайна и сравнений нет. Кароч, очень интересно но нихуя не понятно.
>>1295419 >Настройку лр по слоям обычно просто так не делают, layer-wise LR decay делают в больших тренировках большие вумные дяди обычно, лораёбы не заморачиваются конечно такой хуйней
>те же проекции атеншена частично впитывают в себя инфу вместе с ff, которая выбьется только другим устойчивым сигналом и переполнением емкости. Нахуя просто понижать лр для ff?
Ffnet это независимый фильтр и часть MLP, если ты полностью тренишь, то впитают, если не полностью то впитает только прожекшен.
Мой тезис был в том, что так как ффнет независимая часть сети и равномерно распределен во всех блоках, которые имеют разную емкость, то в каких-то его частях неизбежно так скажем бутылочное горлышко для фф из-за малого батча, малой даты, накопления градиентов от однотипных паттернов и гиперов оптимайзера (например стандартная бета для ффнет скорее деструктивна на микробатче и малой дате, т.к. ффнет запоминает паттерны даты без обобщения, а бета накапливает моментум - то есть на деле моментум приводит к накоплению старых градиентов, которые могут сохранять переобученные шаблоны ffnet, особенно при малом батче и нестабильной дате, что замедляет адаптацию к новым градиентам и форсирует запоминает мусорных паттернов в ффнет, которому поебать что запоминать;
это подтверждается тем, что если тренировать полные самые большие блоки без декомпозиции с бетой 0.999, то результат будет хуже, чем бета 0.25 скажем - так происходит потому что у фф сила явно больше чем у атеншена, и если их тренировать сепарированно, то получается тот же результат. Вероятно ффнет сделан изначально так чтобы с большим моментумом (а равно большей параметрической емкостью) запоминать активнее, что имеет смысол когда у тебя сотни миллионов картинок и тысячные батчи, но это больше умозрительное заключение.
Таким образом получается палка где на одном конце непопадание в оптимальный лернинг рейт, но фф не страдает, а сеть при этом обучается долго и неэффективно, либо использование нормального лернинга как у больших дядек с корпусами датасетов, но тогда фф уничтожается.
Из этой ситуации можно выйти двумя путями - тренировать фф (и прожекшен) отдельно с другим лр, чем все остальное, или тренировать все сразу на нормальной скорости но с низким моментумом или вообще без моментума, целясь только в эффективные блоки.
Помимо этого надо учитывать, что ранние и поздние блоки сдхл не настолько важны для инъекции новой даты, они больше функциональные для полноценной модели, где первые инпут блоки занимаются понижением "разрешения" вычленяя признаки, а с середины аутпут блоков происходит незначительная относительно всего пайплайна инференса доводка картинки перед декодингом, соответственно внедрение узкой малой даты на протяжении всех блоков это скорее негативный эффект и призыв переобучения, т.к. ранние блоки это низкоуровневые признаки edge-level/shape (а мы работаем на основе модели, которая уже прекрасно умеет строить представления такого плана на основе массивной даты на которой ее обучали), а поздние для доработки структуры и цветовой координации (что также базовая модель и так умеет). Не вижу никакого фактического смысла перекраивать ранние и поздние блоки с помощью минимальных датасетов (менее 10к картиночек), поэтому внедрение узкой даты в эти блоки вредное действие и нужно действовать от принципа не навреди: да, блоки важны при генах, но не дают существенного прироста качества при их дообучении на малой дате из-за переобучения и затопления признаков. Проверяется элементарно - изолируй и тренируй только ранние или поздние блоки - выйдет какая-то хуита без задач (можешь не пробовать, я пробовал).
Сдхл по факту модульная бандура, сюда напрашивается аналогия про "если в машине сломался дворник, то не нужно делать рестайлинг", ни в одной комплексной системе не имеет смысла полностью переписывать все подчистую или внедрять всякое в каждый модуль чтобы внедрить новую фичу или починить неработающее.
>То есть хочешь сказать, что нам надо усиленно тренить атеншн? Нет, не хочу сказать.
>Опять же, даже если мы треним только атеншн, проекции спокойно навпитают инфу как и ff. Только проекция и впитает, если только атеншен. Но носитель именно новых данных из датасета это ффнет, а не атеншен.
> У меня одна из самых популярных лор одноранговая, на стиль, вполне хватает. Работает нормально. Тут вопрос не в том что хватает и с чем можно смириться и какой у тебя юзкейс (может ты просто форсируешь генерацию по референсу), а в самой логике тонкой эффективной донастройки модели на малой дате и малом батче при использовании консумерских карт.
Плюс не обучая все разом, а поблоково или по частям сети ты получаешь гораздо больше свободы, т.к. в ликорисе есть отдельный алгоритм full, который не декомпозит в лоуранк матрицы, что является полноценной тренировкой.
То есть направляя тренировку в нужные эффективные элементы (предположим стандартные output_blocks 0 1, output_blocks 1 1, и input_blocks 8 1) ты можешь на наиболее популярной карте типа 3060 12 гигов все эти три блока разом полноценно засунуть в 12 гигов в 1024 разрешении на 1 батче и на выходе получить максимально нативную тренировку высокого качества, там модель получается в районе 2 гигов и просчет одной итерации в 5 секунд при этом на нормальном современном оптимайзере с FFT лоссом который выше обсуждали, это ниже чем даже дефолтная лора с ее 8 секундами, т.к. нет дополнительных преобразований. А на 16 гигах уже и мидл блок вприкуску влезет и чтонибудь еще (допустим можно в шахматном порядке по всем блокам выбрать эффективные слои оставшиеся), а это считай одномоментный полноценный файнтюн практически целой модели (2 гига от трех инпут/аутпут и 800 метров от мидла), но не нужно пердеть на зануленом fp8 или ухищряться с баквардпассами на адафакторе или восьмибитном кале. Если тренировать любой тип лор с конкретными блоками, то там еще плюсом меньший размер будет, помимо увеличенной скорости просчета, но минус в том что влияние лоры на модель не полноценное и все равно надо будет туда-сюда крутить силу как обычно, но лора это в любом случае компромисс. Сплошные плюсы в общем.
Уточню, что я не выступаю против полноблоковой тренировки, если она делает то что требуется, но меня всегда дико бесила все эти танцы с бубном чтобы выдрочить гиперы, выдрочить датасет, выдрочить соотношения чтобы не бох лора не сделала рухнум. Я кароч за принцип "если позволяет - упрощай".
Случайно придумал самый шизовый вариант инициализации лоры. Вкидываю чисто чтобы не забыть и уйти спать, может кому не лень будет протестить. Кароч надо взять какую-нибудь другую модель и слить с нее экстракт. Далее примерно логика как в >>1196940 → Добавляем экстракт к исходной (той, которую хотим обучить) модели. Из наэкстракченой модели вычитаем исходную. Из исходной вычитаем наэкстракченую и это новая "исходная" модель. В лору подсасываем чистый слитый экстракт. Объединение этих двух вещей должно давать исходную модель, но только в качестве инициализации лоры у нас экстракт другой, вот такой прикол. Только надо не забыть сделать исправление из гайда, иначе все сломается. Для надо после получения экстракта закинуть его обучаться как лору на 1 шаг на минимальном лр и сохранить. Ну и наверное есть смысл за инициализацию брать не полный экстракт, а разностный, может как-нибудь еще намешать их.
Если я нигде не обосрался с математикой, может получиться интересный эффект в виде мягкого пересаживания biasов с одной модели на другую в процессе просто обучения лоры на вообще другой задаче. По моей логике это может дать толчок лоре пойти по тому же пути по какому шла другая модель. Важно, повторюсь, здесь именно обучается полноценная исходная модель которая как бы никак не модифицирована, но она разрезана на лору не по SVD как в том методе, а как бы плоскостью другой модели.
Аноны, как персонажа вырезать на прозрачность? Перепробовал все доступные через интерфейс A1111 расширения для уберания бэкграунда - говно какое-то. У персонажа либо остаются арефакты во всех местах, либо края силуэта прозрачные.
Специально делаю генерацию на белом однородном фоне, размер под 2к. Даже с этим не справляются "вырезалки" эти.
Посоветуйте как быть. Нужно обработать огромное количество изображений.
>>1303296 Что чел? Под него штук 7 плагинов только для этой задачи написано. И они что на авто работают, что на форджах. Лапша же ничего принципиально нового тут не предложит, больше чем уверен.
>>1302830 Если нужно идеально - только руками вырезать. Ни одна модель не даст 100% точности в 100% случаев, косяки будут даже с белым фоном. Косяки будут всегда. Можешь найти что-то более-менее точное, если повезет. Цивит покопать попробуй.
>>1304571 Ничего не нашел толкового чел. Потому и спрашиваю. А ещё, потому что есть СЕРВИСЫ, которые вырезают идеально, но они конечно платные, там на поток процесс не поставить. Просто существование этих сервисов как бы говорит что где-то существует хороший варианты. Я больше чем уверен что все эти "сервисы" это просто аферисты, которые с гитхаба репы понабрали и продают воздух, ни каких своих закрытых разработок у них нет. Вот потому и спрашиваю в треде. Где-то есть хорошая вырезалка, просто её надо найти.
>>1304571 > Лапша же ничего принципиально нового тут не предложит, больше чем уверен. Тем не менее в лапше я могу вырезать фон нормально. На реалистике ещё проще.
>>1304753 Аниме пики с обводкой никогда не были проблемой. Плохо получается именно реалистичных персонажей вырезать.
У тебя на третьем пике 3д генерация, выглядит неплохо. Но при ближайшем рассмотрении есть много мест с белой короной и в спорных местах, например где волосы, появляется такой кисель из прозрачности. В этом плане А1111 даже лучше делает. Но это всё равно не подходит, таким вырезаниям нужна пост обработка всё равно. Сервисы же, например китайский 佐糖 таких косяков не делают.
>>1305002 Не плохо, но я как набивший шишки сразу чую подвох. Такой результат надо на "шахматном фоне" смотреть, по моему горькому опыту многие модели просто делают края вырезаемого объекта немного прозрачными, это может выглядеть как идеальное вырезание, но по факту ты такой вырезанный объект на другой фон не поставишь, у него вся окантовка будет как у привидения. Чем ты это вырезал, дай посмотрю, напиши плз адрес репы или модели или другую инфу чтобы я нашел.
А вообще знаешь что такое проблема XY? Самое главное забыл - сказать нахуя тебе это вообще надо и какую проблему ты собрался решать генерацией огромного количества изображений которые тебе надо вырезать? Ну и вопрос качества которое тебя устроит.
Wan тут кто-нибудь тюнит? Как с говном пикрил бороться? На первом пике XL, приемлемо выглядит. А на втором Wan, обратный проход в 6 раз дольше форварда. Хуйня с copy - это переключение на вторую карту, но хули в форварде обе карты одинаково отрабатывают, а на обратном одну с одинарными блоками растягивает как шлюху? Что за забор блядский? Заебался уже, не хочу тренить по 3 часа 1000 шагов.
В репо козистра https://github.com/kozistr/pytorch_optimizer/tree/main загружено семейство Emo оптимайзеров. Фишка в том что компутит доп скаляр исходя из лооса, т.е. получает усреднённое значение лосса (ema) (затем превращает это в скаляр), по которому вычисляется коэффициент влияния. Кароче бля параметры плавно тянутся к прошлым значениям, если loss подсказывает, что надо откатиться.
Для лор еще терпимо, а если фул матрицы тренить то там EmoNavi оригинальный с селективными блоками x2 врама жрет, EmaFact (емо + адафактор) +50%. Так что имейте в виду.
>>1307042 Опять душат удава. > если loss подсказывает, что надо откатиться Это вообще неблагодарное дело ориентироваться на лосс в генерации картиночек в разрезе соседних значений. Какой-то референс лучше, какой-то хуже - лосс скачет как ебанутый и это норма. Пикрил литералли всегда на Хроме, просто рандомный шум, при этом тренится заебись. > x2 врама жрет Лучше бы делали чтоб меньше жрало без диких просеров как у 8-битных bnb. И так DiT приходится частично в q8 квантовать чтоб не сосать даже с 48 гигами врам.
Аноны, обнаружил тут ВНЕЗАПНО, что у репозитория A1111 уже как год не было обновлений. Он что ВСЁ? Заброшен? Сдох?
Дело в том, что в А1111 меня всё устраивает, всё работает, плюс привычка, не один год в нем ковыряюсь, плагины настройки всё под себя идеально подстроил и привык.
Поверхностный гуглинг показал что сейчас модно КомфиУИ использовать, на втором месте Фордж, который говорят как раз для тех кто к А1111 привык.
В сявзи с этим вопросики. 1) Расширения для А1111 не встанут на этот ваш Фордж? Пологаю что разумеется не встанут, просто хочу уточнить.
2) В Форже другой синтаксис промптов, отличный от А1111? Т.е. все эти BREAK и [(shit:1.3)::0.7] там не работают?
>>1305569 >>1306775 >>1305516 Второе, как написано, основано как раз на BiRefNet. Оригинальный BiRefNet - это пожалуй самый лучший вариант из всех что я перепробовал. Наверное лучше ничего не придумали.
Кстати этот BRIA-RMBG-2.0 делает вот такую шляпу, про которую я писал ранее. Он Может в некоторых случаях половину обьекта прозрачным сделать. Оригинальный BiRefNet в этом плане даже лучше.
>>1307474 >Он что ВСЁ? Заброшен? Сдох? Ну автоматик перестал кодить в принципе. Или работка или выгорел, это ж все на энтузиазме для портфолио сделано.
>Дело в том, что в А1111 меня всё устраивает, всё работает, плюс привычка, не один год в нем ковыряюсь, плагины настройки всё под себя идеально подстроил и привык. Ну плохая привычка на самом деле, время выходить из зоны комфорта.
>Поверхностный гуглинг показал что сейчас модно КомфиУИ использовать, на втором месте Фордж, который говорят как раз для тех кто к А1111 привык. Не модно, а уже года джва является самой мощной и обновляемой средой для любых видов нейрокалов + парк расширялок монструзный. Буквально если что-то новое выходит (ну вон ван 2.2 например), то через пару часов оно уже поддерживается. Фордж это говнина от ильясвила, который факас, контролнеты и прочее пилил, фордж тоже заброшен. Не заброшены форки форджа, типа рефорджа https://github.com/Panchovix/stable-diffusion-webui-reForge
>1) Расширения для А1111 не встанут на этот ваш Фордж? Пологаю что разумеется не встанут, просто хочу уточнить. Рандом. У форджа в принципе свои нерешаемые баги были насколько я помню, ну и они в форки перекатились. Какие-то расширения встанут, какие-то нет.
>2) В Форже другой синтаксис промптов, отличный от А1111? Т.е. все эти BREAK и [(shit:1.3)::0.7] там не работают? Фордж это форк каломатика, так что скорее всего работает это говно плацебное.
>плацебное Чому плацебное ? Можно в реальном времени менять весь промпта (shit:1.2) и прямо наблюдать как результат меняется на такую же фракцию процента. По-моему очень удобно, не может быть чтобы в современной КомфиУИ чего-то подобного не было.
>время выходить из зоны комфорта. Для меня очень важно чтобы старые промпты можно было как-то повторить, я часто возвращаюсь к тому что делал год назад, например. Если синтаксис другой то понятное дело что повторить результат будет сложно. Может есть какой-нибудь плагин для КомфиУИ который позволяет использовать синтаксис промптов из Авто1111?
>>1272560 (OP) Как делать разбор полетов после тренировки? Про то что андерфит это когда результат слабо виден, а оверфит это когда лора воспроизводит датасет и не слушается промпта, я знаю. Но есть и другие ситуации когда лора берет знания из модели вместо датасета, когда низкий лр делает оверфит и пр. Хочу про это прочитать, чтобы хоть немного сориентироваться че за хуйня у меня происходит. Как извлекать информацию из результатов? Месяцами тренирую разные стили в сд1.5, у меня шизу генерирует на при любом ЛР/количестве шагов. 2 и 3 пик разные попытки, но результат тот же.
>>1307567 >Можно в реальном времени менять весь промпта (shit:1.2) обычный вейтинг токенов в комфе есть, я про брейки которые типа разъединяют кондишены и вот это [(shit:1.3)::0.7] которе я даже не помню че делает, а еще есть типа морфинг когда на лету в таймстеп инъекция другого токена происходит. Это кароче все полумеры и иллюзия управления. Вот допустим тебе два кондишена по 75 токенов надо - берешь две ноды для разных кондишенов в комфе в нужной конфигурации их смешивания и делаешь как задумано в сдхл изначально, а не костылем который придумали из-за UI вида "все в одном окне". Но если тебе прям нужно дрочить синтаксис каломатика, то есть ноды для текста, которые поддерживают этот синтаксис. >Для меня очень важно чтобы старые промпты можно было как-то повторить, я часто возвращаюсь к тому что делал год назад, например. >Если синтаксис другой то понятное дело что повторить результат будет сложно. Так у тя еще проблема в том откуда инишл нойз берется для генерации. То есть чтобы повторить ЗАЧЕМ, это же нейрослоп, всегда можно сделать лучше то что ты делал на каломатике тебе надо соблюсти неочевидные команды в поле промта (скачать ноды которые поддерживают такое) + ноды умеющие управлять инишл нойзом чтобы брался нойз с гпу, потому что в каломатике берется с гпу, а не с цпу, а это нестандартное решение, по классике должно быть с цпу т.к. это более унифицированнее (даже в том контексте что не у всех нвидия, некоторые дрочатся на линухе с амдкалом, а так свой инишл с гпу идет). > Может есть какой-нибудь плагин для КомфиУИ который позволяет использовать синтаксис промптов из Авто1111? Конечно, есть ноды под такое. Но лучше не пытайся создавать костыли заново.
>>1307690 Еще вопрос, могут ли эти косяки быть из-за того что я в этой менюшке я выбрал fp16 но в остальных всех fp32 хотя моя видеокарта не поддерживает half-preccision (gtx1660)?
>>1307709 Бле, я думал за шум отвечает только сэмплер, что это такой типовой алгоритм, который имея идентичную модель и все прочие настройки сможет воспроизвести тот же результат по промпту. Но это как-то странно. На сивиай же например в инфе по генерации не пишут на каком она софте сделана, а повторить всегда получается, не 1 к 1, но очень близко обычно.
32bit нихуя не изменилось. Нормально ли подобное (видео рил) ухудшение в начале разогрева? Lion Cosine U-net LR 0.0001 Text encoder LR 0.00005 Warmup steps 731.0 Repetition per epoc 1 Batch 1 Epoc 50 Датасет 70 пикч Lora rank 64 Lora Alpha 1 Все остальное дефолтное.
>>1307690 > Как делать разбор полетов после тренировки? Э ну чтобы мучительно не надеяться на удачу и заниматьс разборами выходного продукта надо разобраться как работает модель (сам процесс генеративный) и гиперпараметров тренировки.
>Про то что андерфит это когда результат слабо виден, а оверфит это когда лора воспроизводит датасет и не слушается промпта, я знаю. Но есть и другие ситуации когда лора берет знания из модели вместо датасета, когда низкий лр делает оверфит и пр. Ну вот ты видишь симптоматику, а что вызывает ее ты не знаешь. Не знаю насколько тебе поможет, но если кратко рассматривать проблему то не в лр дело а в том что ты тренируешь. Предполагаю что ты тренируешь просто целую лору, которая охватывает все слои и все блоки. Так вот материнская модель состоит из трех частей - инпут блоки распиздячивающие картиночку, ботлнек мидл блок с общей инфой для приведения к единому знаменателю, и аутпут блок для сбора картиночки обратно, это происходит строго последовательно, блок за блоком и слой за слоем. В каждом блоке содержатся компоненты: 1. Конволюшн блоки, которые содержат инфу о локальных данных. Они очень чувствительные к шуму и начальным данным и собственно изза них рекомендуется делать вармап в качестве страховки. При этом конволюшны не однородны в своих возможностях: конвы в мидл блоки устойчивые к любым данным, конвы в поздних аутпут слоях тоже, т.к. содержат стабильные конечные сборочные детали. Но конволюшны в позднем инпут блоке (кондесация в низкое разрешение), в первых четырех группах слоев инпута (низкоуровневые контуры) и первые два блока аутпута (крупные пространственные признаки, глобал текстуры и цвет) очень нежные и если в них подается кривой сигнал говна, то пизда твоей модельке прямо с первого шага, конволюшн будет накапливать неверные признаки. 2. Линейные слои - практически полностю то из чего состоит модель, представляет из себя атеншн слои и частично MLP. Все линейные слои стабильные и практически не переобучаемые. 3. Feed forward слои, идут после атеншенов и являются носителями новых данных, которые не обобщены. Представь, что это фильтр для собираемой картинки, который обмазывает выходной сигнал во что-то независимо от контекста. Если конволюшны носители локальных данных, то фф носитель уникальных признаков.
Помимо этого есть слои текстового енкодера, которые занимается связкой текстового описания и признаков из слоев. Текстэенкодер в принципе независим, и достаточно простой в тюнинге и требует небольшой лр относительно основных весов сети, но не всегда. Тренировка текстэенкодера буквально бустит понимание твоего датасета и гибкость модели. В текстовом енкодере опять же последовательно обрабатывающиеся слои от общих признаков до локальных узкий концептов (условно от woman до small green dog in forest smiling like a whore). Трен текст енкодера напрямую управляет управляемостью модели конечной, так что тут ситуация как с конволюшнами - если ты лезешь обучать поздние блоки с жестким нефильтруемым потоком данных, то пизда твоему текстэенкодеру.
Поэтому что? Поэтому тебе нужно изучить регекспы для toml конфигов тренировки чтобы делать изолированную тренировку эффективных слоев, если ты хочешь стабильный результат, а не сейфовую выдрочку полномодульной лоры на низком лр, которая может десятки тыщ шагов тренироваться до приемлемого результата. В любом другом случае когда ты просто выбрал "а тренируй мне вот этот алгоритм на этом датасете спасибо пока" в лучшем случае сделает тебе генератор картиночек по типу тех что в датасете, никакой глубокой донастройки сети получить скорее всего не выйдет. Плюс учитывай что у тебя консумерский тренинг на нищем батче 1 и с маленьким датасетом (все что ниже 10к картинок считается как маленький датасет), то есть к вышелписанным ограничениям сети и нежности ее некоторых частей прибавляется бутылочное горло в виде не разряженного батча и малой даты в датасете, что бустит оверфит само по себе, если ты тренируешь полноблоковую модель.
Второй важный подводный камень это оптимайзер, они разделены по семействам и имеют разные так скажем возможности и скорость до нахождения решения. Основной параметр оптимайзера это моментум, он управляет памятью о предыдущих градиентах (бета1) и реакцией на новые градиенты (бета2). Есть разные оптимы, где есть один моментум, пять моментов, вообще без моментов, но в основном оптим имеет два моментума. Соответственно если у тебя хуевый сигнал говна, то чем больше память моментумов тем хуевее твоей сети будет что конкретно отражается на управляемости финальной моделью. Чтобы понять принцип работы моментума можешь взять сгд с нестеров моментумом или amos с одной бетой и покрутить туда сюда. Алсо чем ниже моментум, тем быстрее сходимость до цели но при этом побольше нестабильность т.к. моментумы в целом предназначены для сглаживания неоднородной даты на больших батчах. Вообще оптимов самых разных великое множество, протестировать все у тебя жизни не хватит, поэтому можно выбирать с помощью синтетических тестов например отсюда https://github.com/kozistr/pytorch_optimizer/blob/main/docs/visualization.md , растригин функция особо не нужна, она показывает залипание на гипотетических локал минимумах, для задач тренировки визуальных паттернов лучше смотреть на росенброк функцию, т.к. она напрямую показывает насколько оптимизатор силен в достижении особо уникальных паттернов в кривом косом прострастве признаков и насколько он делает это быстро и стабильно. Еще сюда можно совет впихнуть что если ты новичок и не хочешь ебаться с подбором лр под оптим, то бери адаптивные оптимайзеры, или шедулер фри. Но адаптивки обычно имеют более долгое достижение результата, т.к. ради сейфовоц адаптивности жертвуют скоростью.
Третий важный момент это регуляризация самой тренировки. Все эти команды типа макс град норм, скейл вейтс, дропауты, дебиасед естимейшены, шаффлы, аугментации - все они придуманы чтобы снижать влияние деструктивной полноблоковой тренировки на малом датасете с малым батчем. Условно дебиасед снижает влияние расшумленных таймстепов, и повышает влияние более важного и четкого сигнала поздних таймстепов - следовательно насрать в конволюшены с дебиаседом будет чуть сложнее. Или дропауты в лорах - отключают рандомные нейроны по ratio чтобы сеть не выдрачивала саму себя на твой маленький датасет, штука против оверфита.
Четвертвый момент это сама функция лосса. По дефолту у тебя доступны l1, l2 и huber. L1 очень медленный но стабильный, отсекает все критические ошибки. L2 быстрый но неустойчивый к ошибкам вообше, особенно на высоких скоростях и низких моментумах. Huber гибрид из двух предыдущих с удобной фильтрацией по SNR (что важно при малом батче и малом датасете), на практике является наиболее френдли лоссом к малым датасетам и быстрым скоростям из доступных изкаропки. Лоссов тоже очень много разных, все они впердоливаютя вручную, вон в этом треде вейвлет лосс и ффт лосс дрочили, я на ффт сижу теперь, батя грит малаца.
>Хочу про это прочитать, чтобы хоть немного сориентироваться че за хуйня у меня происходит. Комплексного гайда нет, просто ходишь по интернету и гптшкам и читаешь.
>Как извлекать информацию из результатов? Имеешь в виду как понять что модель не говно? Ну есть небольшой лайфхак это использовать вместе с лорой дистиллят лору dmd2 под LCM 1CFG, она очень хорошо правит все огрехи тренировки, даже если лора полностью убита к хуям будет пытаться дать нормальный когерентный результат и показывает визуально куда упор при тренировке был сделан и надо ли пониже лр, есть ли оверфит на локальные признаки, насколько следует промту и тд и тп. Сюда же хайпер лора, лайтнинг, турбо, пцм, тцд, но мощнее всех дмд конечно, эталонная дистилляция.
Я вообще в целом редко когда генерирую без дмд2 в контексте сдхл, к хорошему и быстрому привыкаешь быстро, но если тебе важен именно нативный ген без улучшалок убыстрялок дмд поможет определить туда ты тренируешь вообще или нет. Еще помогает определить эпоху перетренированности, это примерно когда при использовании дмд с лорой у тебя буквально срется картинками из датасета. Удобно кароч.
Но минус есть конечно - при 1 цфг у тебя не работают негативы и обобщение при генерации максимальное, поэтому сильно промт не имеет смысл расписывать вообще, буквально gay sex best quality пишешь и готовый результат оцениваешь.
>>1307749 > 32bit нихуя не изменилось. И не должно. На 32 бита стоит уходить только если NaN лезут, но bf16 для этого предпочтительнее. > Нормально ли подобное (видео рил) ухудшение в начале разогрева? Не очень. Первые 200-300 шагов можно простить, но дальше должно нормально идти. > Lora Alpha 1 Хуй знает как у тебя там альфа работает, попробуй сделать её как rank. При инференсе альфа берётся из лоры или если в лоре её нет - ставится как rank. Может у тебя она некорректно отрабатывает. Она у всех по разному работает - у кохи одно поведение, у ликориса другое, в peft третье. И на пики валидации сильно не ориентируйся, для начала протести финальную лору, может в валидации насрано.
>>1307711 > Еще вопрос, могут ли эти косяки быть из-за того что я в этой менюшке я выбрал fp16 но в остальных всех fp32 хотя моя видеокарта не поддерживает half-preccision (gtx1660)? Нет, точность это про другое. Можно эффективно тренировать ирю на фп8 и на q4, да даже на q1. Фп32 нинужно, это для карт и больших дядь с бизнес грейд датацентрами для тренировки, там есть фп32 и соответственно точность выше нужна тем кому нужна. Если у тебя 1660 то у тебя выбора особо нет, только фп16. А так в идеале если 3000 серия и выше то бф16 надо, оно стабильнее и в целом лучше фп16.
>>1307749 > Нормально ли подобное (видео рил) ухудшение в начале разогрева? Ту мач агрессив. У тебя верхнепороговая скорость 1е-4 стоит, оптим хз какой, лосс хз какой, от нуля до 1е-4 при 1 к 64 соотношение добавляемой даты исходя из альфы и дименшена (0,015625 per step) на стадии вармапа это очень жесткие изменения. Снижай лр и показывай полный конфиг тренировки.
Еще стоит козин в качестве шедулера, а у него кстати прикол есть что дефолтный без аргументов практически не снижается во времени (тензор борд открой посмотри на график), типа за 1к эпох он от условных 1е-4 упадет до 3.9е-5, что фактически не снижает ебку скоростью. Так что если тебе надо нормальный козин под конкретное количество шагов эпох то бери из библиотеки торча с аргументами настраиваемыми козины ихние.
>>1307504 >вот такую шляпу Пишешь экшн для фотошопа, который дублирует базовый слой и сливает их между собой, и так несколько раз, потом сохраняет и закрывает файл. Прогоняешь им всю папку с картинками.
Но, очевидно, что косяки на краях после такого вылезут во всей красе.
>>1307757 Проблема проверок всех этих параметров это сколько ждать нужно. 3600 шагов занимает 6 часов. Хорошо сейчас понял что простой промпт (1girl, solo) за ~20 мин (3 эпока) разоблачает косяки.
Анон, мне нужна хоть какая-то победа. Сколько я бьюсь об стену и вижу этот шизофренический результат с искривленными руками. Либо странный андерфит где лора дает минус к анатомии. Мне нужно хоть какая-то надежда, хоть какой-то позитивный результат.
Мне кажется тут много того что ты написал что понадобится уже на более тонких вещах. Если у меня неправильно выставлена температура мне кажется трогать бета1 или 2 будет только сильнее запутывать. Т.е. если если вместо сломанных правых рук станут сломанные левые, то я вряд-ли это замечу. Если я не смогу хотя бы немного исправить текущий пиздец с экспериментируя 1-3 параметрами, то блять, вообще хуй с тренеровкой лор. Столько уже времени вложил, что еще столько же я уже не выдержу. Я готов сильно пожертвовать качеством если смогу убрать шизофринию.
Все эти аналогия на счет машинного обучения про то как обучения это слепой идет и изучает
>В каждом блоке содержатся компоненты:... Мне кажется тут нужен набор знаний которого у меня нет.
У меня SD1.5 если что. >>1307758 >Хуй знает как у тебя там альфа работает Альфа 1.0 полное обучение без помех, 0.5 половина силы. >>1307763 Понятно. >>1307771 >верхнепороговая скорость >соотношение добавляемой даты исходя из альфы и дименшена >пики валидации >peft третье Моя твоя не понемай. >Еще стоит козин в качестве шедулера, а у него кстати прикол есть что дефолтный без аргументов практически не снижается во времени (тензор борд открой посмотри на график), типа за 1к эпох он от условных 1е-4 упадет до 3.9е-5, что фактически не снижает ебку скоростью. Пик1 >Снижай лр У адаптивных оптимайзеров, если в начале изменения слишком маленькие у них крышу срывает, по этому нельзя вармап. А обычные нормально относятся если в начале слишком низкий ЛР.
>>1307881 >Проблема проверок всех этих параметров это сколько ждать нужно. 3600 шагов занимает 6 часов. Так чтобы понять принцип работы того или иного параметра тебе буквально нужна 1 картинка, 1 тхт файл описания и 5 репитов на этот датасет из 1 картинки и условно 10 эпох тренировки длиной в 5-10 минут. Не надо выдрачивать по 6 часов, это так не работает вообще: если сеть изначально сломалась, то она из жопы магическим образом не вылезет дальше есть пара вариантов когда может, но это особая магия с косинанилингвармрестарт шедулером и не всегда работает. Забей хуй на тренировку, пробуй следующий вариант, если у тебя в первые 5-10 эпох нет когерентного результата. >Хорошо сейчас понял что простой промпт (1girl, solo) за ~20 мин (3 эпока) разоблачает косяки. Ну да. Но есть чуть более точный тест: сначала генишь примерно то на что тренил, затем генишь диаметрально противоположный концепт - скажем кот сидит на скамейке в городе, если оба теста проходит и ничего не поломалось, то модель сумела в обобщение. Естественно надо учитывать что от сида тоже зависит и если на одном сиде не работает, то на другом может работать, это норма для луковичных юнетов. >Анон, мне нужна хоть какая-то победа. Сколько я бьюсь об стену и вижу этот шизофренический результат с искривленными руками. Либо странный андерфит где лора дает минус к анатомии. Мне нужно хоть какая-то надежда, хоть какой-то позитивный результат. Если тебе нужен стопроцентный простой удобный результат, то берешь технику тренировки b-lora, это как раз про изоляцию и таргетированную тренировку. Там по дефолту отключены фф и прожекшен слои и конволюшены в конфиге, так что будут тренироваться только линейные слои в конкретных блоках, вследствие чего у тебя будет вопервых долго тренироваться до результата, а во вторых вообще насрать на гиперпараметры - оно сожрет практически любые. Сам концепт описан тут https://b-lora.github.io/B-LoRA/ Конфиги тут https://github.com/ThereforeGames/blora_for_kohya/tree/main/lycoris_presets Если захочешь включить все кроме конволюшенов в тренировку обратно, то в регулярных выражениях для юнета пропиши заместо старого "output_blocks\\.0\\..$", "output_blocks\\.1\\..$", "input_blocks\\.8\\..$" Текстовый енкодер там два слоя тренируется "text_model.encoder.layers.0", "^text_model\\.encoder\\.layers\\.1(?!\\d)(\\..)?$" >Мне кажется тут много того что ты написал что понадобится уже на более тонких вещах. Мой псто скорее про то что сначала изучи как работает мотор прежде чем заниматься его починкой изолентами. >Столько уже времени вложил, что еще столько же я уже не выдержу. Ооо ты бы знал сколько я времени убил впустю вообще наверно в окно выпрыгнул.
>Мне кажется тут нужен набор знаний которого у меня нет. Ну я вроде описал принцип работы, теперь есть. >У меня SD1.5 если что. А, ты еще и на полторахе. Ну в принципе с изоляцией слоев в небольшом дименшене без текст енкодера и в фп8 юнете и фп8 оптимайзере сдхл должна влезть в 6 кеков даже на 1024 разрешении, а уж 768 и подавно. Могу проверить если хочешь и потом конфиг дать, сдхл во всем будет лучше полторахи даже в фп8 тренинге за счет того что там модели попизже будут базовые.
>Моя твоя не понемай. У тебя стоит 0.0001, это в сайнтфиик нотейшен 1e-4, достаточно агрессивная скорость для лиона и лор в целом. Дименшен и альфа работают так: ты указываешь дименшен ранк 64 и альфу 1, следовательно коэффициент влияния модуля лоры каждый шаг будет 1 поделенный на 64, то есть 0.015625силы влияния, что осторожно и не должно так въебывать уже на вармапе. Альфа это регуляризационная залупка кстати тоже. >Пик1 А у тебя в вантрейнере выставлен num_cycles зависящий от тоталстепс, по дефолту его нет, я предположил что ты может выставляешь вечную тренировку на козине. >У адаптивных оптимайзеров, если в начале изменения слишком маленькие у них крышу срывает, по этому нельзя вармап. А обычные нормально относятся если в начале слишком низкий ЛР. Ну адаптивным и не ставят вармапы. А у тебя лион, он не адаптивный, у тебя 700 шагов на вармап при датасете в 70 картинок, это в целом дохуя и смысола не имеет, 5% от всего рана или эквивалент 1-2 эпохам достаточно, ато он 10 эпох дрочился у тебя до мощной скорости зачем-то (я только только видос посмотрел твой), только время проебал.
>>1307941 >Мне кажется тут нужен набор знаний которого у меня нет. >Ну я вроде описал принцип работы, теперь есть. Конволюшн блоков в этих u-net пикчах я не вижу. Я попробую несколько раз перечитать твои посты но башка от сложности взрывается. Просто в большинстве туториалов говорят "хуяк-хуяк, поэкспериментируйте температурой и эпохами и все!". А тут непросто знать что каждая хуйня делает, нужно еще знать на какие еще 10 вещей она влияет, от каких 5 вещей зависит и какие 3 вещи делают её ненужной, а как все эти вещи работают вместе.
>сдхл во всем будет лучше полторахи даже в фп8 тренинге за счет того что там модели попизже будут базовые. У меня gtx1660, full precision only. Генерация SDXL даже 768p 20 шагов занимает 2 минуты. Там вообще никак не поэкспериментируешь, я уже не говорю про тренировки.
>У тебя стоит 0.0001, это в сайнтфиик нотейшен 1e-4, достаточно агрессивная скорость для лиона и лор в целом. >Дименшен и альфа работают так: ты указываешь дименшен ранк 64 и альфу 1, следовательно коэффициент влияния модуля лоры каждый шаг будет 1 поделенный на 64, то есть 0.015625силы влияния, что осторожно и не должно так въебывать уже на вармапе. Альфа это регуляризационная залупка кстати тоже. Т.е. другими словами непонятна причина пиздеца?
Бонус: мнение. Аналогия с слепцом который ходит по горам, учится рельефу, и пытается найти дно, не отображает реальность машинного обучения. И это не просто грубое упрощение а активно мешающая пониманию процессов. Т.к. если вам задут хоть немного технический вопрос эту аналогию невозможно будет применить, потому что она изначально не имеет смысла. Лучшая аналогия необходима и поможет всем. Имхо.
>>1307757 >>1307941 Ты пиздец его изнасиловал сейчас инфой скорее всего, он хоть усрётся не получит нихуя от полторахи как не трень, ни анатомии, ни рук, ни стиля, может скорость только получит приемлемую >>1307690 Что ты хоть тренить то собрался? Тебе легче будет в тредах попросить тебе потренить с твоей 1660, но про 1.5 можешь вообще забыть, сколько её не еби, оно мёртвое даже по сравнению с XLями. Но вообще с XL фп8 оптимайзер, фп8 веса, градиент чекпоинтинг, 1 батч, без энкодеров, может сниженное разрешение даже влезет в 6, в 8 точно влезает без энкодеров второй батч в 1024 >>1307881 > 3 эпока Я очень надеюсь что ты не по методикам вин10твикера это всё пытаешься делать
>>1307749 Я насколько я знаю для фп8 нужны RTX 30ХХ+ серии (bitsandbytes), если конечно есть то чего я не знаю о 16xx серии И да те 2 минуты за 768px 20 шагов это на квантованных чекпойнтах. Обычные не влезают в ВРАМ. > 3 эпока >Я очень надеюсь что ты не по методикам вин10твикера это всё пытаешься делать 3 эпока это я преувеличил но так я ссылался на этот видеорил >>1307749
>>1308066 >Конволюшн блоков в этих u-net пикчах я не вижу. Конволюшн слои внутри блоков, отдельных блоков с конволюшнами в сетях нет. У тебя пикча схематичная, там справа снизу легенда расписана где стрелочки отдельные это и есть конволюшны частично. Кароче, чтобы понять из чего состоит модель тебе надо взять любою лору натренированную даже на одном шаге, но с таргетами по всем блокам со включенными конв слоями, а дальше эту лору засунуть в верификатор лор, без разницы вручную через питон скрипт или через уи типа https://github.com/bmaltais/kohya_ss , на выходе ты получишь список всех слоев в твоей лоре, пикрелейтед, он для сдхл но тоже самое делается и для 1.5.
У тебя в пикчах твоих кстати выше стоит пресет attn+mlp, то есть ты изначально не тренируешь конволюшны, то есть они отпадают как причина агрессии или кривости лорки. Остается просто высокая скорость и недостаточная регуляризация.
Если надо тренить с конвами то переключись пресет на full и потрень 1 шаг с сохранением чтобы потом посмотреть состав лоры. Вообще вантрейнер я бы не использовал на твоем месте, он достаточно неудобен. Рассказать как пользоваться говном для тренинга лучше?
>Я попробую несколько раз перечитать твои посты но башка от сложности взрывается. Задавай вопросы что непонятно.
>Просто в большинстве туториалов говорят "хуяк-хуяк, поэкспериментируйте температурой и эпохами и все!". А тут непросто знать что каждая хуйня делает, нужно еще знать на какие еще 10 вещей она влияет, от каких 5 вещей зависит и какие 3 вещи делают её ненужной, а как все эти вещи работают вместе. У тебя два стула буквально в контексте лоры - тренить вечность на низкой сейфовой скорости на уровне до 1e-5, но не думать о том, как оптимизировать процесс чтобы не обосраться, либо тренить эффективно но избегать страданий от переобучения через таргетинг (вот у тебя аттн+млп пресет, это по факту таргетная тренировка, ток ты изначально не так с ней работаешь) и тонну гиперпараметров.
>У меня gtx1660, full precision only. Генерация SDXL даже 768p 20 шагов занимает 2 минуты. Там вообще никак не поэкспериментируешь, я уже не говорю про тренировки. Я имею в виду чтобы ты подготовленные сконверченный чекпоинт можешь использовать для генерации, через пик2 например, это мой скрин годичной давности почти, там потребление врама в пике 5.5 гигов, теоретически оно влезет тебе в 6 гигов твоей 1660, потому что были репорты что в 1050ти с 4 гигами влезало и терпимо было.
А тренинг тренируется через специальный параметр --fp8_base_unet, переводящий fp16 чекпоинт в fp8 точность, плюс использование оптимайзера с 8бит точностостью. То что у тебя карта не держит фп8 нативно это не проблема вообще, оно не влияет особо.
Я уже скозал ранее что могу проверить сколько будет врама съедать, тренинг в суперэконом режиме с изоляцией слоев с отключенным TE, попозже напишу.
>Т.е. другими словами непонятна причина пиздеца? Ну как такового пиздеца нет, из того какие данные от тебя я вижу ты зачемто тренил вармап 10 эпох до конского пика скорости и спрашиваешь а че почему в жопе все. Надо по другому тренить, помягче и поэкономичнее.
>Бонус: мнение. Аналогия с слепцом который ходит по горам, учится рельефу, и пытается найти дно, не отображает реальность машинного обучения. И это не просто грубое упрощение а активно мешающая пониманию процессов. Т.к. если вам задут хоть немного технический вопрос эту аналогию невозможно будет применить, потому что она изначально не имеет смысла. Лучшая аналогия необходима и поможет всем. Имхо. Лучшая аналогия обучения нейросети это раб, которого бьют плеткой (лосс функцией и регуляризацией) за каждый неверный мув (ошибку) чтобы он больше таких мувов не делал и был хорошим рабом. Если бить раба слишком сильно, то он помрет не сделав ничего полезного, если недостаточно, то он будет филонить. Осуждаю, но выглядит это именно так. Обучение с тичером и подкреплением вообще концлагерь аналогией будет.
>>1308205 > Ты пиздец его изнасиловал сейчас инфой скорее всего, Бля ну я не хотел, мне кажется лучше сразу показать что тренинг это не тяп ляп и результат как будто гпт 5 натренировал а ты сем альтман, в реальности ебешься будь здоров как и в любой деятельности которая с виду преподносится как жмаканье кнопки сделать пиздато.
>он хоть усрётся не получит нихуя от полторахи как не трень, ни анатомии, ни рук, ни стиля, может скорость только получит приемлемую Ну кстати да, полторашка сама в целом сосет. Лучше пусть продает свой 1660 мусор и покупает срук 3060 12 кеков или из 4000/5000 серии ченить с 16 гигами если интересен процесс тренировок, не такие уж большие траты, 8 раз в пятерочку сходить.
>>1307757 >Вообще оптимов самых разных великое множество, протестировать все у тебя жизни не хватит, поэтому можно выбирать с помощью синтетических тестов например отсюда https://github.com/kozistr/pytorch_optimizer/blob/main/docs/visualization.md Нельзя. Осмысленных выводов по этим картинкам сделать невозможно. >Еще сюда можно совет впихнуть что если ты новичок Найс кормишь новичков дерьмом. >бери адаптивные оптимайзеры, или шедулер фри. Это хотя бы верно. >dmd2 )))
В остальном вода без конкретики с привкусом шизы. Ну шедулер фри, ффт лосс, эти хуйни с планировщиком таймстепов имеет смысл юзать, но у него в огрызке гуя оно есть?
>>1307749 >>1307881 >Lion Выкинь, он не умеет обороты сбавлять и фулл лр хуячит, емнип. 1е-4 тем более с ним будет дохуя.
>Альфа 1.0 полное обучение без помех, 0.5 половина силы. Не так. Ставь альфу как корень из ранга. В твоем случае 8. Альфа прост косвенный множитель инициализации весов. Он еще на ранг делится, так что полное это 64. >У адаптивных оптимайзеров, если в начале изменения слишком маленькие у них крышу срывает, по этому нельзя вармап. А обычные нормально относятся если в начале слишком низкий ЛР. Наоборот. Моментумы без прогрева могут дать очень большое обновление. Или просто временно "отключаются", и будет идти обучение как по обычному сгд. И можно не плавно поднимать лр, а проехать сколько-нибудь на нулевом лр, а потом поднять. Это изначальная логика как задумывалось. Просто с маленьким лр можно не тратить шаги впустую а чутка успеть обучиться и никуда не улететь пока момент плавно стабилизируется.
Поставь аккумуляцию побольше, даст то же самое что и батч. Отключи ТЭ. Потести лоссфункции, включи дору. Пресет слоев у тебя какой, где написано только атеншены? В этом гуе я хз, но если только атеншены тренирует то это не то. Добавь wd, дропауты. Ну и выкинь лион, ставь адамW обычный.
Можешь инициализировать лору через SVD для стабильности. Выше есть ссылка, требует только пердолинга через гуи. В твоем наверное должно работать, но надо будет поставить кохьевский гуй и комфи.
>>1307941 >Ну адаптивным и не ставят вармапы. Пиздеж.
>>1308066 >Я попробую несколько раз перечитать твои посты но башка от сложности взрывается. Ой бля лучше его не слушай, там надо шарить чтобы понять что мусор а что нет. Лучше возьми да залей датасет и сюда вкинь, тут получше твоей некторы карточки будут. Да и я могу натренить если мне не лень будет. Только дай модель и тестовые промты. Прост интересно ради чего ты так ебешься. И вообще нахуя 1.5? Она же кал. Если xl хотя бы запускать можешь, зареквесть других натренить. Сборка датасета это все равно самое ебаное из всего процесса, а на трене уже работает видимокарта а не ты, лол.
>>1308791 >Лучшая аналогия обучения нейросети это раб, которого бьют плеткой (лосс функцией и регуляризацией) за каждый неверный мув (ошибку) чтобы он больше таких мувов не делал и был хорошим рабом. Если бить раба слишком сильно, то он помрет не сделав ничего полезного, если недостаточно, то он будет филонить. Осуждаю, но выглядит это именно так. Обучение с тичером и подкреплением вообще концлагерь аналогией будет. Хуйня аналогия. Вот лучшая: Параметры нейросети это многомерные координаты, для многомерного ландшафта по которому она идет. Градиент дает направление и условно-относительную силу шага для каждого параметра-координаты. С каждым шагом ландшафт немного меняется, потому что параметры воздействуют друг на друга. Поэтому сильно шагать по вычисленному направлению мы не можем, только по чуть-чуть. Разные параметры влияют на ландшафт по-разному. И для того чтобы вычислять такие параметры придуман второй момент в адаме, который старается не дрочить сильно параметр если градиент по нему часто меняет направление. И никаких аналогий не надо.
>>1308864 >Лучше пусть продает свой 1660 мусор и покупает срук 3060 12 кеков 3060/12 можно за 15к достать с мобильным чипом. Якобы новую из китая. Б/у за 12. Мобильные 3080/16 в районе 20. v100/16 еще есть за 20 с небольшим, но там пердольная плата с охладом.
>>1307749 Блять. Как минимум половина проблем была в Aspect Ratio Bucketing. Новый тест с другим чекпойтом: Пик1 Слева оригинальный датасет с разным соотношение сторон, справа датасет с квадратами Aspect Ratio Backeting ВЫКЛ (чужой датасет и абсолютная шиза в нем, у всех пикч один промпт, а теги со всякими мастерписями, 32к и пр)
Какой же комфипидор всё же пидор. У него некоторый код инференса в режиме обучения. Видимо когда впердоливали ноды обучения никто даже не чекнул остальной код и не сделал torch.no_grad() как положено. Из-за этой хуйни "протекает" память, хотя на самом деле это так торч устроен - веса модели нельзя удалить из памяти пока на них ссылается тензор с requires_grad. Чекается легко, есть ли в воркфлоу говняк - генерим и жмём "выгрузить все модели", если память не очистилась под ноль, а после нажатия "инвалидация кэша" всё же освободилась, то говорим спасибо комфипидору. Пока тензоры в кэше нод не будут удалёны, не очистится и память моделей, зависящая от них. Хорошо хоть глобальное отключение автограда помогает и не надо разбираться в этом говнокоде. А ведь я помню как это чмо ещё пиздело на автора Форджа что он не знает что делает, по итогу это комфипидор не знает как менеджмент памяти в торче работает.
Экспериментировал с CAWR шедулером, и случайно получилась такая кривая скорости из-за достижения лимита в min_lr. Примерно с того момента как график отзеркалился (70 шаг) внезапно пошел ебический буст четкости и сходимости. Это я так понимаю обратная пилообразная синусоида, но я их ни разу в кастомных шедулерах не встречал потому что согласно всем обоснованиями базовая логика обучения подразумевает что из общих форм со временем высекается более точные формы на низких скоростях (нисходящий шедулинг). То есть получился эффект не варм рестарта, а ээээ вармап рестарта.
Че узнал щас почему те пиздошится: оказывается скорость текстового энкодера любая которую назначаешь при тренинге является фейковой, т.к. лосс считается на выходе юнета, но градиенты для TE проходят через юнет в любом случае. Таким образом допустим большой шаг у юнета = большие изменения в распределении активаций на входе в TE при обратном проходе => TE начинает получать непредсказуемые градиенты => эффективно увеличивается лр TE по созависимости, хотя на бумаге он каким был таким и остался.
АнонИИ, вижу тут разбирающиеся люди есть, тама Chroma v50 (это какой то гибрид 1dev и schnell) вышла, подскажите как на неё лоры тренировать кто в курсе? Я залетный и много не прошу мне бы только на лицо натренировать. Можно как то сделать это через one trainer или flux gym или аналоги не сложные?
>>1316918 Скорость не фейковая, тут вопрос в том хули в текст энкодер большой градиент приходит? Норму градиента можно мониторить, и можно делать константной, при желании. Лучше замерять это инструментально, прежде чем делать какие-то выводы.
>>1316991 > это какой то гибрид 1dev и schnell Нет, это просто крайние слои от Флюкса отрезали и заново натренили с cfg. > как на неё лоры тренировать кто в курсе? В официальной репе есть код тренировки лор со скриптами запуска, должен работать. Я его адаптировал под свой тренер, всё чётко было. Но ты учти что надо либо две карты, либо квантовать, желательно через HQQ. В int8 чтоб в 24 гига залезло надо разрешение ниже 1024 опускать, что-то типа 768, хотя я думаю это не проблема, некоторые Ван в 256х256 тренят, лол. Для комфортной тренировки желательно конечно 5090. По скорости 2000 шагов в час на 5090.
Решил посмотреть, какая математика лежит в корне VAE. Охуел пиздец. И это мне нейронка с упрощения расписала. А ведь когда то я играюче разобрался бы в это, техвышка это вам не шутка. А щас пук среньк, не могу даже интеграл взять Посоветуйте книжку по городу генеративным сетям. Чтобы все основные компоненты, и вае, и клип, и u net разбирались. Я знаю, как они работают, но не настолько глубоко, как бы хотелось.
>>1317169 > Посоветуйте книжку по городу генеративным сетям. Чтобы все основные компоненты, и вае, и клип, и u net разбирались. Ну посоветую, это скорее историческая энциклопедия охватывающая всю историю нейросетей, чем что-то специальное узконаправленное Книги бесплатны на сайте автора
>что надо либо две карты, либо квантовать Flux же не квантованный нормально тренируется на 24гб 3090 в 1024, а тут я так понял урезанный flux чего бы он не влез?
>>1317198 > Тут пишут что это шинель Потому что у него лицензия нормальная, от шнеля там ничего не осталось, кроме архитектуры DiT. > Flux же не квантованный нормально тренируется на 24гб 3090 в 1024, а тут я так понял урезанный flux чего бы он не влез? Только если свапать блоки, но это дно по скорости. Как раз коха такими извращениями занимался. > Если ты про эту репу https://github.com/lodestone-rock/flow
>>1317198 > не квантованный В fp8, что ещё хуже квантов. На Флюксе от этого лоры шакалили генерации, выдавая блочные артефакты. Если хочешь что-то вменяемое натренить, то модель должна быть либо в bf16, либо в нормальных квантах. Сама лора естественно должна быть bf16 всегда.
>>1317203 >https://github.com/lodestone-rock/flow Ага спасибо, качнул от туда flow, буду разбираться, но похоже консоль дрочить придется и руками писать а не параметры в окошечках выбирать. >>1317209 Спасибо за подсказку, но вроде на FLUX неплохая лора получалась, модель была flux1-dev.sft на 23 гига
>>1317169 >Решил посмотреть, какая математика лежит в корне VAE. Охуел пиздец. И это мне нейронка с упрощения расписала. Нейронки плохо умеют правильно упрощать. Вообще вае это несложно, там просто математики насрали как обычно своей хуйней, которой не существует. На самом деле есть просто обычный автоэнкодер, понять как он работает - тривиально. Если ты его просемплируешь на большом наборе данных, увидишь что латенты распределены всрато и неравномерно, они кучкуются в определенных областях пространства, в остальных есть дыры. Попытка взять случайный латент выдает сломанный результат, ибо ты почти всегда попадаешь в дыру или недопустимую комбинацию значений. Задача вае сделать распределение равномерным. Достигается это двумя путями. Первый это просто дополнительный лосс на сами латенты, чем дальше значение от "центра", тем больше ошибка. Это сила которая стягивает латенты к центру. Второе - вводится дополнительный канал, который будет предсказывать насколько важно каждое значение латента. Если значение важное, значит оно сильно влияет на выход в данный момент и его нельзя сильно отклонять. В момент прямого прохода будет взято случайное число из диапазона, который предсказан этим каналом, и прибавлено к латентам, затем отправлено в декодер. Кароч суть в том что из-за этого канала в латенты постоянно подсирается шум, но если градиент ошибки большой, то канал учится ослаблять шум. В итоге это становится силой, которая расталкивает латенты и все это вместе делает распределение гладким, а само обучение - осмысленным и структурированным. На дополнительный канал тоже накладывается лосс, только наоборот, тянущий его от нуля. Иначе бы энкодер сразу схлопнулся и предсказывал бы одни нули на этих каналах, потому что они только мешают работать декодеру. Каждый канал начинает учиться выдавать большое значение только когда сильный разброс допустим и низкое когда нет. За счет разброса как раз закрываются дыры, декодер учится работать с полным диапазоном значений.
Можно представить латенты в процессе обучения, как в симуляторе частиц, на которые действуют разные силы. Если это визуализировать в динамике, оно примерно так и будет выглядеть.
На этапе инференса эти дополнительные каналы не нужны, их значения игнорируются. Работает как обычный автоэнкодер.
Дополнение: На второй картинке как раз видно, что итоговый латент получается таким, что если сделать небольшое отклонение, то попадешь по крайней мере во что-то похожее. Соответственно, получишь меньший лосс, и так автоэнкодер естественно учится делать хорошую и нужную нам структуру.
>>1317203 В общем мы с flow не подружились то одно ему надо то другое то вересия питона слишьком высокая то слишьком низкая то вообще на линуксе делать надо.
В флюксжим пропихнуть тоже не удалось не под видом дев не под видом шенель...
>>1317156 Поставил Ai toolkit красивый приятный удобный, все нормально влезло в 24 гига. Пришлось правда VS2022 переустановить ибо по дефолту он уставнолен был в програм файлс с пробелом и питоне не мог им пользоваться нормально. И тренить можно много чего, даже ван видео.
>>1318592 > даже ван видео Там поддержка только старого 2.1. Ван 2.2, к сожалению, можно тренить только в говне кохи, которое ещё более говняное чем его говно для тренировки sd. Столько лет чел кодит и всё как в первый день, когда он писал код для тренировки лор полторахи.
>>1315853 Сделал шедулер обратного косинуса с рестартом с независимыми скоростями для весов и те, работает заметно лучше чем классика. Основная проблема нисходящего шедулинга в том, что стартовые значения переоценены и потом эти переоцененные значения подкручиваются еще сильнее на стадии дикея, особенно если шумные входные данные, поэтому на одном и том же датасете получились совершенно разные эффекты (картинки заебусь прикладывать поэтому текстом) - в первом случае где старт с 1е-2 до 1е-3 (при эффективной скорости обучения примерно от 5е3 до 1е2) сильно жжет веса и конволюшены впитывают слишком мощный шумный сигнал (конкретно фьючерсы стилистики со всеми характерными засветами и квалити демеджом в датасете), во втором случае при бесконечном восхождении от 1е3 до 1е2 жарево полностью исчезает и теперь сеть не агрессивно подстраивается под датасет, а датасетные данные подстраиваются под сеть за счет бесконечного эффекта вармапа. Эффект получился схожий с трапезоидальным шедулером, где весь график это вармап-плато на высокой скорости-косинусный дикей до нуля обратно, только там он длиной во всю тренировку, что усложняет контроль лучшей эпохи и может не докручивать себя чтобы найти более лучшее решение. Попробую сделать и попробовать циклический трапезоидал, где вармап длиной в датасет-плато длиной в датасет-дикей длиной в датасет и затем повторы, вероятно это наиболее удобный и сейфовый вариант тренировки будет вообще, но даже обратного косинуса как будто бы достаточно, особенно с большим батчем на уровне 10-50 картиночек за раз.
>>1291324 >Я при кешировании латентов шум генерю и потом только его использую, без генерации нового, у каждого латента свой фиксированный шум. как эту хуйню въебать в сдскрипты пиздец че за квест
вариант 2 - через имейдж индекс но я ебал код кои в рот чтобы найти точно какой индекс откуда берется, но в любом случае этот вариант тоже работает я тренировочку прогнал, вероятно может бесоебить если каким-то образом нарушится последовательность латентов и вообще я не ебу может там один нойз лол
>>1325386 Хотя если быть точнее то первый вариант определенно на одном шуме обучался и у него бешеная сходимость
второй вариант лучше показывает себя в качестве фьючерс грабера, вероятно это из-за того что шум таки один на все латенты изза int = 0, и прямой инференс отличается от тренинга без фиксед нойза в чуть лучшую сторону но фактически выходные результаты одни и те же что тренировка без или с фиксед нойзом
такто технически должен был быть один или похожий результат если шумы фисятся и там и там, а на далее ну соврешенно противоположное говно
>>1325392 >а на далее ну соврешенно противоположное говно Так вроде логично же? У тебя разные сиды для шума, в пером считаются из хеша латента, во втором из его индекса.
>>1325453 Так там прикол в том, что если результат с хешей, то он в разы более консистентный, а в случае индекса (который я предлагаю кривой, т к ну по факту там надо еще пару блоков кода для передачи индексов корректно) он почти такой же как результат с тренировкой на рандом нойзе.
Народ, подскажите, кто шарит. Сейчас докупил к своей rtx 3060 12gb cmp 90hx на 10 гигов, но есть вариант добавить ещё 7к и купить tesla p40 на 24 гига. У меня обычная мать ASRock B550 PG Riptide c 3 портами под видюхи. Я бы докупил теслу, но я не ебу как её нормально подключить и как она будет у меня охлаждаться будет. У cmp 90hx есть 3 вертушки + cuda есть и их больше чем даже у моей 3060, а значит в теории я могу даже картинки на ней быстро генерировать в 1024x1024 без доп фич. Что выбрать? cmp 90hx на 10 гигов которую впросто вставил и всё или доплачивать и брать p40 и потом ещё ебаться с охлаждением + она не умеет в генерации картинок?
>>1326014 p40 это старое поколение паскаль вопервых, вовторых там нет тензорных ядер, втретьих на фп16 чекпоинтах будет критическое падение производительности, это будет в разы хуже чем твоя 3060 плюс есть неприятный эффект апкастинга изза того что карта фп32 онли по факту - ты не сможешь юзать нормально фп16 чекпоинты выше чем половина врама, т.к. на карте фп16 будет апкаститься до фп32 что означает x2 врама
>>1326039 >А что по nvidia cmp 90hx? >10 гигов Даже если она быстрее (хз вообще, так ли это) - будешь постоянно в низкий потолок VRAM упираться. Что совсем не круто. Более-менее нормальная жизнь начинается с 12 гигов, и твоя 3060 - до сих пор топ за свои деньги. Но лучше, конечно, 16 или вообще 24.
>>1326039 вопервых на майнинговом говне ебля с дровами
вовторых насколько мне известно там тоже порезаны операции с плавающей точкой, только целочисленные операции, то есть держи в уме что это LHR наоборот - все убито нахуй кроме операций вычисления хеш сумм для фарминга крипты, то есть хоть и карта базируется на 3080 но ты получишь производительность не сильно лучше опять же свой 3060
втретьих 10 гигов камон, прошлый век, даже 12 гигов уже подбираются к званию мусора для нейронок если ты конечно не жоский фанбой сдхл как я
просто для примера тебе из той же серии NVIDIA CMP 40HX (чип TU106 как у 2060-2070, прямой аналог 2060 супер вроде по остальным хар-кам) 3.48 итераций дает при этом обычная GeForce RTX 2060 5.18 итераций на тех же настройках
>>1326060 Ранг это просто размер и толщина добавочной матрицы с новой инфой. Чем больше размерность матрицы, тем больше параметров может хранить, чем больше параметров тем больше уникальных паттернов и их взаимодействия может изучить сеть. Хочешь более пиздатую модель - тренируй с большим рангом. А такто и lokr с фактором декомпозиции -1 с выключенной декомпозицией второго блока (ранг >10240, альфы не работают) с тренировкой input_blocks.8, output_blocks.0, output_blocks.1 хватит на простую задачу за глаза, а это размер выходной лоры в 4 мегабайта между прочим.
>>1326116 >Если что лучший топ нищевариант это 3090 с лохито на 24 гига. В "дополнительные 25к" он тут вряд ли уложится. Даже БУшные 3090 довольно дорогие. Но 5060 и так нормально смотрится. Можно выжимать все из XL-моделей, и щуть-щуть потрогать всякие флюксы, ваны, квены и видео-генерацию.
Я отказываюсь принимать и терпеть то, что стадия стабилизации на сдхл это фундаментальное ограничение обучения. Должен быть какой-то лайфхак уровня тичер-ученик, который убыстряет стадию стабилизации. Мнение?
Циферки эпох умножайте на 5 чтобы количество шагов получить.
Нет, я тебе больше скажу - результат есть на первых 50 шагах, особенно если плюсить к убыстряющим лорам. Но снижение ошибки раз за разом рисуется именно в таком паттерне - хаос, стабилизация, снижение ошибки, и это вообще независимо ни от сверхнизких или сверхвысоких бет, скорости обучения или всяких дополнительных ёб типа едм - сдхл раз за разом требует на отрисовку паттерна поведения ошибки около 2к шагов для лоры. Это как будто заложено в самой сдхл.
>>1326328 >Лосс не метрика Повторяемость паттерна говорит о том, что это таки метрика. А если смотреть что делают челики используя конфигурацию из учитель-ученика, то там паттерн лосса сжимается во времени. >нет смысла смотреть что там на графике, особенно на лорах. То же самое поведение если тренировать полные матрицы, но в виде модуля дополнительного.
>>1326134 Это я понимаю, вопрос скорее был про какое-то минимальное/начальное значение для нюкеков. Алсо аналогичный вопрос по локону - какие ранги конвов ставить? Есть ли какие-то соотношения конвов к линейкам или можно фигачить какой-нибудь 16/4 в оба?
>>1326656 >вопрос скорее был про какое-то минимальное/начальное значение для нюкеков Ящитаю, что какое в карту залезет. Если хочешь тренировать быстрее, то подбери размер под увеличенный батч (помимо добавленных gradient_accumulation_steps фейкобатчей), если у тебя например 3060 то в 12 кеков вполне влезет батчсайз 2 на сниженной размерности.
>Алсо аналогичный вопрос по локону - какие ранги конвов ставить? Есть ли какие-то соотношения конвов к линейкам или можно фигачить какой-нибудь 16/4 в оба? Зависит от того как и что тренируешь - полностью все блоки или селективно.
У каждого блока и почти у каждого слоя в сдхл есть пачка слоев которые считаются конволюционными при тренировке: emb_layers - управляют вставками эмбедингов с фьючерсами от текстового енкодера, по факту не конволюшены даже, а просто своеобразные линейные слои, но в премейд пресете кои который тренирует конв онли они берутся и не фильтруются, очевидно чтобы при тренировке только конв с текстовым енкодером был смысл тренировать текстовый енкодер вообще in_layers - конвы на входное преобразование out_layers - конвы выходного преобразования skip_connection - конвы соединяющие разные блоки, в основном находятся в аутпут блоке сдхл и соединены с инпут блоками
конвы это локальные данные, поэтому они очень нежные в большинстве ранних слоев и если ты подаешь в них сразу агрессивный шум, то они могут его и запомнить и больше не забыть, исключение составляют емб и скипы - им похер, плюс конвы в мидл и конечных аутпут слоях достаточн стабильны так как финализирующие
соответственно чисто логически чтобы не вызывать переобучение на шумные данные при обучении полных блоков обычно их размерность снижают относительно линейных слоев, процент подбирается индивидуально от 10 до 75%, прямой зависимости "количество блоков относительно линейных - размерности" нет, там в основном зависимость от скорости - если у тебя сейфовая низкая скорость на миллион шагов то можно такую же размерность брать что и у линейных, если агрессивная высокая с мощными шагами обновлений - ставь ниже
плюс зависит от алгоритма, у локона емкость сети в целом низкая поэтому вызвать переобучение на говняк в конвах проще, а например если тренировать diag-oft или boft то там матрица не коверкает основные данные сети и встраивается максимально нативно в модель, поэтому можно одинаковое значение брать
>>1326761 >Зависит от того как и что тренируешь - полностью все блоки или селективно. Я так понимаю ты про locon preset? Пока не ковырялся с ним и сижу на дефолте (full).
У меня на 4080 в принципе лезло 20/18 с батчем 2 или 3, но результаты были ужаренные и я пока на 16/16 тестирую.
Собственно сейчас пытаюсь получить не ужаренную лору на 16/4 (ранг/альфа) на линейки/конвы, локон+дора, без дропов. Оптим AdamWScheduleFree, LR=2e-4, wd=0.1, шедулер константный без прогрева. Эта хрень медленная, но вроде пока не так сильно жарит глаза/руки на арте.
>>1326786 >Я так понимаю ты про locon preset? Пока не ковырялся с ним и сижу на дефолте (full). Премейд пресеты кои пикрел. Ты можешь свой томл конфиг создать под нужное, ток регексы надо изучить и состав сети чтобы понять что исключать. Если надо будет подсказать как оформлять регексы обращайся. >не ужаренную лору на 16/4 (ранг/альфа) на линейки/конвы Альфа это регуляризационная штука, не крути ее если не знаешь как точно будет лучше - либо единичку ставь, чтобы обновления разных прогонов лор с разными настройками были так сказать сравниваемы между собой по влиянию на сеть, либо одинаковый размер с рангом чтобы масштабируемости вообще не было и крути вес лоры во время инференса просто. >wd=0.1 От вд никакого практического толка для маленьких датасетов, можешь смело не использовать никаких вейтдикеев вообще, это для миллионных датасетов регуляризация. >шедулер константный без прогрева У тебя шедулерфри, ему шедулер не нужен вообще, он сорт оф адаптивный. >Эта хрень медленная, но вроде пока не так сильно жарит глаза/руки на арте. Пережарка это проблема переобучения на агрессивной скорости на агрессивные шумные данные ранних слоев блоков сети которые отвечают за мелкие и тонкие фичи. От этого частично помогает вармап. Я предполагаю что у тебя проблема зажара от конв и идет, потому что линейные зажарить это надо еще суметь.
>>1326786 >>Зависит от того как и что тренируешь - полностью все блоки или селективно. >Я так понимаю ты про locon preset? Уточню, что под селективным методом я имел в виду пикрел например, потому что пресеты кои сконструированы так что либо тренятся только конвы, либо фул, либо только линейные, это как бы тоже селективное, но ты тренишь с конвами и у тебя выбор ток из фулла и конвонли без линеек.
>>1326795 > Ты можешь свой томл конфиг создать под нужное, ток регексы надо изучить и состав сети чтобы понять что исключать. Знать бы еще что туда включать...
>Альфа это регуляризационная штука, не крути ее если не знаешь как точно будет лучше Ну я в треде увидел совет ставить как корень из ранга, так и поставил. Вроде как тоже должно выдавать сопоставимые результаты при масштабировании ранга.
Алсо можешь что-то посоветовать по подбору LR? 2e-4 как-то слишком медленный получается, но я подозреваю что выше начнет жарить сильнее.
>>1326786 Пережарка абсолютно никак не зависит от ранга. Для начала попробуй обычную лору натренить, может опять обсер с альфой при инференсе у ликориса. >>1326802 > слишком медленный получается Это из-за AdamWScheduleFree, он и должен быть медленный.
>>1326802 >Знать бы еще что туда включать... Стабильные блоки и слои. У сдхл вообще интересно архитектура работает, она явно разделяет контент, стиль и план сборки картиночки по блокам (и слоям), на этом принципе основан селективный тренинг b-lora https://b-lora.github.io/B-LoRA/ (причем обязательно тренировать сразу все вместе, а потом разделять по блокам если надо, т.к. отдельная тренировка указанных блоков не является стабильной и консистентной). >Ну я в треде увидел совет ставить как корень из ранга, так и поставил. Вроде как тоже должно выдавать сопоставимые результаты при масштабировании ранга. У меня гдето ссылка была где челик мощно тестил аргументы и прочие регуляризационные штуки, в том числе альфу, так вот там никакого профита использовать что-то кроме 1 или числа равного рангу найдено не было в контексте альфы. >Алсо можешь что-то посоветовать по подбору LR? Как такового метода подбора лр нет. У оптимов в инит прописаны скорости обычно, но они тебя не касаются т.к. или взяты от балды если это прям кастом кастом от васяна, или указаны из расчета тренировки на гигантских корпусах данных как у лицокниги с ее шедулерфри штуками. Хочешь не ебаться с подбором лр и шедулера к нему - бери полностью адаптивные оптимайзеры, например https://github.com/LoganBooker/prodigy-plus-schedule-free
>>1326804 >Для начала попробуй обычную лору натренить, может опять обсер с альфой при инференсе у ликориса. Попробовал, и походу жарит сильнее локона с дорой. Настройки остались те же что и для доры.
>>1326795 >>1326798 А можешь поподробнее про эти пресеты рассказать, Как свой добавить, на основе чего делать и т.п. Я так понимаю на втором пике примерно то, что тут >>1326761 и описано? Т.е. выкинуты входные/выхожные конвы и фокус на глубоких слоях энкодера и больше на декодере. Но зачем тогда скипы тоже выкинуты, если они стабильны?
>>1326865 >Как свой добавить, на основе чего делать и т.п. Добавить просто: создаешь файл с расширением toml, в нем прописываешь рыбу
enable_conv = true если нужны конвы dora_wd = true если нужна дора
unet_target_module = [ "модуль1", "модуль2" ] если нужно модули, по дефолту просто пустые квадратные скобки
unet_target_name = [ "фильтрслоя1", "фильтрслоя2" ] тут основные таргеты слоев
text_encoder_target_module = [ ] здесь можно указать модули енкодера, по дефолту пустое, т.к. в целом целый енкодер тренировать не нужно тоже на малом датасете, достаточно общие концепции простые с первых слоев подрочить; либо можно указать CLIPAttention например
еще есть алгомаппинг, позволяющий разграничить какие алгоритмы с какими размерностями и настройками будут тренировать части сети, это нужно чтобы достичь максимальной скорости тренинга в оснвоном, т.к. допустим обычная лора быстро тренит conv, а lokr тренит быстро линейные, указываем это в алгомапе и получаем лучший вариант по скорости с отдельными настройками под каждый алгоритм, но это тебе не нужно наверно
Делать на основе любой лоры, вот у тебя есть лора натрененная с пресетом full, кидаешь ее в валидатор слоев чтобы прочекать состав, получишь выходной список всего говна внутри типа пикрел на много строк. В основном тебе нужны просто названия слоев, но если прям глубоко фильтровать то рядом с каждым слоем есть в скобочках форма, т.е. например (1280-20) это значит что лора 1280 канальный вектор ужимает до представления в 20, а обратный порядок наоборот восстанавливает. Там где 4 цифры - последние две это размер ядра, по сути размер окна фильтра через который лора смотрит на локальный участок фьючермапс. То есть 1x1 не смотрит на соседние пиксели, а только смешивает каналы 3x3 учитывает соседние пиксели (локальный контекст) и дает пространственное преобразование. Можно глубоко фильтровать короче, например выкинуть канальные миксеры вообще, т.к. это неполные данные (а тренировать неполные данные на шумно датасете это может быть вредно), или обучать только максимально вариативные вектора, где из низкого ранга условно вылезает 10240 каналов.
Валидатором я пользуюсь из https://github.com/bmaltais/kohya_ss , там он называется верифай лора, но можно отдельно скриптом с командной строки смотреть.
>Я так понимаю на втором пике примерно то, что тут и описано? Т.е. выкинуты входные/выхожные конвы и фокус на глубоких слоях энкодера и больше на декодере. Да.
>Но зачем тогда скипы тоже выкинуты, если они стабильны? Просто открыл первый попавшийся конфиг, ничего не значит. Это когда тестил влияние отдельных слоев делал.
>>1326942 >Как свой добавить А забыл написать как кастомным томлом пользоваться. Просто указываешь абсолютный путь к томлу в аргументе пресета "preset=K:/папка с томлом/master.toml"
>>1326856 >12 гигов Нафига? У тебя уже есть карточка на 12 гигов. Нафига тратить столько бабла, чтобы выиграть только во времени генерации, но не в объеме доступных задач?
>>1327079 для генерации он распараллелить может, допустим квенимаге в q4 веса на 1 карту, все остальное на вторую, еще места останется под кал всякий а тренинг тоже можно распараллелить, считай у него одна карта 24 гига со скоростью чето среднее между этими двумя картами
>>1326802 >2e-4 как-то слишком медленный получается, но я подозреваю что выше начнет жарить сильнее. лр это не скорость изменений а объем изменений хочешь чтобы быстрее реагировало на датасет - снижай беты я настолько преисполнился что почти всегда гоняю тренинги на 0.1765 по бете? почему именно так - это первое нижнее значение первой константа Фейгенбаума от значения 1 когда ничего не происходит, идея такая что нейросеть хаотическая система переходящая в стабильную, значит к ней применимы те же константы, моментум можно представить как геометрическую последовательность и тд и тп
>>1327131 > а тренинг тоже можно распараллелить, считай у него одна карта 24 гига со скоростью чето среднее между этими двумя картами Не совсем, есть определённый невыгружаемый буфер, ну допустим 7гб хл модели, которые будут висеть мёртвым грузом в памяти второй карты, тогда как если бы это были нативные 24, 7 лишних гигов не отъедались бы, ну если мы говорим конечно про распараллеливание акселерейтом
>>1326301 Кароче апдейт, нашел как убыстрить, регуляризационные имеджы помогли. Для чистоты обучал на класс. Красное до, синее после, результаты у синего в стопицот раз быстрее достигаются и лутше. В регулярки кинул 1/10 голых генов с основной модели без какого-либо промптинга.
>>1327820 Да, пустой промт в негативе и позитиве, размер одинаковый, в папке 1_класс, у основного датасета тоже 1_класс. Настройки тренинга одинаковые, gradient_accumulation_steps обоих проектов 20.
>>1283160 >Если упороться, то можно ещё маску накинуть, центр спектра с шифтом по центру. Попробовал накостылять это, и что-то простая круглая маска с сигмой=0.5 адски бустит стабильность и перенос стиля. Как-то слишком хорошо выглядит, надо еще на паре датасетов погонят.
>>1328318 Нейронка тебе такое сваяла? Инпут тоже должен шифтится и диапазон маски у тебя какой-то странный. Для недискретного преобразования есть уже с правильным шифтом функция в либе - frft_shifted, но она требует размер инпута чётный. Или от угла без шифта можно маску делать, но она несимметричная будет.
>>1328721 >А регуляризационные латенты не пробовал? Оно там вроде включается Нет, не вижу где в сдскриптах такое есть.
Зато я в качестве эксперимента запихал в регулярки плазма и пинк нойзы, скормил зашумленный большой датасет и получил лору, которая выучила фичи датасета и стала давать эффект сорт оф денойзера. А плазма вообще оказывается работает как жесткий фильтр объектов, то есть частичные эпохи выдают генерации где класс датасета как будто вырезан из датасета, а маскированная область представляет собой плазма нойз. Интересный эффект, возможно стоит попробовать накинуть 50% плазму или 50% пинк на весь датасет и кинуть как регулярку.
>>1328737 > возможно стоит попробовать накинуть 50% плазму или 50% пинк на весь датасет и кинуть как регулярку. Попробовал на плазме. Взял датасет, наложил на каждую картинку одинаковый плазма шум с опасити 50%, выставил константную агрессивную скорость в 1e-2 (на порядок больше чем нужно, обычно на 1e-2 по пизде все идет инстантно), прогнал с дефолтным --prior_loss_weight=1 - практически сразу сеть начала обучаться на плазму из рег датасета, но изображения консистентные в целом, ток шумные. Из фич замеченных - как только начало переобучаться, то начинала превалировать плазма в генерациях. Снизил --prior_loss_weight до 0.1, прогнал с низкой бетой и высокой - очень стабильные выводы получились в обоих вариантах, ток лорку чуть-чуть снижать надо по силе влияния, т.к. геометрия немного плывет.
При таком приор лоссе для рег датасета плазма тоже начинает проявляться на полном весе, но больше в рандомных эпохах, пока не понял от чего зависит, потому что плазма может вылезти на ранней эпохе, а потом пропасть вообще.
Олсо обучал все блоки, что не мог себе позволить на 1e-2 вообще практически никогда. Так что метод в целом рабочий, если кому интересно то плазма (и прочие виды шумов) генерятся вот этим https://github.com/Jordach/comfy-plasma
Отается проверить чисто плазма нойз в качестве регуляризации без подмешивания его к датасету.
>>1329435 >prior_loss_weight=1 - практически сразу сеть начала обучаться на плазму из рег датасета, но изображения консистентные в целом Интересный график лосса на этом варианте кстати (красный), где поднятие произошло там лора начала убиваться и убилась начав генерить просто шум похожий на плазму, до поднятия консистентные генерации и все. Вот тако вот сорт оф наглядный майлстоун переобучения получется.
>>1329441 Ровно на 108 эпохе плазма стала базой модели, до этого генерилось отлично. Снизу вверх 107, 108, 109 эпохи. Есть эпоха вплоть до 195, ни на одном шаге не стабилизировалось обратно.
>>1328413 Короче пока остановился на этом. На тестовых латентах спектр выглядит отцентрованным. Без двойного dfrft он был сжат либо по вертикали либо по горизонтали. Сделал пару тестовых прогонов и выглядит неплохо, пропало жорево мелких деталей, но по ощущениям стало что медленнее сходиться.
>>1329435 В общем если полностью чистый плазма нойз (который является фракталом, то есть структурированной в понимании модели штукой, собсно как и пинк или браун нойз, а не обычным рандом нойзом, с которым сдхл обучена бороться и игнорить) кидать в качестве регуляризации то выходные данные таки получаются сглаженными и отденойзенными на ранних эпохах, в отличие от варианта, где в рег дате датасет с накинутым шумом. К результату в обоих случаях оба тренинга приходят одинаково (да и результаты схожи максимально), но с разной скоростью - на чистом нойзе результат получается позже на пару эпох. Так что смысол есть в варианте, где подкидывается не чистый шум, а именно шум + дата хотя бы минимальная.
Еще момент по обучению: рег датасет берется в равной степени к датасету обучения, то есть если допустим в датасете 5 картинок, а в рег дате 1, выставлен батч 10, то возьмутся 5 картинок датасета и 1x5 рег деты, никакой деградации замечено не было от такого варианта, так что можно сэкономить на кешировании и брать небольшой рег датасет.
Остается прочекать влияние процента шума на рег дате, потому что сейчас 50% зашумленность и результаты хорошие, может с другим процентом будет лучше. Еще нужно прочекать приор лосс, но по виду 0.1 достаточно, надо прогнать с 0.5 хотя бы.
В целом плюсы плазмы в том, что она доджит переобучение на фон и сохраняет его управляемость хорошо так отделяя объекты.
Сейчас тестирую параллельно пинк нойз, и он как будто больше направлен на выхватывание особых уникальных паттернов, но в целом эффект что плазмы, что пинка плюс минус тот же, возможно пинк более предсказуемый с датой поэтому на нем проще регуляризацию сдхлке считать. Возможно есть смысл соединить плазму, пинк и дату в равной пропорции чтобы получить бонусы от каждого варианта.
https://huggingface.co/Anzhc/MS-LC-EQ-D-VR_VAE Вышла новая версия EQ VAE 5 дней назад, которая нормально работает со скриптами в отличие от кохаковской залупы которую я не ебу как заставить работать.
>>1330300 Кто будет тренировать на этом имейте в виду что это новое латентное пространство для сдхл и нужно дополнительное время для создания всех связей в сети чтобы корректно натренировалось, плюс вполне вероятно нужно подкрутить старые настройки, которые хорошо работали с оригинальным вае в сторону большей агрессивности. Синее - оригинальный вае, остальное EQ.
>>1330300 Смысл вообще от этого, если оно перетренировки всей (?) инфраструктуры требует? Вот бы чего-нибудь такого, чтоб воткнул на стандартные модели, и оно лучше стало, без всех этих расплывающихся мелких деталей которые я на своих картинках уже заебался фиксить.
>>1330497 >Смысл вообще от этого, если оно перетренировки всей (?) инфраструктуры требует? Ну вообще не требует, я уже успел тройку тестовых лор прогнать, представление латентов для обучения в разы лучше, сеть моментально схватывает всё на пикчах, сразу видно что сигнал латента чище. Единственная проблемы это то что или стабилизация дольше (первые эпохи уже дают результ качественный в смысле содержания, но качество изображения далеко дольше подтянется), поломать конволюшны проще забив их сатурированным сигналом, и судя по всему вывод оче сенсетивный к шедулеру при инференсе, а так гораздо удобнее дефолтного вае.
>>1330426 > Синее - оригинальный вае, остальное EQ. Так на твоём графике понижение лосса - это адаптация к поломанным латентам. Оно никакого отношения не имеет к повышения качества тренировки. >>1330538 Ну и нахуй это говно нужно. На XL никогда не было проблем с тренировкой концептов, а вот детализация всегда сосала из-за всратого 4-канального вае. Теперь ещё хуже будет. Да и вообще все эти дрочи трупа XL не вызывают оптимизма, уже пора дропать XL, она только в аниме жива, для реалистика XL уже слишком устаревшая. Лучше бы что-то с Квеном придумали, как размылить его, чтоб с Хромы на него начинать перетренивать лоры.
>>1330501 Видел какие-то эксперименты, но чем закончилось - не в курсе.
>>1330578 >уже пора дропать XL Пока качественной (и, самое важное, доступной на базовом железе) замены не появится - XL будет жива. И что-то пока на горизонте такой замены не вижу. Так что продолжать улучшать XL - вполне себе вариант.
>>1330538 >Так на твоём графике понижение лосса - это адаптация к поломанным латентам. Чище сигнал => сеть меньше ошибается => меньше потерь, такая логика.
>Оно никакого отношения не имеет к повышения качества тренировки. А я про качество писал только в контексте что для его достижения нужно вложить время. И вообще смотря что ты подразумеваешь под качеством. Я охочусь за адаптацией, точным грабингом фич с датасета и следованием промту - это для меня качество, сэтим это вае определенно лучше справляется чем дефолт. Если тебя просто качество самой картинки интересует чтобы генерить по референсу, то это второстепенное на самом деле.
>Ну и нахуй это говно нужно. Прост чище сигнал дает.
>На XL никогда не было проблем с тренировкой концептов Но есть проблема с точностью.
>Да и вообще все эти дрочи трупа XL не вызывают оптимизма, уже пора дропать XL, она только в аниме жива, для реалистика XL уже слишком устаревшая. Слишком категорично, ни одна модель не работает также быстро как сдхл и ни одна модель не имеет настолько большой пак мокрописек для обвязки. Плюс единственная модель которую можно в лайв моде использовать без болей в жопе.
>Лучше бы что-то с Квеном придумали, как размылить его Лучше бы квену запилили модель на 5 раз меньше параметров.
>чтоб с Хромы на него начинать перетренивать лоры. Ну хрома это кал, имхо.
>>1330594 >Если тебя просто качество самой картинки интересует чтобы генерить по референсу, то это второстепенное на самом деле. референс ген вообще ипадаптером и флюх калтекстом решается, смысл дрочки тут >>1330578 на качество тренировок как таковых вообще не вижу, лоры и фуллфт для другого тренируются
>>1330590 > качественной Как на Хрому/Ван пересядешь, так уже к XL не захочется притрагиваться. С промптингом на DiT всё отлично, как и с переносом концептов за пределы датасета. >>1330594 > ни одна модель не работает также быстро как сдхл С учётом того что 4/8-шаговые XL очень шакальные, ещё и в два прохода надо генерить чтоб нормальное разрешение иметь, то 8-шаговые DiT не так уж медленнее. И с тренировкой всё отлично, внезапно 14В/20В DiT тренится всего раза в два медленнее XL. На Квене вообще как на XL можно за 15 минут лоры на 1000 шагов хуяк-хуяк делать. > пак мокрописек Wan/Qwen уже обогнали по функционалу XL, где кроме пары контролнетов и всратого ип-адаптера ничего нет.
>>1330804 >Как на Хрому/Ван пересядешь, так уже к XL не захочется притрагиваться. а я какраз попробовал хромог и ван, а потом вернулся на хл, аналоговнет
>>1330804 >С учётом того что 4/8-шаговые XL очень шакальные, ещё и в два прохода надо генерить чтоб нормальное разрешение иметь, то 8-шаговые DiT не так уж медленнее. Што? Я конечно не далбаеб чтобы гигантизм генерить на сдхл постоянно не больше мегаписеля делаю, но вот 1768x1280, 15 шагов, 14 секунд, 1 проход на 3060, с какой-то рандомной говнолорой на стиль, и это я еще ничего не постобрабатывал или не включал в пайп шринки хуинки и адаптеры.
>>1330804 >Как на Хрому/Ван пересядешь Художников знают? Персонажей, может быть, конкретные стили? А сисик-писик сгенерить могут?
Пока модель с незацензуренным датасетом не появится - разговаривать не о чем, тюны XL вне конкуренции. На "Извините, я не могу выполнить этот запрос" я и в облаке посмотреть могу, на гораздо более умных и продвинутых нет моделях.
>>1330538 >>1330300 Если тренировать вместе с нормами через train_norm=True, то шумы моментально уходят и ваешка дает почти то же качество что оригинал, не в смысле содержания - по точности ебет как ебало, а в смысле что шумов от другого латент спейса практически перестает быть. Но проверил только на пресете full. До этого тренил на кастом модулях без трейннорм, и там конечно хорошо по содержанию, но два латента в одной генерации прям конфликтуют между собой, надо попробовать селективно с нормами прогнать.
Алсо в репе есть фикс паддинг артефакта: for module in self.model.modules(): if isinstance(module, nn.Conv2d): pad_h, pad_w = module.padding if isinstance(module.padding, tuple) else (module.padding, module.padding) if pad_h > 0 or pad_w > 0: module.padding_mode = "reflect" Но я его чет не могу в пайплайн скриптов всунуть. Если кто знает как напишите. А так с тренировкой норм бага этого нет почему-то.
>>1331413 >надо попробовать селективно с нормами прогнать Да, все работает. Если тренирова на EQ отдельные блоки и включить тренировку norm, то получается модель, которая работает с оригинальным вае с качеством основной модели, но все фишки полученные от EQ. Пользуйтесь, нормы имба с EQ.
>>1332111 Какой-то беспредметный разговор уровня "пук хрюк мыло кококо" из сд треда.
1. Сначала определи что значит "текстуры сосут" 2. Далее покажи лоры или модели натренированные с этим вае где текстуры по твоему заявлению сосут 3. Покажи лору или модель которые были натренированы без данного вае и с данным вае для прямого сравнения эффекта 4. Определи как текстуры в латентном представилении могут сосать (с ссылкой на папер, подтверждающий это с метриками)
К вопросу о ваехах. Рекойлми высрал ваешку https://huggingface.co/AiArtLab/sdxl_vae без нового латентного пространства но по бенчам чище EQ кохака. Прогнал тест с нохалф, вроде прикольно, однозначно будет лучше чем всратый дефолт.
>>1332191 Чел, тот VAE в принципе мыльнее оригинального. Они боролись с шумами и сделали ровно то что хотели - мыло. Ещё и тренили только на аниме с бур, заруинив окончательно всю детализацию. Собственно если ты датасеты чистишь всегда, а не просто жипеги гонишь в модель, то у тебя никогда и не будет проблем с какими-то шумами. > покажи Литералли примеры авторов посмотри, у них шумодав адский.
>>1330497 >без всех этих расплывающихся мелких деталей которые я на своих картинках уже заебался фиксить. Можешь взглянуть на хрому радианс, которая безвайная - так вот, этих расплывающихся деталей пруд пруди. Так что я б не стал надеяться именно на фикс деталей.
>>1332234 Ты ещё забыл добавить что все натрененные до этого лоры надо выкинуть. 4-шаговые лоры и контролнеты - тоже выкинуть. Литералли всё перетренивать, а иначе падение качества. А ещё оно потом чувствительно к весу лоры, ведь у нас в лоре адаптация к новому латенту и изменение веса ломает её. Бесполезное говно, откатывающее на 2 года назад. С таким подходом проще сразу на DiT тренить.
>>1332206 >Limited concept coverage due to the small dataset. >The Image2Image functionality requires further training. И на картинке по ссылке лютая хтоническая жуть. Нет, спасибо.
Все эти поделки хороши только для буратин с десятком-другим H100 чтобы потом их дотюнить до чего-то юзаебльного, либо для потешных картиночек с большими носами для твитора. Пока не будет чего-то, уровня нуба или хотя бы люстры (и их аналогов для 3д) - оно нахуй не нужно.
>>1332199 Что-то непонятно, как этим пользоваться. Скачал вместе с конфигом, переименовал, закинул в папку с VAE, так рефордж ругается при попытке генерации с этой штукой.
>RuntimeError: Error(s) in loading state_dict for AutoencoderKL: >Missing key(s) in state_dict:
Где там чего менять надо чтоб завелось, объясните хлебушку.
>>1332504 > AutoencoderKL Оно в формате автоматика, а не диффузерс. Мне тоже пришлось поебаться чтоб конвертнуть в диффузерс, чтоб тренить с ним. И с ним пайплайн диффузерса не работает нормально, хуй знает почему, при том что ручной энкодинг/декодинг работает нормально. Это к тому что если Фордж использует ванильный пайплайн как-то, то не будет работать. Вот этим скриптом можешь конвертнуть, пути только пропиши в load/save - https://textbin.net/ptpvcqkpph
>>1332638 Поднял венв с папки вебуя, загнал в него скрипт с прописанными путями до оригинального вае, и куда перезаписывать (заместо "in" в скрипте в двух местах). Вроде конвертнулся, файл обновился, но все равно не заводится. Ошибка с виду та же, вот целиком.
Loading VAE weights specified in settings: D:\StableDiffusion\stable-diffusion-webui\models\VAE\AiArtLabs_Conv_VAE.safetensors Traceback (most recent call last): File "D:\StableDiffusion\stable-diffusion-webui-reForge\modules_forge\main_thread.py", line 37, in loop task.work() File "D:\StableDiffusion\stable-diffusion-webui-reForge\modules_forge\main_thread.py", line 26, in work self.result = self.func(self.args, *self.kwargs) File "D:\StableDiffusion\stable-diffusion-webui-reForge\modules\sd_vae.py", line 267, in reload_vae_weights load_vae(sd_model, vae_file, vae_source) File "D:\StableDiffusion\stable-diffusion-webui-reForge\modules\sd_vae.py", line 212, in load_vae _load_vae_dict(model, vae_dict_1) File "D:\StableDiffusion\stable-diffusion-webui-reForge\modules\sd_vae.py", line 239, in _load_vae_dict model.first_stage_model.load_state_dict(vae_dict_1) File "D:\StableDiffusion\stable-diffusion-webui-reForge\venv\lib\site-packages\torch\nn\modules\module.py", line 2584, in load_state_dict raise RuntimeError( RuntimeError: Error(s) in loading state_dict for AutoencoderKL: Missing key(s) in state_dict:
>>1332234 Хуй знает о чем ты, латент это просто компактные признаки изображения формы, текстуры, цвета в закодированном виде, говорить о мыле каком-то мифическом это некорректно, отличия у ваех в точности циферок, что собсно видно на примере из EQ. Нету такого что вае каким-то чудесным образом не видит текстурки, у него задача вообще любое говно кодировать в скрытоспейс, кто-то точно делает, ктото нет, вот и вся разница. То что ты видишь как тестовые крашеные латент в примерах это не реальное представление латента к тому, оно ток границы форм в основном показывает, представить полноценно латент в ргб пространстве невозможно. >то у тебя никогда и не будет проблем с какими-то шумами Так епта вопрос не про шумы вообще, а про точность картинка-признак-картинка, чем неточнее представление тем хуже конвергенция.
Я с екюшкой лорку натренил щас - спиздило все текстурки подчистую.
>что все натрененные до этого лоры надо выкинуть Ну да, нахуй они нужны, куски кала > 4-шаговые лоры и контролнеты - тоже выкинуть. Ну тут нет, архитектура осталась на месте, EQ работает с убыстрялками и калтролнетами.
>>1332410 Там тренинг все еще идет, в вандб можешь чекать эпохи и примеры, там ток к 1 миллиону шагов подбирается. А вообще че ты хотел? Это пруф оф концепт по сути, берешь и тренишь целую модель на своем датасете с 16 канальным вае с мульти те и кайфуешь с результата.
>>1332969 > Хуй знает о чем ты Вае всегда как деноизер работает, он не умеет в латентном пространстве нормальный шум сохранять. И мылит он легко, если так натренили. > EQ работает с убыстрялками и калтролнетами Ты ведь не пробовал даже. С DMD и 4-шаговой лорой под Нуб он плохо работает, на выходе артефачит. Контролнеты вообще очевидно сломаются, т.к. они кодируют пиксели в определённый формат латента и если у тебя там другой, то получаешь распидорас.
>>1332504 >Что-то непонятно, как этим пользоваться. >Скачал вместе с конфигом, переименовал, закинул в папку с VAE, так рефордж ругается при попытке генерации с этой штукой. в комфе работает искаропки при генерации
>>1332638 >Оно в формате автоматика, а не диффузерс. Мне тоже пришлось поебаться чтоб конвертнуть в диффузерс, чтоб тренить с ним. И с ним пайплайн диффузерса не работает нормально, хуй знает почему, при том что ручной энкодинг/декодинг работает нормально. на сдскриптах вообще без ебли запускается (и eq тоже), просто папку указываешь с конфигом и вае через --vae
>>1332978 >Ты ведь не пробовал даже. С DMD и 4-шаговой лорой Как раз это и пробовал, у меня постоянно в тестовом вф стоит включенным. Все с EQ нормально работает. >под Нуб он плохо работает, на выходе артефачит Так нубай в принципе с дефолтным дмд обсирается делая 24/7 вектор-лайк графин, можно через спо нуб поправить и будет получше но все равно ебашит слишком агрессивно, в этих репо https://huggingface.co/YOB-AI/DMD2MODhttps://huggingface.co/YOB-AI/HUSTLE есть попердоленные дмд которые в целом хорошо работают с нубаем, в сд треде пользуются. >Контролнеты вообще очевидно сломаются, т.к. они кодируют пиксели в определённый формат латента и если у тебя там другой, то получаешь распидорас. Я все не тестил, но депфы и кани которые у меня есть вроде ок.
>>1332979 >в комфе работает Ну кто бы сомневался. А потом оказывается что нет, не работает, и лапша из-за ошибок при чтении этой фигни без вае генерила.
я пригорел, как же меня заебали лора алгоритмы пиздец просто
локон низкоемкостный педераст и хуй нормальное соотношение подберешь вследствие чего эффективный лернинг не достигается вообще - ой у тебя конвочки с альфой равной дименшену - жри кал пидар, теперь у тебя вся модель генерирует датасетовский стиль фоточек, ой, у тебя слишком низкие конвочки - ну пожри говна тоже, я необучаемая без конвочек ой ты включил дору - ну тогда я изза низкой емкости буду миксовать части изображений вот тебе скинтон с датасета плавно переходящий в скинтон модели, ну как тебе?
локр избавляет от использования альфы, но блять какой же он сука топорный - бля братан у тебя слишком сильная факторизация - а давай я кароч текстурки проебу, в остальном все же заебись братан текстурки это прошлый век, формы на месте же... нихуя себе ты факторизацию огромную ебанул, ну я пуксренькаю кароче и вот тебе оверфит овершарп оверберн ты же етого хотел да?..
лоха с большой емкостью, с отличной генерализацией, но переобучается с полпинка - так так че тут у тебя лернинг неверно выставлен, извини теперь у тебя геометрия ебанулась, ты давай это снижай альфу значит или лернинг рейт, о вот теперь нормально, но я запомню ВЕСЬ ДАТАСЕТ В МЕЛЬЧАЙШИХ ПОДРОБНОСТЯХ чтобы тебе снова приходилось снижать вес лоры, а может даже стану лидером митол группы и вообще задавлю основную сеть)))) а если ты выставишь еще более сейфово я покормлю тебя дымкой и пластиком потому что мне нужно время на стабилизацию)))) ну хоть лоха наиболее простой алго для тренировки на EQ, лучше всех работает с ним
глора вообще хуй пойми себе на уме чето там дрочит, но зато нереально словить артефактов неожиданных, ультратормознутая залупа вроде и обучается фичам, а на деле реально среднее по палате, ну в принципе она так и задумывалась как я понял - выводить среднее значение по датасету без упора в копирку
диагофт вообще юзлес поебень годящаяся только грейдинг с фоток пиздить
бофт - я его рот ебал, он мало того что медленный так еще и или недотягивает до нормы весов модели или наоборот сразу убивается генерируя боди хорроры, констрейнт не помогает нихуя, потому что он на рандомном значении каком-то постоянно находится исходя из датасета - ставишь 1, 0.5, 0.25 ноль эффекта, ставишь 0.0242 - о нормально, ток не обучается теперь нихуя
из всего списка того что есть в ликорисе самый адекватный похоже это мультиранговый дилора алгоритм, но он прям очень много времени требует для заметного обучения т.к. за один степ он берет лишь одну колонку и строку весов, либо надо сильно задирать всё вообще чтоб агрессивно ебало, но зато можно сейфово поднимать вес лоры и даже ниче не ломается лол
почему блять нельзя придумать алгоритм который всегда нормируется под веса основной модели самостоятельно чтобы не надо было заниматься этой дрочкой ебучей с недолетами и перелетами пиздец блять нахуй, реально хоть 3090 покупай чтобы на full алгоритме просто без задней мысли тренировать в норму защо
>>1336810 я специально еще для нонстоп тренировки лорок купил ссд отдельный и вот эти ебаные 21 терабайт потраченных по сути в никуда почти полностью проебались на выведение идеальных конфигов под алгоритмы, которые на самом деле не идеальные и обсираются на других датасетах и их все равно надо подкручивать, это проклятие какоето самая удобная и удобоваримая по времени/качество тренировка была селективная обычно, но там свои нюансы уровня частичной невыразительности, или тренировка в селективной full и бесконечно долгой full/дримбудке
>>1336810 Бля, чел, просто трень обычные лоры. Алсо, попробуй хоть раз слезть с ликорис-параши на peft. Хоть увидишь как люди живут за пределами sd-васянства. > алгоритм который всегда нормируется под веса основной модели самостоятельно чтобы не надо было заниматься этой дрочкой ебучей с недолетами и перелетами Вообще-то обычная лора в такое без проблем умеет. Даже что-то типа пикрила с улетанием лосса в ноль стабилизируется на 500 шаге и даёт нормальную лору улетело потому что 500 эпох на двух пикчах. > на full алгоритме просто без задней мысли тренировать Если у тебя на лорах какие-то проблемы с оверфитами и артефактами, то на полной тренировке вообще будет распидорас. Лоры всегда выступают как демпинг тренировки.
>>1336810 А разбивку обычной лоры по svd не тестил, как оно? Фулл файнтюн проводил? Таки важно для сравнения, если ты хочешь какие-то выводы делать. Вообще звучит так, как будто у тебя в чем-то другом критичный проеб, который по разному вылезает. Фулл точность еще на весах норм и биасов включена?
>>1336950 >Бля, чел, просто трень обычные лоры. Я недоволен результатами с обычной лорой вообще. >Алсо, попробуй хоть раз слезть с ликорис-параши на peft. Хоть увидишь как люди живут за пределами sd-васянства. Что ты имеешь в виду под слезть? На голые диффузерсы прыгнуть и дрочить командную строчку с кастом кодом? Я не настолько погромист чтобы делать это корректно, а во вторых ну то мне даст еще десяток видов говнолор, которые не тестили вообще никто кроме авторов на корпусах даты для ллм? >Вообще-то обычная лора в такое без проблем умеет. Не умеет, умела бы не требовалось бы подгонять значение мультиплаера лоры посттренировочно. >Даже что-то типа пикрила с улетанием лосса в ноль стабилизируется на 500 шаге и даёт нормальную лору улетело потому что 500 эпох на двух пикчах. >Если у тебя на лорах какие-то проблемы с оверфитами и артефактами ты не пони мой тейк похоже, я не говорю что я не умею тренить там или результат никогда не достигается, я говорю что чтобы достичь результата с лорами надо конкретно заебаться брутфорсом параметров, а у меня еще и планочка слишком большая для лор - если ее хоть чуть чуть косоебит и она не работает нормально при 100% применении то она отправляется в мусорку; если она натренировалась и генерирует хорошо только датасет по референсу, то она отправляется в мусорку; если она слишком долго сходилась - она отправляется в мусорку вместе с конфигом потому что у меня нет столько времени чтобы каждый датасет гонять миллион часов с 100x репитами и тд
>то на полной тренировке вообще будет распидорас. как раз таки наоборот у меня, если я настраиваю сорт оф фул и терплю лишения в виде того что у меня в карту не влезает все что нужно, то на выходе я чаще получаю то что мне требуется - хорошая быстрая универсальная адаптация без перекосов во всякий кал
>Лоры всегда выступают как демпинг тренировки. от лагоритма зависит, бофт вон не демпит ничего вообще что с одной стороны хорошо, а с другой в жопу ебет этим
>>1337056 >А разбивку обычной лоры по svd не тестил, как оно? Нет, этих свдшных методов слишком дохуя и они не кончаются, вон новый недавний https://arxiv.org/pdf/2502.16894
>Фулл файнтюн проводил? Фулл в смысле фул фул или просто полные матрицы? Первое особо смысола на микроскопических датасетах нет, а второе дает хорошие результаты относительно лор.
>Вообще звучит так, как будто у тебя в чем-то другом критичный проеб, который по разному вылезает. Проеб в том что я вообще открыл для себя тренировку, думал тут универсальность и мир дружба магия, а тут в ачко ебут.
>Фулл точность еще на весах норм и биасов включена? Сдскрипты не позволяют в фп32 ничего гонять кроме вае, да и не на моей карте полную точность дрочить.
>>1336950 >стабилизируется на 500 шаге и даёт нормальную лору 500 шаг с какими вводным настройками-то? Для моих датасетов и настроек 500 шаг это будет реальный 5000 шаг именно прохода по датасету и целый день задрачивания карты.
> дилора алгоритм, но он прям очень много времени требует
Не работает корректно с шедулерфри продижи (вероятно некорректно работает вообще со всеми адаптивами из-за фрагментации рангов) кстати, поэтому ощущение что вечность сходится, на обычных оптимах гораздо бодрее, и с оптимами из питорчоптимайзер либы тоже не особо работает (может не со всеми но с теми которыми пробовал там не передает нужный параметр и оптим падает). С встроенными в сдскрипты оптимами работает.
>>1337068 > На голые диффузерсы На peft, чел. Модель можешь какую угодно использовать. > не требовалось бы подгонять значение мультиплаера лоры посттренировочно А когда требуется? Обычно всегда в 1.0 всё работает. Понижаешь только когда начинаешь пять лор мешать и хочешь какой-то интересный микс получить. > если она По факту у тебя всратый датасет/код тренировки и ты пытаешься демпингами поймать какой-то свитспот когда говно не вытекает, потому что у тебя конец тренировки - это говно. Но вообще-то так не должно быть. Тренировка лор ничем не отличается от обычной тренировки в контексте оптимизации, она должна всегда приходить в стабильное плато, а не в говно. Если на плато не то что тебе надо, то надо тергет сдвигать, а не пытаться демпинговать тренировку и ловить какую-то точку недотрена. Тебя вообще не смущает что буквально все пытаются сделать как можно быстрее схождение и плато ниже, а не ищут свитспоты? Т.е. мутанты/артефакты/низкая генерализация - это вопрос таргета, а вопрос оптимизации/архитектуры лор только в том чтобы как можно быстрее к этому таргету упасть. > если я настраиваю сорт оф фул И тут тебе стоило бы задуматься что тебе срёт в тренировку и пытаться идти к упрощению, а не накручиванию новых свистоперделок. В любом случае фултрейн только на XL и возможен, на той же Хроме в fp8 тебе 40+ гигов врама надо чтоб без лор тюнить все параметры или использовать 8-битные говнооптимизаторы, или свапать блоки как шакал. А ведь она одна из самых мелких DiT. На WAN вообще лоры на микродатасетах по 8 часов приходится тренить на 5090.
>>1337128 >На peft, чел. Модель можешь какую угодно использовать. Так чтобы пефтнапрямую юзать это мне пиплайн на диффузерзах высирать надо будет как для тренировки так и для инферирования если метод из пефта не реализован в UI, разве нет? >А когда требуется? Обычно всегда в 1.0 всё работает. Всегда требуется балансировку делать для методов с альфой для перерасчета весов чтобы не крутить при генерации вверх-вниз. Либо крутить в самом UI, чтобы и на хуй сесть и рыбку съесть. Я понятия не имею как тебя все устраивает на 1.0, потому что это практически всегда забивает сигнал основной модели и получается генератор хуйни заученной, а не адопшен. А некоторые лоры наоборот требуют увеличивать влияние, как например прямо щас у меня требует dylora увеличивать x10 ее значения, потому на 1.0 там слишком слабый сигнал на достаточно большой скорости получается, а если еще скорость повышать то обучение уезжает в ад. >По факту у тебя всратый датасет Предположи что у меня есть бесконечное количество субъектобъектов для которых нет не всратого датасета, а обучить нужно. Твои действия? Я могу зарегулировать сигнал и сделать его чистым. >код тренировки Ну что предоставляют сдскрипты то и юзаем. >ты пытаешься демпингами поймать какой-то свитспот когда говно не вытекает, потому что у тебя конец тренировки - это говно. Да нет не так вообще. Я на сф продигах сижу вообще, а там конец тренинга определенного этапа в смысле запекания фич и стабилизации определяется через пикрел в точке до последующего роста. Вопрос не в говне и вытекании а только в заучивании и адаптации, что неконтролируемо и меня это бесит. >Тренировка лор ничем не отличается от обычной тренировки в контексте оптимизации, она должна всегда приходить в стабильное плато, а не в говно. Если на плато не то что тебе надо, то надо тергет сдвигать, а не пытаться демпинговать тренировку и ловить какую-то точку недотрена. Ну это теоретизирование, ты бы еще написал "ну вода мокрая, если у тебя вода недостаточно утоляет жажду, то так не должно быть". У меня жесткие требования к обучению, я не делаю референс генераторы и мне нужен гибкий стабильный вывод на основе знаний основной сети. >Тебя вообще не смущает что буквально все пытаются сделать как можно быстрее схождение и плато ниже А сколько раз мне еще написать что нахождение решения для лоры это не моя проблема? Можно найти решение и в 100 шагов, только это не дип адопшен который нужен. > а не ищут свитспоты? Я не ищу свитспоты. >Т.е. мутанты/артефакты/низкая генерализация - это вопрос таргета, а вопрос оптимизации/архитектуры лор только в том чтобы как можно быстрее к этому таргету упасть. Чел, хватит пространные рассуждения пихать очевидные. >И тут тебе стоило бы задуматься что тебе срёт в тренировку Ну очевидно что срет - в основном это конволюшены лоры с фиксированным рангом, а если обучать без них, то это непозволительное расточительство времени, линейные соло обучаются слишком долго. >В любом случае фултрейн только на XL и возможен, на той же Хроме в fp8 тебе 40+ гигов врама надо чтоб без лор тюнить все параметры или использовать 8-битные говнооптимизаторы, или свапать блоки как шакал. А ведь она одна из самых мелких DiT. На WAN вообще лоры на микродатасетах по 8 часов приходится тренить на 5090. Да я про сдхл только и пизжу, остальное меня мало волнует.
>>1337312 > разве нет? Нет, peft работает с чем угодно. У меня peft на оригинальную реализацию Хромы непердолен с диффузерсами не подружился, бомбанул от ублюдской реализации упаковки латентов Флюкса. Он просто проходится по всем модулям модели и подменяет своими по заданным паттернам. > для методов с альфой Так делай альфа = ранг. И забудь навсегда про существование альф и кручение весов. > есть бесконечное количество субъектобъектов для которых нет не всратого датасета, а обучить нужно Решается капшенами. На DiT просто, на XL посложнее из-за клипа. Всратый датасет в моём понимании - рандомная лоурез дрисня из яндекс-картинок, найденная по поисковому запросу. Если тебя интересует только небольшая часть пикчи, а всё остальное мусор, то это тоже капшенами решается. Например можно сливать ненужное в стохастику/один токен, который превратится в триггер стиля и который можно успешно игнорить. Достаточно наконец в 2025 году подружиться с крупной VLM, а не пользоваться дженерик простынями из wd-таггеров, от которых естественно протекают все концепты потому что капшены шаблонные. > сф продигах Пиздец. Вот и ответ твоих проблем. > У меня жесткие требования к обучению, я не делаю референс генераторы и мне нужен гибкий стабильный вывод на основе знаний основной сети. Это ты говоришь какие-то общие слова, о том что и так работает не напрягаясь. Даже XL без проблем умеет в перенос элементов концепта за пределы датасета. Ты бы хоть показал с чём у тебя проблемы. По твоим рассказам больше похоже на шизу. > в основном это конволюшены Не верю.
>>1337357 >Нет, peft работает с чем угодно. Я не знаю как впердолить в сд скрипты. >Так делай альфа = ранг. И забудь навсегда про существование альф и кручение весов. Так я альфа=ранг и треню в основном. >Решается капшенами. На DiT просто, на XL посложнее из-за клипа. Если тебя интересует только небольшая часть пикчи, а всё остальное мусор, то это тоже капшенами решается. Например можно сливать ненужное в стохастику/один токен, который превратится в триггер стиля и который можно успешно игнорить. Да не решается. Хоть какой капшен - хоть токенами, хоть человеческое описание, хоть класс, хоть небо и аллах. А если ты про тренировку с TE, то я и так и так тренировал, но в основном энкодер не тренирую, с енкодером только на жестком выборе контректных слоев енкодера для тренировки нет большого влияния на сдхл. >Всратый датасет в моём понимании - рандомная лоурез дрисня из яндекс-картинок, найденная по поисковому запросу. У меня не спарсенные картинки, не рандом, бывает что шумные датасеты, но не критично, но такие картинки фактурные очень и сеть это улавливает сильно. >Достаточно наконец в 2025 году подружиться с крупной VLM, а не пользоваться дженерик простынями из wd-таггеров, от которых естественно протекают все концепты потому что капшены шаблонные. Не пользуюсь вд. Я так понимаю ты в целом со своей колокольни вещаешь и не понимаешь специфику мою, а мои "дип адопшен кококо хватит перезаписывать основную модель тварь" тебе ни о чем не говорит потому что ты примитивное онеме тренишь. >Пиздец. Вот и ответ твоих проблем. От оптимайзера не зависит вообще, не надо тут это. >Это ты говоришь какие-то общие слова, о том что и так работает не напрягаясь. Даже XL без проблем умеет в перенос элементов концепта за пределы датасета. Да блять не работает оно не напрягаясь. Если бы оно работало не напрягаясь этой ветки диалога не было бы. >Ты бы хоть показал с чём у тебя проблемы. По твоим рассказам больше похоже на шизу. Ок смотри, задача 1: сделать генерализованную модель под конкретную живую бабу модель для генерации с ней различных картинок для маркетплейса (отдельные модели под вещи уже готовы). Есть обширный датасет. У меня есть исходный файнтюн который без особого напряга генерирует и управляется с адаптерами и контролнетами, моя задача просто заставить сеть генерировать только тян модель - то есть ее точную фигуру, лицо, прически, чтобы по итогу влияние на модель было только в этих доменах. При обучении всех слоев с конволюшеными я неизбежно получаю перекос в датасет и теряю основные знания сети, поэтому конкретно под эту задачу с реальными людьми подходит либо дримбудка либо селективная тренировка, которая теряет дату, но не настолько критично как полнослоевая тренировка. Задача 2: у меня есть классовый концепт, о котором знает сеть, большой датасет из которого нельзя убрать дату до минимального, т.к. в дате содержатся разные нужные данные. Никакая лора не справляется с генерализацией и в любом случае падает в копирование датасета. Задача 3: у меня концепт о котором не знает, очень шумный датасет, шум давится, но лора по итогу выучивает датасет вместе со всеми характерными шумами. Маскирование даты невозможно. >Не верю. Я отключаю конволюшены и проблема уходит вместе с глубокими знаниями локальными, можешь верить.
>>1337380 Не, я другой анон вообще, увидел вашу дискуссию и решил потыкать этот peft. Он вроде даже в кохаковский формат автоматом сохранился, в webui его видно. Но он, сука, не работает. Совсем. В логах видно загрузку, но результат вообще никак не меняется, что с лорой что без нее - вот прям пиксель-в-пиксель одинаковое.
>>1337371 Сконвертить? В диффузерсах есть функция convert_state_dict_to_kohya для peft, были скрипты где-то в репе диффузерса для тех кто с лапками. Либо глазами посмотри как ключи поменять. Пикрил я для Хромы делал конверсию в формат комфи. >>1337379 > Задача Во-первых, не понятно твоё стойкое желание использовать только XL, когда на любом DiT описанное тобой не является задачей и просто работает. Даже возьми SD 3.5, если хочется базу похожую на XL. Во-вторых, так и не увидел чего-то невыполнимого для XL. В третьем вообще очевидный проёб тренировки, XL наоборот очень сильно игнорит шумы/артефакты сжатия, а в DiT это решилось бы указанием тега на шум.
>>1337448 >Во-первых, не понятно твоё стойкое желание использовать только XL Потому что быстро, удобно, пачка всего нужно существует и файнтюны на любой вкус втч мощная предметка. >когда на любом DiT описанное тобой не является задачей и просто работает. - я пользуюсь вилкой чтобы кушать корнишоны - возьмите BFG 3000, оно лучше справляется, попробуйте >Даже возьми SD 3.5, если хочется базу похожую на XL. Нет файнтюнов которые можно юзать как базу. >Во-вторых, так и не увидел чего-то невыполнимого для XL. Ну теоретически нет невыполнимого, невыполнимы с наскока они без дип пердолинга на лорах. >В третьем вообще очевидный проёб тренировки, В третьем проеб конволюшенов лоры, именно там я их отключаю и магическим образом все приходит в юзабельную норму, но концепт недостаточно точен (сильно недостаточно). >XL наоборот очень сильно игнорит шумы/артефакты сжатия Жаль сдхл об этом не в курсе. >а в DiT это решилось бы указанием тега на шум Насрать на диты.
Кароче ты мне помочь не сможешь так и так с твоими тремя паттернами ответов - "ты делаю что-то не так" (а я делаю так), "хл нинужна" и "юзай пефт" (но как юзать с сдскриптами конечно же не напишешь). Но оффенс если че, бессмысленный диалог получился просто.
>>1337068 >Нет, этих свдшных методов слишком дохуя и они не кончаются, вон новый недавний Я про тот конкретный, для которого в коде делать ничего не надо, а только правильно нарезать модель через экстракт.
>Фулл в смысле фул фул или просто полные матрицы? Фулл в смысле фулл. А полные матрицы это что? Отдельные слои или просто большой ранг?
Потести svd нарезку, это слишком интересный метод, чтобы его скипать. Там же еще можно основу модели после нарезки заквантовать даже просто в фп8. Примерно как делается в SVDQuant, там у них это в 4бит хорошо работает при том что активации тоже в 4 бит. Главное настроить так чтобы конвертилось в фп8 только то на чем разложенная лора висит, а остальное не трогать. И некоторые атеншены наверное тоже.
Кста большие модели вы только так и будете тренить в будущем. Других адекватных способов нет. Ну если не завезут нативную тренировку в фулл 4 битах с градиентами. По сути идеальная q-lora уже доступна вообще без пердолинга.
>Сдскрипты не позволяют в фп32 ничего гонять кроме вае, да и не на моей карте полную точность дрочить. С полной точностью любые карты работают. Количество весов для которых ее стоит включить очень мало относительно всей модели, на память не должно влиять. Это по идее должно легко включаться в коде, но надо разбираться в торчах, да...
Надо новый понятный гайд на разбивку делать? А то прошлый раз походу никто не понял че это такое.
>>1337464 > ты мне помочь не сможешь Естественно, ведь ты отказываешься показать в чём у тебя проблемы. Только невнятное "ну вот я придумал задачу на ходу и обосрался что-то сделав не так". >>1337466 Может ты просто не натренил ничего, вот и нет изменений, лол. Автоматик должен писать если ключи не совпадают.
>>1337491 Хуй знает короче, закинул рабочую кохак-лору и конверт peft - и там какая-то ебанина с ключами, они вообще нихуя не совпадают... При этом ошибок не было.
>>1337491 > Естественно, ведь ты отказываешься показать в чём у тебя проблемы. Я тебе описал проблемы. Анимешнику трудно уловить суть реальных задач, понимаю, это не standing loli girl nude pussy masterpiece.
>Только невнятное "ну вот я придумал задачу на ходу и обосрался что-то сделав не так". Ок, бери лустифай, генерируй тяночьку с гейпом жопы и тренируй полнослойную лору чтобы все сохранилось изначальное в модели кроме лица и фигуры. Без результата можешь даже отвечать.
>>1337471 >Я про тот конкретный, для которого в коде делать ничего не надо, а только правильно нарезать модель через экстракт. >Потести svd нарезку, это слишком интересный метод, чтобы его скипать. Там же еще можно основу модели после нарезки заквантовать даже просто в фп8. >Примерно как делается в SVDQuant, там у них это в 4бит хорошо работает при том что активации тоже в 4 бит. Главное настроить так чтобы конвертилось в фп8 только то на чем разложенная лора висит, а остальное не трогать. И некоторые атеншены наверное тоже. >Кста большие модели вы только так и будете тренить в будущем. Других адекватных способов нет. Ну если не завезут нативную тренировку в фулл 4 битах с градиентами. >По сути идеальная q-lora уже доступна вообще без пердолинга. Я если честно нихуя не понял, где что находится и как куда чем что резать. Че читать?
>Это по идее должно легко включаться в коде, но надо разбираться в торчах, да... Ну вот по дефолту в сдскриптах нет такого.
>Фулл в смысле фулл. А полные матрицы это что? Отдельные слои или просто большой ранг? Полные матрицы это в смысле full алго из ликорисовской либы, это дримбудка в виде лора модуля, там нет никаких слоев, просто полновесные матрицы нативного размера сдхл.
>Фулл в смысле фулл. Нет, прям фулл от начала до конца с те я не делал, у меня на карту не поместится такое.
>>1337574 > Я тебе описал проблемы. Тебе уже сказали что это не проблемы, а скилл ишью. Но тебе трудно уловить что ты тупой. > лустифай > реальных задач Я так и понял что ты клован.
Короче ебал я этот peft. Для XL нет ровным счетом нихуя, есть какие-то недопиленные ошметки для древнего SD, которые проще выкинуть нахуй, чем пытаться адаптировать под XL.
>>1337677 Там всё универсальное, естественно специально под XL нет ничего. А вообще по функционалу альтернатив ему нет. Даже нормальная реализация пикрила есть.
>>1337691 Кохаковские конверты там сделаный хуй знает как. Я хз откуда они такие ключи вообще взяли - их у кохака никогда и не было. Накидал лапшу на диффузорных пайпах с загрузкой ихней лоры - вроде работает, говно. Польза пока правда от всего этого сомнительная.
>>1337677 >>1337695 Пефт универсален, его можно хоть в кохю хоть куда применить. В лапшу если вдруг нет стандартной ноды потребуется свою наколхозить, но там буквально несколько строк, ллм справится.
>>1337668 >Тебе уже сказали что это не проблемы, а скилл ишью. Но тебе трудно уловить что ты тупой. Даа, скилишью, такое скилишью что ты не можешь со своим скиллом решить простенький тренинг по реквесту. >Я так и понял что ты клован. Ой, а что не так? Специально же придумал тебе задачу под твой ежедневный дрочь на голых самок, аниме, ток без аниме, чтоб тебе веселее было. Давай-давай, тренируй консистентную тяночьку с сохранением всего, кроме лица и фигуры, я жду ;)
>>1337714 > по реквесту Не вижу реквеста. Давай датасет, показывай что у тебя самого получается. Будем обоссывать тебя. > а что не так? То что ты пишешь про одни задачи, а потом рассказываешь что не можешь решить их на подходящей модели потому что там нет порнушных лор. Я из этого делаю вывод что ты просто траллишь тред и даже не тренишь ничего.
>>1337716 >Не вижу реквеста Еще раз: бери лустифай, генерируй тяночьку с гейпом жопы и тренируй полнослойную лору чтобы все сохранилось изначальное в модели кроме лица и фигуры >Давай датасет Любую бабу с характерной внешкой бери, любой размер датасета. >показывай что у тебя самого получается Это ты покажи мне мастеркласс, у меня полностью датасетовая копирка получается вместо адаптации с тренировкой всех слоев. >То что ты пишешь про одни задачи, а потом рассказываешь что не можешь решить их на подходящей модели потому что там нет порнушных лор. Я из этого делаю вывод что ты просто траллишь тред и даже не тренишь ничего. Ты че далбаеб 20 iq? Каких порнушных лор? Я тебе дал ту же задачу, что в задаче 1 была, только упростил ее до "сохрани все с основной модели, но чтобы была тяночька и ее фигура с датасета". Давай, хуярь.
>>1337701 Погугли где используется магнитуда. Пефт наворачивается на стандартный класс модели, если ты пытаешься потом грузить его через какой-то хардкод, да еще и дору - разумеется будут ошибки. В остальном принцип весь тот же, могут отличаться только префиксы. >>1337709 Ты что несешь вообще? >>1337714 Тренираторы лоры на еот на своих 3060 - самый низший мусор, когда успели это позабыть и накопить такое чсв? Это тред для технических обсуждений а не аутотренинга.
>>1337474 Нужно комфи с нодами ModelMergeSubtract, либо на русском Вычитание моделей / Вычитание CLIP По схеме 1 получаем пустую модель. Можно проверить, должна сжиматься до сотки метров архиватором. Делаем экстракт из модели. Пик 2 слева целевая, справа пустая. Можно не делать пустую модель, а взять вместо нее базовую sdxl, но я хз что именно это даст. Изначально смысл в том чтобы поделить всю модель, а не вырезать из нее нафайнтюненый кусок. Но работать тоже должно. В этом случае для дальнейших процедур берется "новейшая" модель, та что была слева. Ранг экстракта - чем больше тем лучше. Закидываем экстракт обучаться на 1 шаг на одной картинке самом на самом низком лр (типа 0.000000000000000000000001, но не просто 0). В поле Network weights веса экстракта. Он сохранится нормальным, дальше используется только сохраненный. Пик3, делается мерж экстракта с пустой моделью. Пик4, получаем разницу между исходной моделью и "развернутым" экстрактом. Эту модель используем дальше.
Проверка того что получилось - закидываем в условный автоматик полученную модель, экстракт (сжатый, тот что после обучения на 1 шаге) загружаем как лору. Все должно работать 1 в 1 как исходная модель. При небольшом отклонении веса от 1 ломается.
Закидываем все это обучаться, как обычное продолжение тренировки лоры. В Network weights наш экстракт. В модель собственно разницу, также как и на проверке. Альфа = ранг. Ранг тот же что и у экстракта. Есть вроде кнопочка чтобы само подставилось.
>>1337766 Дополнение: Экстракция делается через SVD, берется n самых "мощных" 1-ранговых лор. SVD как бы раскладывает модель на одноранговые лоры. 1 проход - собирается самая жирная лора которая помещается в 1 ранг, остается остаток. Из этого остатка высасывается еще один ранг. Это как бы и не лоры, просто конфигурация матриц и математика такая же. Если матрица 100 на 100, то за 100 проходов ты получишь лору ранга 100, и эта лора будет работать точно также как исходная матрица. Только будет в итоге 2 матрицы 100х100, в два раза больше весов чем в исходной. Суть в итоге в том что все "одноранговые лоры" нормируются, отдельно записывается множитель, и в итоге получается что основную информацию в матрице несет меньшая часть рангов, а в остальных в основном мелкие шумные значения. Как SVD выбирает 1 самый жирный ранг - сканируется исходная матрица на похожие строки и столбцы, отдельно. Типа одной строкой будет строка которая больше всего похожа на все, также и столбец. Из этого собирается одноранговая лора, ее можно развернуть, вычесть из матрицы, и с остатком проделывать это столько раз, сколько размер матрицы. Гарантированно в конце в матрице останутся только нули. Это объяснение скорее всего неверно, так как я не знаю как работает SVD, лол. Идея метода - в том что в лору переносятся те самые жирные ранги, а в модели остается все остальное. Лора не инициализируется с нуля. Так как встроенного метода это сделать нет, и нужен этот небольшой пердолинг с экстракцией. Как раз экстрактор юзает SVD, и через разницу получаем эквивалент этой самой нарезки. Еще лора же не захватывает все слои, поэтому в весах модели останутся нетронутыми слои на которых не висит лора. Потому что мы вычли только то что в правильном экстракте было. А в нем не было слоев которые не включены в обучение.
Всякое квантование в фп8, обучение конвов, это я не делал. Для этого нужен вдумчивый пердолинг с пониманием че ты делаешь и че у тебя в весах происходит. Но зато любая ошибка сразу выльется в высокий лосс и будет видна.
Релевантные ссылки: youtube.com/watch?v=DG7YTlGnCEo Идея взята отсюда - https://www.alphaxiv.org/abs/2404.02948 Здесь похожая идея применяется для квантования https://www.alphaxiv.org/abs/2411.05007 Тренировать таким методом пока нельзя. Я пытался разобраться, если его как есть использовать, ускорение будет не в 5 раз, а в 1/4, ибо бэкпроп в фулл точности идет. А заквантовать градиент это не простая задача, тут я разбирался с ллмкой, говорит что градиент гораздо больше выбросов имеет. Можно придумать, но это уже уровень статейного ресерча. Может в фп8 нормально будет. Там еще и часто надо будет пересчитывать разложение матрицы. Кароч все сложно, но в теории можно ускорить. А вот просто сэкономить память должно быть легко. Все веса которые не попали в лору должны хорошо квантоваться. То есть можно сочетать с qlora. Как это делается я хз, в гуе есть только кнопка на fp8, что она делает я тоже хз, но надо чтобы она переводила не всю модель в фп8, а только нарезанные слои. Должно делаться минимальными усилиями, но я этого не дошел.
>>1337620 >Полные матрицы это в смысле full алго из ликорисовской либы, это дримбудка в виде лора модуля, там нет никаких слоев, просто полновесные матрицы нативного размера сдхл. Бля, я нихуя понять не могу. Пока не смотрел че делает код, но фулл матрицы это полные исходные матрицы. И обучение их это обычный файнтюн.
Ща быстро посмотрев код тоже нихуя не понял что оно делает, файнтюн исходной матрицы иди вешает лору. Надо в ллмку под пихать.
Про нарезку я вроде попытался понятно объяснить. Вот это оно >>1337691
>>1337815 >Бля ну и пердолинг. Это еще даже близко не пердолинг. К сожалению... >А с конволюшнами че делать? Тоже размер как у основного дименшена? На самом деле хз. Конвов в обычной лоре не будет все равно. А я тестил только с обычной. Но должно работать все. Главное чтобы ты вычитал по итогу ровно те слои, которые тренируются, чтобы мержер полностью рассасывал все слои в фуллмодель. Я не знаю где там что проебаться может на других алгоритмах. Вот я щас сам запустил чтобы почекать не спорол ли где хуйню. И у меня пришлось два раза пересоздавать фикс экстракта через маленький лр. То есть я закидываю в автоматик ту "разничную" модель, на которой сейчас обучается лора-экстракт, закидываю то что нагенерили первые эпохи и нихуя не работает. Со второго раза работает. Видимо где-то проебался энкодер, ибо когда я начал тренить, я поставил ему 0 лр и включил кеш энкодера. А когда фиксил экстракт этого не стояло. Можно понять еще по размеру файла. Если у тебя лора на входе больше чем лора на выходе, значит что-то проебалось. Должно быть одинаково.
Тут надо понять именно смысл того что ты делаешь, а не пытаться следовать алгоритму. Тогда пердолинг будет только в том чтобы чтобы за всем уследить что скрыто от тебя за убогим гуем.
Если ты можешь любой алгоритм загрузить как продолжение тренировки, если ты можешь его слить с моделью, то все будет работать. В первом случае косяки исправляются пересохранением через малый лр, во втором хз как отследить, не проебал ли мержер слои. А ну и сам экстрактор то у нас что что дает, от того и работаем. Хз какие алгоритмы смогут продолжить без ошибок то что он выдал. Вот это таки будет проблемой, наверное.
>>1337827 >Можно понять еще по размеру файла. Если у тебя лора на входе больше чем лора на выходе, значит что-то проебалось. Должно быть одинаково. я кароче кинул экстракт на вход в ликорисовский локон, размер получился идентичный, но точно побайтово различие 2 байта
>>1337830 >>1337834 Ну да, а что ты хотел? Для прям фулл файнтюна надо отдельно включать все что не вошло в лору. Похоже через гуй это не сделать, хз, какой там формат у ликорисов? Если файл хотя бы можно пихнуть как продолжение тренировки, то его же можно скрестить с экстрактом и все будет работать. Ллмка должна справиться с кодом, для этого ненужно в сами скрипты лезть.
>>1337835 Да... Я это вроде хотел включить, может скрин старый. По логике метода так и должно быть 1 и 0.
>>1337839 Должно быть похуй на какой, только выстави все сразу как должно быть, чтобы не проебать энкодер например. А то там код видимо дохуя умный, если энкодера нет то и зачем его выводить в веса. Но веса то у нас теперь такие, которые идеально дополняли друг-друга, а не как в обычной лоре, где ты удали любой ее слой и на работе это критично не скажется.
>>1337841 У меня сейчас несколько байт разница, не сломалось. Хотя между эпохами разницы в байтах нет, какие-то метаданные, мб.
>>1337845 На уровне ошибок квантования разница. Вообще я не всматривался, но вроде получал 1 в 1.
>>1337846 На диффе, иначе ты считай удваиваешь исходные веса. Можно их слить и вытащить обычную лору по классике. Или вычти из натрененой исходную. Можешь сразу натрененную и исходную вместе грузить, так чтобы сумма их весов была 1. Эквивалентно обычному изменению веса.
>>1337852 >>1337852 >На диффе, иначе ты считай удваиваешь исходные веса. Можно их слить и вытащить обычную лору по классике. Или вычти из натрененой исходную. >Можешь сразу натрененную и исходную вместе грузить, так чтобы сумма их весов была 1. Эквивалентно обычному изменению веса. ну я ебанул на большой скорости 3 эпохи, вроде работает, конечно все по пизде пошло с лоссом 0.2 но видно что роботает, куолити хуй знает, надо лр снижать
>>1337852 >Можно их слить и вытащить обычную лору по классике. Или вычти из натрененой исходную. не понял что с чем и как надо сливать/вычитать чтобы лору чистую получить чтобы на исходной модели работало?
>>1337766 >Закидываем экстракт обучаться на 1 шаг на одной картинке самом на самом низком лр Есть разница на чем? Или нужно тупо минимальное изменение в экстаркте?
>>1337855 Это не причем. Вообще ставь максимум ранг который влезает в память. 64 это наверное маловато для идеи метода, там много чего не захватывается. Между 100 и 200 где-то оптимум по емкости. Но для разных слоев по разному. В идеале надо настраивать по группам. Я где-то видел что вычисляли эту хуйню для каждого слоя, типа если взять % самых важных, то какой ранг их охватит.
>>1337862 Ну вливаешь в дифф-модель свой обученный экстракт, в мержере. Потом экстрактишь из этого по классике лору. Так же как получал экстракт. Только в правое поле не пустую модель а исходную нетронутую. В левое то что слил. Если через вычитание, то вычитаешь из обученного экстракта необученный. Прямо в весах, хз есть ли ноды для вычитания лор, но получить должен то же самое.
>>1337860 Да, ей разгоняться не нужно как обычной лоре с ее всратой инициализацией.
>>1337870 >интересно можно ли както веса подгрузить в кастомные алгоритмы другие или только локон доступен В какой алгоритм ты хочешь грузить? Я посмотрю. Не факт что это вообще имеет смыл.
>я еще с фиксед нойзом гоняю И с ффт? Можешь как-нибудь запилить один дифф кода этого всего? А то чет по скринам ебано разбираться.
>>1337878 Нужно не минимальное изменение, а чтобы тренер сохранил только то что он хочет сохранять. Ибо он ложит хуй на то что ты ему пытаешься дать больше слоев чем у него в конфиге прописано. Это просто подгон формата по сути.
>Можешь как-нибудь запилить один дифф кода этого всего? А то чет по скринам ебано разбираться.
Фикс нойз через хеш сумму пихать в трейн утил https://pastebin.com/FN4fxWRz добавить инициализацию аргумента фиксед нойз через parser.add_argument( "--fixed_noise", action="store_true", help="fixed noise latents", ) использовать с кешированием (хотя может работать будет и без, я не пробовал)
ффт поставить https://github.com/tunakasif/torch-frft добавить в импорты в трейн утил from torch_frft.frft_module import frft from torch_frft.dfrft_module import dfrft, dfrftmtx
ниже импортов обозначить мсе комплекс https://pastebin.com/fPVnqik1 ввести новый метод лосса в кондишнл лоссе https://pastebin.com/kvUXhnii инициализировать аргумент (просто добавить fft в лосстайп) parser.add_argument( "--loss_type", type=str, default="l2", choices=["l1", "l2", "huber", "smooth_l1", "dwt", "fft"], help="The type of loss function to use (L1, L2, Huber, or smooth L1), default is L2 / 使用する損失関数の種類(L1、L2、Huber、またはsmooth L1)、デフォルトはL2", )
>>1337884 >В какой алгоритм ты хочешь грузить? Я посмотрю. Не факт что это вообще имеет смыл. В какой покатит в принципе, но хотелось бы boft как единственный не изменяющий структуру основной модели, но скорее всего не получится подгрузить тк слои у офт с oft буковками и надо будет переименовывать чтоб сожрало и не факт что там соответствие 100%. Проверь кароче лоху например еще.
Дилору наверно тоже съест норм кстати потому что там просто на блоки разбивка идет, а оно по сути локон.
>>1337904 предполагаю что т.к. веса подгружаются в тренер и чтобы теоретически не разъебало нестабильным фп16 на различных оптимах с nan в первом шаге, то используются стабильные бф16
микродатасет на 5x2 пикч, стабильность ебовая, по ощущениям можно еще агрессивнее, дкоеф побольше и стартовый d0 выше, все равно можно суппрессировать влияние через фикс лору в процентном соотношении
>>1337884 >Вообще ставь максимум ранг который влезает в память. 64 это наверное маловато для идеи метода, там много чего не захватывается. Между 100 и 200 где-то оптимум по емкости. А есть даже 128 в память не лезет?
>>1337922 можно с fp8 base попробовать с оптимами 8бит/адафактором без памяти с фузедбакпасом опционально либо заморочиться и тренить только определенные блоки, но это тебе резать придется дополнительно фикс лору чтобы пересечения не было через слайсер отсюда https://github.com/ThereforeGames/blora_for_kohya можно не тренить TE, или тренить конв отдельно, а линейные отдельно, у тебя база все равно одинаковая стартовая, разница в раздельном использовании будет скорее всего минимальная
я вон выше 64 ранг тренил конв+линейные, ну вроде достаточно по емкости
>>1337932 >я вон выше 64 ранг тренил конв+линейные, ну вроде достаточно по емкости Бля, я сейчас попробовал 64 просто линейки и оно все равно вываливается в шару. Боюсь если я туда еще и конвов хотя бы 32 запихну - оно в 20 гигов улетит вообще...
>Проверка того что получилось - закидываем в условный автоматик полученную модель, экстракт (сжатый, тот что после обучения на 1 шаге) загружаем как лору. Все должно работать 1 в 1 как исходная модель. При небольшом отклонении веса от 1 ломается.
До этого момента все ок.
Далее беру новую базовую модель и чекпоинт для лоры, делаю 1 шаг на реальном датасете с лр 2е-5, свапаю в автоматике чекпоинт для лоры на новый после тренировки - получаю шум.
>>1338038 >>1338038 >А как ты вырезал и мержил локон? >>1338038 >Коховская портянка при мерже сыпет ошибками. Через кохуи все сделал. У меня полностью все требвания для этого говна подходят, венв не создавал для него отдельного, убрал все реквайрмент файлы из корня и запускал через python kohya_gui.py, если требовало библу и не запускалось - ставил библу через пип.
>>1338132 >Далее беру новую базовую модель и чекпоинт для лоры, делаю 1 шаг на реальном датасете с лр 2е-5, свапаю в автоматике чекпоинт для лоры на новый после тренировки - получаю шум. lr ставь 0.000000000000000000000001 после 1 шага берешь полученную лору и смердживешь с зануленной моделью из шага 1 потом делаешь шаг с пикчи 4, получаешь модель, эту модель грузишь как основу и поверх нее применяешь лору которую обучал 1 шаг
>>1338168 Ааа, бля. Я юзал экстракт и мерж для локона в кохе, сейчас попробовал стандартный и оно сработало.
>>1338176 Это я уже сделал, там проблем нет. Экстракт и базовая модель под него вместе работают без проблем, производя результат как у оригинальной модели. Проблема была в том что ебуча галка в кохе для чтения DIM из чекпоинта лоры походу не работает и пидараст результат. Убрав ее и руками задав размерность вроде получилось.
>>1338199 >Убрав ее и руками задав размерность вроде получилось. Но только с лорой. Локон вообще не тренится - за 3-4 шага улетает в NaN внезависимости от лр или оптимизаторов...
>>1338253 >Локон вообще не тренится А он и обратно не собирается, лул. После конвертации через прогон с низким лр и подготовкой экстракта эта комбинация генерит только шум.
>>1337940 включил дору, включил спид, взял датасет из 100 картинок - модель моментально сгорела (но обучилась по пути конечно), непонятно от чего сгорела, щас без спида попробую не пососать
>>1338348 >моментально сгорела кстати прогар очень своеобразный, первый раз такое наблюда., эффект как от DMD лоры с повышением цфг, то есть яркие яркие выжженые цвета, четкие формы, фон например чисто пятнистый фон а объекты в стабильности если плюсить дмд поверх то горит вдвойне
>>1338265 Вроде разобрался - дело было в конверте лоры 1-шаговым проходом. Если скипнуть энкодер (поставить нолик в лр) то результат пидарасит и оно не работает вообще. С энкодером нормально. Прогнал этот конфиг на sf продижах, на стилевом датасете - после 1000 шагов с батчем 2 какие-то изменения в лоре и гене есть, но переноса стиля там нет нихуя. Сейчас взял sf адам, взял макс лр из продижи и накинул по единичке сверху, взял совсем простой стиль - на нем даже самые всратые конфиги сходились - по логам как-то тухло. Либо надо задирать лр чтобы это говно сдвинуть с места, либо я опять где-то обосрался с подготовкой. Пока весь этот пердолинг не выглядит так, будто это того стоит...
>>1338349 Кароче синий график без спида. Со спидом очевидно зажарило сильнее, примерно до 20 шага (200 изображений => 2 эпохи) все стабильно и обучилось нормально, потом выгорело и только супрессить через основную лору. Вероятно надо вводить какую-то регуляризацию-демпнер или снижать скорость значительно. На мелких датасетах такого прогара не наблюдалось кстати с теми же настройками (кроме аккумуляции на 2 вместо 10). Теоретически если оно так хуярит новыми данными сильно, то можно сразу EQ вае пихать и оно ее быстрее перепердолит до норм состояния.
>>1338423 >Вроде разобрался - дело было в конверте лоры 1-шаговым проходом. Если скипнуть энкодер (поставить нолик в лр) то результат пидарасит и оно не работает вообще. С энкодером нормально. ну да, об этом выше челик писал, я сразу с енкодером выводил и норм
>либо я опять где-то обосрался с подготовкой. вероятно ето так
>>1338349 >кстати прогар очень своеобразный Вот чисто для примера: прогоревшая лора, дефолт ген, среднее между ними (аналог 0.5 применения новых весов) Четвертая картинка - лора до прогара концепт левый
>>1338439 кароче чето с цфг произошло и шедулером во время тренировки, если цфг снижать до 1 и уменьшать степы (изначальная модель не предназначена для такого) то там где прогары можно добиться не горящего гена,если добавить кастомный шедулер то прогары еще сильнее убираются, по факту я получил дистиллят из модели какой-то
>>1338470 да причем тут твои постфикс костыли, ты не понял смысол, модель вообще не умела в 10 шагов и 1 цфг (дефолт ген пикрел), это ебический результат да еще и случайны, получается таким образом можно реально дистилляты для любого семплера делать, а не только как у дмд с лцм с помощью модели учителя
>>1338473 Ты опять таблетки забыл принять? У тебя на пике обычная пережарка, а не дистилляция, пикрил как рандомная модель под пережаркой выглядит с 1 cfg и 10 шагами. Даже не настолько мутанты как у тебя. Тратить 30 минут на пережарку, которая делается без тренировки, и сделать даже хуже - это уже болезнь.
>>1338494 > У тебя на пике обычная пережарка, Там не пережарка, пережарка это когда мясо неконтролируемое вместо картиночки и апофеоз убитых весов в виде шума или черного экрана.
>>1338484 Стандартные вроде должны (если они включаются), те что специально для лор - нет. Дропать ранг это дропать дохуя живых важных весов. Точечное отключение весов должно быть норм. Но все равно надо аккуратно, я бы еще провел эксперименты как влияет на качество выбор весов для дропаута по дисперсии градиента. Думаю там можно найти хорошие корреляции. Типа "супервеса" трогать определенно не стоит. Их бы пошатывать чутка обратно градиенту как в статье Sharpness-Aware Minimization, только как в той где это только к нормам применяли. WD работает по принципу фулл файнтюна, если нужен эквивалент как с лорой, надо стопать тренировку и делать линейный мерж с исходными нетрененными весами. Ну там ~0.5-0.8 новых и продолжаешь тренировку (в сумме должно быть 1). Сохранять оптим наверное можно, в идеале его бы как-нибудь скорректировать чтобы долго не прогревать, ну или старт с прогрева как обычно если тебе нужен прогрев.
>>1337922 >А есть даже 128 в память не лезет? Для этого и была идея напердолить конвертер в фп8 для остатка весов на которых висит лора, чтоб не трогал остальные веса. Так и влезет все и качество должно не пострадать прям вообще.
>>1337902 >В какой покатит в принципе, но хотелось бы boft Хз, я позаебывал ллмку на тему как инициализируется эти бофты, кароч все эти мультипликативные адаптеры так не работают. Тоесть если ты делишь модель по svd и вешаешь на это бофт, получается формула бофт(модель+лора), в скобочках веса заморожены и они эквивалентны изначальной модели, отличий никаких от того если бы было бофтмодель. Вариант модель+бофт*лора не имеет смысла из-за того что входные и выходные размерности лоры такие же и размер бофта будет таким же. Единственный смысл - использовать первый вариант с квантованием в фп8, для экономии памяти.
Если в адаптере хоть где-то есть нулевые веса, которые должны расти по градиенту, чтобы адаптер постепенно включался в работу, тогда да, надо искать как можно его инициализировать весами модели и убрать нули. Для обычной лоры то понятно уже все, для мультипликативных начинается уровень статейного рисерча. Лора на конвы это обычная лора, если че. Остаются единичные веса или отдельные векторы, на них просто инициализируем нулями поправку. Им нули не мешают.
>Проверь кароче лоху например еще. Может сегодня смогу разобраться с ллмкой, а то просто читая репозиторий пока нихуя не понятно, без картинок со схемами и объяснения какие блоки где включены и т. п. Как же тяжело, я глазами этот код буду парсить целый день, что ллмка сделает за наносекунду. Хотя всю логику понимаю. Таки сказывается опыт самостоятельного кодинга максимум 500 строк лапши в одном файле да и те не на питоне.
>>1337893 Спс, пока еще не затестил... Я думаю этот ффт лосс должен хорошо зайти с eq vae. Там как раз частотный диапазон сглажен, по фурье хорошо раскладывается в отличии от дефолтного. Найди на ютубе канал Густарева, там он показывает как в фотошопе частотное разложение делать. Увидишь глазами как оно работает. И это мы пытаемся с латентами делать. Можно ноду для комфи написать, и просто прогнать вае с таким же ффт, посмотреть че на выходе дает. А может такая нода уже есть. Вейвлеты чет так и не смог понять че делают, как будто то же самое кастрированное ффт.
Я еще недавно вкидывал шизометод, до которого у меня так руки и не дошли. Можно взять экстракт из любой другой модели, типа с нуба, люстры слить, инициализировать им, а вычесть уже из нужной модели. Можно взять готовую лору и инициализировать ей. Ты его вычитаешь из модели. То есть то же самое делаешь чем мы щас занимаемся. По сумме твоя модель не изменилась, ты скомпенсировал веса. И лора теперь инициализирована не нулями. Такая интересная хуйня получается. Но может математически эквивалентна просто шуму. А может и нет, надо проверять. Это как взять наоборот самые низшие ранги, по статье это работает хуже, говорят, но именно такой шизовый вариант они не додумались проверить.
>>1338423 Ну похоже получилось накрутить лры на адаме, перенос есть, но 1к шагов на датасете в 200 пикч походу маловато.
>>1338427 >я сразу с енкодером выводил и норм А ты его тоже тренишь? У меня, если указать нолик в лр при тренировке - точно так же пидарасит результирующую лору и она генерит тупо шум. Я в итоге пока забил хуй и на низком лр его тяну.
>>1338698 >А ты его тоже тренишь? На полноценной тренировке? Нет, только юнет пока что. >если указать нолик в лр при тренировке - точно так же пидарасит результирующую лору и она генерит тупо шум. Указывай --network_train_unet_only , у тебя не инициализируются слои te при тренировке, а потом используй текстовый енкодер от фикса как на пикрел (сверху лорафикс, снизу тренинг юнета готовый)
>>1338661 >Я думаю этот ффт лосс должен хорошо зайти с eq vae. Там как раз частотный диапазон сглажен, по фурье хорошо раскладывается в отличии от дефолтного. Да, я уже тренил ффт с eq, самый быстрый вариант достижения консистентного результата был на лохе (т.к. емкость значительно выше чем у лоры обычной). С методом экстракта тоже неплохо eq кстати и результат значительно быстрее достигается даже на локоне, я тут предполагал >>1338427 что так и будет - так и получилось. Мне eq нравится своей огромной точностью и вниманием к деталям.
>Можно взять экстракт из любой другой модели, типа с нуба, люстры слить, инициализировать им, а вычесть уже из нужной модели. Прочитал несколько раз и не догнал. Экстракт из нуба, а потом вычитание этого экстракта из модели основанной на нубе? Лучше конечно такие мувы описывать по шагам чтоб понятнее было. >Можно взять готовую лору и инициализировать ей. Ты его вычитаешь из модели. Я давно пробовал такое по наиитию давно, но там вроде тренинг не запустился, вероятно из-за того что другой алго брал вместо локона.
>>1338427 кароче еще пачка инфы, попробовал несколько методов
1. если использовать рег датасет, то "кристаллизация" значений (а это именно этот эффект, который в том числе обуславливает то что лора не ломается, условно у нас значение 99.95 из 100, а додрачивая экстракт таких значений мы доводим его до 99.999, что по факту является сверхточным дубликатом матрицы да еще и с избыточным не полезным усилением), но по итогу оно все равно будет идти к уничтожению через перенасыщение. 2. Если тренировать с альфой 32 вместо дефолтной 64 (равной дименшену), то перенасыщения значений не происходит, но и буста тренинга тоже, по сути просто деление новых весов происходит, которые все еще укладываются в норму. Неэффективно, долго, лижет сосет. Так как альфа регуляризация это сорт оф нормализация с другой стороны, можно попробовать нативную нормализацию (я не пользуюсь никогда таким) чтобы сдерживать уточнение значений. Вопрос только какое потолочное значение выбирать для нормы или выбирать нормировку в оптимайзере. 3. Простое снижение скорости обновлений на порядок (1e-5->1e-6) дало стабилизацию и немного позже началось перенасыщение. То есть прихожу к выводу, что скорости обновления параметров для экстракта надо как минимум больше чем x10 раз меньше, чем обычная скорость тренировки лоры. Падения скорости адаптация кстати нет, она идет по другому, но адаптируется мощно.
>>1339296 >то "кристаллизация" значений происходит чучуть дольше по времени при приорлосс 0.1, то есть тут чуть ли не 0.01-0.001 надо ставить чтобы скомпенсировать неконтролируемо уточняющееся значение
>>1339296 Хаха бля ебать я лох, похоже нашел что именно триггерит чрезмерную сатурацию значений - дора включенная. Получается под дору надо отдельно 1 шаг фикслоры с дорой тренить, а потом производить все манипуляции дифференса. Но зато итт теперь знаю что дора может использоваться как дистилляторная функция.
>>1339254 >Прочитал несколько раз и не догнал. Экстракт из нуба, а потом вычитание этого экстракта из модели основанной на нубе? Лучше конечно такие мувы описывать по шагам чтоб понятнее было. Любой экстракт и любая модель. В методе с svd экстракт делается из той же самой модели, но тут ты берешь любой, или любую лору, так же ее фиксишь через 1 шаг и вычитаешь из модели. Опять же желательно понимать смысл действий, тогда таких вопросов не будет. Еще раз, все по той же самой схеме, только просто подменяешь экстракт другим либо готовой лорой (которые прошли фикс на 1 шаге).
Например, ты хочешь обучать поверх пони, но делаешь экстракт базовой sdxl, получается ты как бы файнтюнишь ту часть базы sdxl которая осталась в пони. Это моя наивная интерпретация, как на самом деле будет работать не знаю. Если это так работает, можно нафантазировать что можно обучить "селектор", который не будет оказывать влияние на модель, и уже обучать с ним. Может ли это ввести в модель какой-то биас, или просто шум, надо проверять. Но вообще в любом случае хоть что ты модели не подсовывай, в конечном итоге если долго обучать она перезапишет веса как ей нужно.
>Я давно пробовал такое по наиитию давно, но там вроде тренинг не запустился, вероятно из-за того что другой алго брал вместо локона. Ну и ты не вычитал лору из модели, просто тренировка готовой лоры это не то. Она же активна. Надо вычитать, тогда компенсируется.
>>1339296 >Если тренировать с альфой 32 вместо дефолтной 64 Бля, куча путанной инфы, если ты через svd это тренишь - нельзя понижать альфу. Все сломается. Если не сломалось или что-то не то делаешь или альфа не применилась. Смотри входные и выходные веса, там записаны альфы. https://netron.app/
>>1339644 Дора там тоже либо вообще не нужна, либо она криво работает. Ну хотя лишней наверное не будет если ничего не проебывается. Посмотри еще че с весами происходит если у тебя уже фикшеный формат без доры и ты включаешь дору, на одном шаге.
По доре есть такая инфа https://github.com/bmaltais/kohya_ss/issues/2705 >I'm pretty sure you can change line 4209 of sd-scripts/library/train_util.py to accelerator.load_state(args.resume, strict=False) and it'll work. !! может быть полезно чтобы корректно продолжалась тренировка любых алгоритмов.
Алсо не помню писал или нет но ффт лосс шедулить надо по таймстепам это 100%
>>1339764 В каком месте бля? >loss = mse_complex(dfrft(model_pred.float(), 0.5), dfrft(target.float(), 0.5)) Разница между таргетом и предиктом и есть лосс по спектру генерации который на разных таймстепах должен быть разным. Если тебя смущает то что это происходит в пространстве шума а не исходной картинки, то спектр и все его свойства зеркально соответствуют картинке. Выделение низких частот будет фокусировать модель на низких, высокие частоты шума соответствуют высоким частотам картинки. На разных таймстепах разный диапазон критичных ошибок и диапазон невозможных для модели предсказаний на которые ее бессмысленно дрочить. В идеале бы это логировать и добавить автоматику которая будет клампить какой-то процент ошибок по спектру, или как-то считать дисперсию ошибок, кароч там должно автоматически настраиваться и без шедулинга, интуиция тут в том чтобы модель работала всегда в диапазоне "зоны ближайшего развития" https://ru.wikipedia.org/wiki/Зона_ближайшего_развития
>>1339843 > Выделение низких частот будет фокусировать модель на низких, высокие частоты шума соответствуют высоким частотам картинки. Ещё раз - у тебя нет там картинки, у тебя шум. Высокие частоты шума не соответствуют высоким частотам картинки. Шум который ты сравниваешь, в лоссе target - это то что из генератора шума получено. Чтобы получить картинку, утрировано тебе надо вычитать аутпут модели предсказанный шум из инпута латент + шум из генератора. Чтоб сделать то что ты хочешь надо делать шаг деноизинга в шедулере шума и сравнивать непосредственно спектры картинки, но тут ты попадёшь в похожую яму что и с wavelet - всегда будет перекос куда-то там у нас перекос потому что wavelet неравномерно декомпозицию делает и надо весами потом крутить. Тогда да, надо пердолиться с подстраиванием под timesteps на глаз. Собственно fft просто работает без пердогинга как раз потому что мы никак не взаимодействуем с картинкой и её спектрами. Лучше альфу покрути вместо 0.5 повышай до 1.0 и дальше с шагом 0.5 иди вплоть до 5.0, если хочется какого-то другого результата.
>>1339909 >Ещё раз - у тебя нет там картинки, у тебя шум. >Чтобы получить картинку, утрировано тебе надо вычитать аутпут модели Вычитание никак не влияет на спектр. Нет разницы в спектре между лоссом картинка - предсказание картинки и шум - предсказание шума.
>>1339732 >Бля, куча путанной инфы, если ты через svd это тренишь - нельзя понижать альфу. Все сломается. Если не сломалось или что-то не то делаешь или альфа не применилась. Там не просто не сломалось, там обучалось вполне корректно только мееееееедленно. Эффект как примерно взять половину от фикс лоры и половину от натренированной фикслоры. Но хуйня да.
>Дора там тоже либо вообще не нужна, либо она криво работает. Ну хотя лишней наверное не будет если ничего не проебывается. Я тут еще погонял десяток тестов без доры, оно обучается нормально, но по сравнению с включенным флагом доры это ебически медленное обучение. И ладно бы медленнее, но у варианта с дорой схватывание фич еще супер быстрое, я хз как показать, оно прямо форму базовой модели корректно шейпит независимо от скорости за несколько эпох и при этом управление промтом не теряется и ноль артефактов (кроме артефактов насыщения). Выше я предполагал что дора не нормируется никак поверх свд, поэтому я просто ебанул щас нормализацию из продижи в виде флага use_stableadamw и оно с тем же последним конфигом начало выгорать медленнее заметно. Ощущение как будто дора создает какое-то новое подпространство на основе фикслоры и обучает уже его. При этом не теряется основная генеративная способность фикслоры. Наверно стоит попробовать фикслору именно с включенным флагом доры делать.
>Посмотри еще че с весами происходит если у тебя уже фикшеный формат без доры и ты включаешь дору, на одном шаге. Да, надо проверить.
>Любой экстракт и любая модель. В методе с svd экстракт делается из той же самой модели, но тут ты берешь любой, или любую лору, так же ее фиксишь через 1 шаг и вычитаешь из модели. Опять же желательно понимать смысл действий, тогда таких вопросов не будет. Еще раз, все по той же самой схеме, только просто подменяешь экстракт другим либо готовой лорой (которые прошли фикс на 1 шаге). А, я понял, ты хочешь не обучать то что было добавлено файнтюном, а обучать именно остаток базы, которая типа не обучена.
>>1340244 >Ощущение как будто дора создает какое-то новое подпространство на основе фикслоры и обучает уже его. При этом не теряется основная генеративная способность фикслоры. Гопота на это ответила что у доры вес раскладывается на норму + направление где есть некий g (скаляр/вектор масштаба), который ничем не ограничивается при тренировке. В результате DoRA быстрее сходится, но и куда легче разогнать веса.
>>1340281 Ну да какое-то различие присутствует от доры. Вот обычный фикс лоры дает на выходе примерно 497 метр как и основной экстракт. Если прогонять шаг включив дору она увеличивается до 501.
>>1340310 Кароче фикслора с дорой и последующий мердж с диффом дали чисто шум на выходе. Если менять фикслорудору на обычную фикслору, то результат точно такой же как дифф первый с первой фикслорой.
>>1340520 Да, пришли, можно тренить не с нуля, а с чужой модели, по сути тренирую полный файнтюн ток квантованный через свд декомпоз. Про дору это чисто мой выебон.
>>1340419 Кароче сменил с адаптивного продижи на адам8бит, поставил 1e-4 и оно мне 50 эпох на константе с одинаковым насыщением (оно в говне, но нормальное говно) натренировало заебато. То есть похоже адаптивный оптим не может точно управлять весами фикслоры вместе с дорой и жестко переоценивает масштаб каждую эпоху.
>>1340545 >XL тренится на 12-13 гигах. В мечтах о сладкой жизни и с болью. Я тренил на 12 гигах фул чекпоинт со всеми мокрописями чтоб ниче лишнее не вытекало из врама - медленно (потому что агрессивные настройки поментально ломают модельку), долго (6 часов на микродатасет в 10 картинок) и так себе, на экстракте в миллион раз лучше результат выходит, быстрее и удобнее.
>>1340546 Не, если у тебя карта с прям 12 физическими гигами - сразу мимо. Оно с батчем 1 жрет 12.5-13 минимум. Если хотя бы 14 - уже имеет смысл пробовать. Я на 16 гигах пока ничего лучше тюнов не видел. Экстракт близко, но все равно на уровне напердоленной доры как по мне (и хуже экстракта из тюна).
>>1340548 > Не, если у тебя карта с прям 12 физическими гигами - сразу мимо. Оно с батчем 1 жрет 12.5-13 минимум. Это на 1024, я 896 или около того ставил, такое среднее значение, не совсем 768 кал, но и не 1024. Плюс все все все существующие мокрые писи кроме разве что зеро стейджа который не смог завести адекватно.
> но все равно на уровне напердоленной доры как по мне Вообще ни разу не похожи, смысл их сравнивать если с лорадорой у тебя нулями инициализация.
>>1340550 >Плюс все все все существующие мокрые писи На самом деле там все, что нужно - это полный фп/бф16 тренинг, кеш латентов и адафактор со всеми выключенными адаптациями в fused backwards pass. Все.
>Вообще ни разу не похожи Ну я треню в основном стили и оцениваю по переносу этого самого стиля. И результаты экстракта и доры выглядят вот прям оче похожими, но все равно не дотягивают до тюнов.
>>1340244 >Там не просто не сломалось, там обучалось вполне корректно только мееееееедленно. Ну что-то не так. Я ща проверил, в выходном файле не меняется альфа. Хотя в консоли меняется. На пике лосс сверху - альфа/2, снизу 1:1. С пониженной альфой генерирует не прям шум, но почти. С 1:1 все норм, не ломается. Так что не стоит трогать альфу.
По поводу доры. Из того что я знаю как работает сам алгоритм, мешать и ломать он не должен. Но вопросы к реализации. И надо отдельно проверять дает ли это вообще хоть какие-то плюсы в нашем случае. На дефолтной лоре дору можно как-то включить? Ликорисы включать пока не хочу, пока не все не обкатано на обычной.
>>1340281 Что делает дора - нормирует матрицу весов и записывает масштабирующие коэффициенты в отдельную матрицу-вектор. На каждом шаге если градиент меняет масштаб основной матрицы, то перенормируется и остаются только относительные изменения. Коэффициенты обучаются отдельно сами по градиенту. Какого-то хуя это не эквивалентно обычной лоре и работает лучше. Коэффициенты там по выходу матриц идут. Ну типа по каналам/нейронам.
>>1340310 >Вот обычный фикс лоры дает на выходе примерно 497 метр как и основной экстракт. Если прогонять шаг включив дору она увеличивается до 501. Что в весах на выходе? Она может или сохранить масштабные матрицы как есть, или запекать их в исходные веса. В любом случае, можешь посмотреть сами веса https://netron.app/ надо найти какой столбец/строка соответствуют одному коэффициенту и можно ручками посчитать, если понимаешь. Хотя проще наверное просто слить это все дело в одну модель, вычесть ее из исходной и в там же посмотреть нули/нормы, будет все видно.
>>1340520 >Тред дня 4 не читал, к чему в итоге пришли? А то вы как-то много написали. Есть что-то прорывное? >Или можно по-старинке тренить лоры на адамW безо всяких загибонов по типу дор и ликорисов, и проблем не знать? Ты можешь тренить обычную лору, только инициализируешь по новому методу, и она работает лучше дор и ликорисов. Почти как фулл файнтюн. Было бы фулл файнтюном если объединить с ликорисами, включить в работу все оставшиеся блоки и параметры. Лично я пока только 100% проверил на обычной лоре. Тут чел проверяет на каких-то пердольных конфигах и у него постоянно что-то ломается. Я просто делаю только то что понимаю что делаю. И пока не разберусь досконально, делать не буду. Машоб это хуйня такая, если не по готовому пайплайну идешь и не понимаешь че происходит, обязательно залупа какая-нибудь случится.
>>1340552 >И результаты экстракта и доры выглядят вот прям оче похожими, но все равно не дотягивают до тюнов. Ну так конвы в экстракт не включены. Если ты его обучаешь. А в чистом экстракте из фулл файнтюна все есть.
>>1340661 >Ну так конвы в экстракт не включены. Если ты его обучаешь. Смысле? Там же экстрактится кохаковский локон с конвами, в логах экстракта прямо об этом написано. Я тренил такой же кохаковский локон, в логах тренировки точно так же написано, что конвы там билдятся и подгружаются из экстракта.
>>1340686 >Я тренил такой же кохаковский локон, в логах тренировки точно так же написано, что конвы там билдятся и подгружаются из экстракта. И у тебя есть сравнение фулл файнтюна с обучением всего экстракта с конвами?