LoRA
low-rank adaptation — лёгкий слой поверх базовой модели
LoRA (Low-Rank Adaptation) — техника тонкой настройки больших диффузионных моделей. Вместо переобучения целой модели (6+ ГБ) рядом с базой подключается компактный адаптер на 30–200 МБ, который меняет поведение под конкретный стиль, персонажа или объект. Стандарт настройки в Stable Diffusion, SDXL и Flux: обучается за час, занимает мало места, легко включается и выключается.
Коротко
Коротко. LoRA — это способ подкрутить большую диффузионную модель под конкретный стиль, персонажа или объект, не переобучая её целиком. Вместо файла на 6+ ГБ получается аккуратная поправка 30–200 МБ, которая подгружается рядом с базой. LoRA не делает модель умнее — она объясняет ей, на что обратить особое внимание.
Что это такое
Полный fine-tune диффузионной модели — это часы тренировки на видеокарте, гигабайты VRAM, итоговый файл на 6 ГБ. Для рекламной студии, у которой свой стиль и пятьсот персонажей, — оправдано. Для всех остальных задач это слишком дорого и медленно.
В 2021 году Microsoft опубликовали технику Low-Rank Adaptation для языковых моделей. Через год её перенесли в диффузию, и она перевернула рынок. К 2023-му на CivitAI уже лежали десятки тысяч готовых LoRA: стили художников, типы освещения, персонажи аниме, машины, шрифты, любая узкая задача.
Чтобы понять место LoRA, удобно сравнить три способа настройки модели:
- Полный fine-tune — тренируются все веса базы. Лучшее качество, но файл на 6 ГБ и часы вычислений. Имеет смысл для крупных задач, например для отдельного checkpoint целой студии.
- LoRA — тренируется маленькая поправка к базе. 85–90% качества fine-tune, файл в 30 раз меньше, тренировка в 5–10 раз быстрее. Золотая середина для большинства задач.
- Textual Inversion — тренируется только один новый «токен» в словаре модели. Файл 5–50 КБ, тренировка минут. Очень ограниченные возможности — годится для абстрактных стилей, плохо для лиц.
В живой работе 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 задача почти не решается: даже с одним и тем же seed и одинаковым промптом сходство пропадает через 5–10 кадров. Лицо уплывает, причёска меняется, нос становится чуть другим. Триста попыток, отбор вручную, склейка в графическом редакторе — и неделя работы.
С LoRA путь короче. Тренировка занимает 30–60 минут: 25–30 чётких портретов с разных ракурсов загружаются в kohya_ss, ставится Train, можно идти пить кофе. Через час готов файл personname.safetensors весом 100 МБ.
Подключаешь его при генерации с весом 0.8, пишешь промпт про сцену — и модель сама держит лицо. Сходство 90%+, ракурсы и одежду можно крутить как угодно. Пятьдесят кадров — за вечер, не за неделю.
Аналогичный сценарий с LoRA на стиль: художник дал 40 эскизов, через час у вас стиль-адаптер, и любая генерация выходит в нужной манере.
С чем часто путают
- LoRA и Checkpoint — checkpoint это полная модель (6+ ГБ), LoRA это поправка к ней (100 МБ). Checkpoint работает сам по себе, LoRA — только в паре с базой. Когда вы скачиваете «модель» с CivitAI, это обычно checkpoint. Когда «адаптер» — это LoRA.
- LoRA и DreamBooth — обе техники настраивают модель под конкретный объект или лицо. DreamBooth тренирует всю модель, файл 6 ГБ, дольше, но качество выше. LoRA тренирует поправку, файл 100 МБ, быстрее, чуть проще в качестве. Для большинства задач 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 кадров. Больше — не всегда лучше: если в датасете повторы, модель переобучится.
На каком оборудовании можно тренировать? Для SDXL минимально комфортно — RTX 3060 12 GB. Для SD 1.5 хватит RTX 3060 8 GB. Тренировка длится 30 минут — 3 часа в зависимости от датасета и количества эпох. Онлайн-сервисы (Replicate, CivitAI Trainer) позволяют тренировать без своей видеокарты — за 1–3 доллара.
Зачем нужен α-коэффициент при использовании? Чтобы регулировать силу влияния. 1.0 — полная сила, 0.5 — половина. Полезно, когда LoRA «перетягивает» картинку: ставите 0.7 и оставляете модели больше свободы. Для смешивания нескольких LoRA коэффициенты нормализуют (сумма ≤ 1.0–1.5).
Можно ли смешать две LoRA?
Да — их можно использовать одновременно, и поправки сложатся. Можно «склеить» в одну через скрипты вроде merge_lora — получается единый файл с двумя стилями. Качество смешения непредсказуемое: пробуйте и слушайте глаз.
В чём разница между LoRA, LyCORIS и LoHA? Это семейство техник на одной идее. LyCORIS и LoHA — модификации LoRA, которые тренируют чуть больше параметров и иногда лучше держат детали. На практике для большинства задач хватает обычной LoRA, а различия видны только в специфичных случаях.
Где подключать LoRA в пайплайне?
В ComfyUI это нода Load LoRA, которую ставите между Load Checkpoint и KSampler — здесь же удобно подгружать сразу несколько LoRA в цепочку. В Automatic1111 — синтаксисом <lora:name:0.8> прямо в промпте. В Forge — тот же синтаксис плюс отдельный UI-блок.
Главное
LoRA — самый практичный способ настроить диффузионную модель под себя. Час тренировки, файл 100 МБ — и у вас на руках персонаж, стиль или объект, который модель «помнит». Правило большого пальца: не больше двух-трёх LoRA одновременно, α в районе 0.7–0.9, ранг 16–32 для стилей и 64–128 для лиц. Этого достаточно, чтобы покрыть 90% задач коммерческой генерации.