LoRA
low-rank adaptation — лёгкий слой поверх базовой модели
LoRA (Low-Rank Adaptation) — техника тонкой настройки больших диффузионных моделей. Вместо переобучения целой модели (6+ ГБ) рядом с базой подключается компактный адаптер на 30–200 МБ, который меняет поведение под конкретный стиль, персонажа или объект. Стандарт настройки в Stable Diffusion, SDXL и Flux: обучается за час, занимает мало места, легко включается и выключается.
Коротко
Коротко. LoRA — это способ подкрутить большую диффузионную модель под конкретный стиль, персонажа или объект, не переобучая её целиком. Вместо файла на 6+ ГБ получается аккуратная поправка 30–200 МБ, которая подгружается рядом с базой. LoRA не делает модель умнее — она объясняет ей, на что обратить особое внимание.
Что это такое
Полный fine-tune меняет большой набор весов и создаёт отдельную версию базовой модели. Это даёт много свободы, но требует больше вычислений, места и данных. Если нужно добавить один стиль, персонажа или визуальный приём, такой масштаб часто избыточен.
В 2021 году Microsoft опубликовали технику Low-Rank Adaptation для языковых моделей. Через год её перенесли в диффузию, и она перевернула рынок. К 2023-му на CivitAI уже лежали десятки тысяч готовых LoRA: стили художников, типы освещения, персонажи аниме, машины, шрифты, любая узкая задача.
Чтобы понять место LoRA, удобно сравнить три способа настройки модели:
- Полный fine-tune — меняется большой набор весов базы. Подходит, когда действительно нужна отдельная версия модели и есть данные для её проверки.
- LoRA — обучается низкоранговая поправка к части весов. Обычно она заметно меньше полного checkpoint и дешевле в обучении, но разница в качестве и размере зависит от rank, выбранных слоёв и задачи.
- Textual Inversion — обучается небольшое представление нового понятия в пространстве текстового энкодера. Такой файл компактен, но управляет моделью слабее и подходит не для каждой внешности или сцены.
В живой работе LoRA — рабочая лошадка. Хочешь рисовать в стиле конкретного художника — нашёл или сделал LoRA. Хочешь, чтобы персонаж был узнаваем между кадрами — сделал LoRA на его лицо. Хочешь добавить в сцену специфичный объект, которого модель не знает, — снова LoRA.
Как это работает
Технически LoRA вставляется в каждый слой нейросети, где есть большая матрица весов W. Вместо того чтобы трогать саму W, мы добавляем рядом маленькую матрицу низкого ранга. Большая матрица 1024×1024 содержит около миллиона чисел; её можно приблизительно представить как сумму W + B·A, где B (1024×r) и A (r×1024) — две маленькие матрицы с рангом r=8–32. Параметров в B и A в десятки раз меньше — а значит, и тренировать дешевле.
Во время инференса финальный вес считается простой формулой:
output = base(x) + α × LoRA(x)
Здесь base — исходная модель, α (alpha) — коэффициент влияния, обычно 0.6–1.0. Чем больше α, тем заметнее LoRA в результате. Когда подключают несколько LoRA одновременно — поправки складываются:
output = base(x) + α₁·LoRA₁(x) + α₂·LoRA₂(x) + ...
Поэтому при двух-трёх адаптерах их часто перевешивают (0.6, 0.4, 0.3), чтобы не перенасытить картинку. С большой суммой коэффициентов модель «не справляется» и выдаёт пластмассовый, плоский результат.
Пример на практике
Видеомонтажёру нужна серия кадров одного персонажа в разных сценах. Без отдельной персонализации внешность между генерациями дрейфует: меняются черты, причёска и детали одежды. LoRA становится одним из способов добавить устойчивый визуальный признак к совместимой базовой модели.
Для обучения собирают чистые изображения с нужным разнообразием, подписывают их и отделяют проверочную выборку. Время и размер файла зависят от архитектуры, rank, целевых слоёв, разрешения, числа шагов и precision.
Адаптер подключают к той же архитектуре и подбирают strength на нескольких ракурсах. Сходство оценивают отдельно от качества сцены: слишком сильная LoRA может повторять обучающие кадры или связывать личность с одеждой и фоном.
Для стиля действует тот же принцип: датасет должен отделять повторяемую манеру от случайных объектов и композиции. Результат проверяют на сюжетах, которых не было в обучении.
С чем часто путают
- LoRA и Checkpoint — checkpoint хранит основную модель, а LoRA — компактное обновление для совместимых слоёв. Конкретный размер зависит от архитектуры и rank; адаптер без подходящей базы не работает.
- LoRA и DreamBooth — это не строгая пара «лёгкое против качественного». DreamBooth описывает способ персонализации, который можно сочетать с полным fine-tuning или PEFT; LoRA описывает параметризацию обновления. Сравнение проводят на одинаковом датасете и базовой модели.
- LoRA и Textual Inversion — TI тренирует только один новый токен в словаре модели, файл 5–50 КБ. Очень лёгкий, но и менее выразительный. LoRA меняет веса слоёв и поэтому может больше.
- LoRA для SD 1.5 и SDXL — это разные файлы под разные базовые модели. LoRA, натренированная на SD 1.5, не работает с SDXL. При переходе с одной базы на другую — нужно искать или тренировать заново.
Частые ошибки и заблуждения
- Подключить пять LoRA сразу — будет ещё лучше. Не будет. После двух-трёх адаптеров результат начинает «перенасыщаться»: модель пытается удовлетворить всё сразу и теряет общую чистоту. Цвет уплывает, текстуры пластиковые. Лучше выбрать 1–2 главных и перевешивать.
- Чем выше α, тем лучше. Часто наоборот. При α=1.0 LoRA «давит» базовую модель, появляются артефакты. На 0.6–0.8 результат обычно чище и естественнее. Для лиц 0.7–0.9 — оптимум.
- LoRA можно подключить к любой модели. Только к той же базовой архитектуре. LoRA для SD 1.5 не работает с SDXL. Для Flux нужны свои LoRA. При смене checkpoint часто нужно переподбирать α.
- Большой ранг = лучше качество. Ранг (rank) — это размерность матриц B и A. Большой ранг (128+) даёт больше выразительности, но и больше шансов на переобучение, плюс файл тяжелее. Стандарт для стилей — 16–32, для лиц и объектов — 64–128.
- LoRA делает модель «умнее». Нет. Она не добавляет ей знаний, а смещает внимание. Если базовая модель не умеет рисовать руки — никакая LoRA это не исправит.
Связанные термины
- Checkpoint — основная модель, к которой LoRA подключается.
- Stable Diffusion / SDXL / Flux — базовые модели, под которые LoRA тренируется.
- DreamBooth — альтернативная техника, тренирует модель полностью. Тяжелее и качественнее.
- Textual Inversion — самая лёгкая техника настройки, ограниченная по силе.
- LyCORIS — продвинутая модификация LoRA, чуть лучше сохраняет тонкие детали.
Частые вопросы
Сколько фото нужно для тренировки своей LoRA? Для лица — 20–40 чётких портретов с разных ракурсов, без шумного фона. Для стиля — 30–100 примеров. Для объекта или одежды — 15–30 кадров. Больше — не всегда лучше: если в датасете повторы, модель переобучится.
На каком оборудовании можно тренировать? Расход памяти и время задают базовая модель, разрешение, rank, batch size, precision и способ кэширования. При нехватке локальных ресурсов обучение можно перенести в облачную среду, сравнив полную цену эксперимента, правила хранения датасета и возможность скачать все артефакты.
Зачем нужен α-коэффициент при использовании? Он масштабирует вклад адаптера, но числовое значение не равно универсальному проценту качества. Если LoRA перетягивает результат, коэффициент уменьшают небольшими шагами при фиксированных seed и настройках. Несколько адаптеров проверяют по одному: простая сумма коэффициентов не предсказывает их конфликт.
Можно ли смешать две LoRA?
Да — их можно использовать одновременно, и поправки сложатся. Можно «склеить» в одну через скрипты вроде merge_lora — получается единый файл с двумя стилями. Качество смешения непредсказуемое: пробуйте и слушайте глаз.
В чём разница между LoRA, LyCORIS и LoHA? LyCORIS и LoHA расширяют идею низкоранговой адаптации и по-другому распределяют обучаемые параметры. Польза зависит от архитектуры и признака, который нужно выучить; более сложный адаптер не гарантирует более точный результат.
Где подключать LoRA в пайплайне?
В ComfyUI это нода Load LoRA, которую ставите между Load Checkpoint и KSampler — здесь же удобно подгружать сразу несколько LoRA в цепочку. В Automatic1111 — синтаксисом <lora:name:0.8> прямо в промпте. В Forge — тот же синтаксис плюс отдельный UI-блок.
Главное
LoRA добавляет модели новый стиль, персонажа или объект через небольшой набор обучаемых весов. Размер файла и время обучения зависят от архитектуры, датасета и настроек, а несколько LoRA могут усиливать или мешать друг другу. Рабочую силу адаптера проще подобрать серией сравнений на одном seed, чем универсальным числом.