Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

ЧАСТЬ 3 ==== ГИПЕРПАРАМЕТРЫ И РЕГУЛЯРИЗАЦИЯ ====

Гиперпараметры: Выпадение описаний (Caption dropout) и Перетасовка токенов (Token shuffling)

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

Выпадение описаний (Caption dropout) существует для того, чтобы научить модель реагировать на безусловную или слабо обусловленную генерацию. Это было крайне полезно при масштабном файн-тюнинге на миллионах изображений. Однако, если ваш датасет для персонажной LoRA состоит всего из 15–30 картинок, каждое пропущенное описание — это потраченный впустую шаг, на котором не закрепляется ассоциация со словом-триггером. При обучении персонажей держите этот параметр на нуле (или максимально близко к нему).

Перетасовка токенов (Token shuffling) — это наследие эпохи моделей на базе CLIP (таких как SD 1.5 и SDXL), где порядок слов имел меньший семантический вес. Современные модели на базе T5 (Flux, Chroma и большинство актуальных архитектур) крайне чувствительны к порядку слов, поскольку глубоко понимают естественный язык. Для T5 «женщина в красном платье» и «красное платье в женщине» — далеко не одно и то же. Перетасовка токенов на современных моделях в лучшем случае бесполезна, а в худшем — попросту отравляет вашу LoRA. Отключите её.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметры: Ранг (Rank / Network Dim) и Альфа (Alpha)

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

  • Используйте высокий ранг, когда нужно усвоить множество сложных деталей.
  • Используйте низкий ранг, когда задача максимально проста.

Почему это важно:

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

Для персонажной LoRA, обучающейся только лицу, достаточно небольшого ранга — например, 16. Для LoRA в полный рост потребуется как минимум 32, а возможно и 64, иначе модели будет сложно правильно усвоить анатомию тела. Любая LoRA, добавляющая НОВЫЙ концепт (а не просто уточняющая существующий), требует дополнительного пространства, поэтому ставьте ранг выше стандартного. Мульти-концептуальным сетям также нужен высокий ранг.

Если сомневаетесь, ранг 32 отлично подойдет для большинства задач.

Альфа (Alpha) Это вторичный параметр, идущий рука об руку с рангом. Он используется для масштабирования силы вашей LoRA. В большинстве случаев его настраивают так:

  • Альфа = Ранг: Стандартная настройка.
  • Альфа = Половина ранга: Ваша LoRA получится более гибкой и податливой, но для достижения сходимости (сonvergence) может потребоваться больше шагов.

В AI-Toolkit можно задать альфу независимо от ранга прямо в конфигурационном YAML-файле:

network: type: lora linear: 32 linear_alpha: 16

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметр: Повторы (Repeats, для каждого датасета)

В процессе обучения алгоритм сотни раз накладывает шум и восстанавливает изображения из вашего датасета, сравнивая результаты и извлекая из них уроки. Параметр «повторы» (repeats) имеет смысл применять лишь тогда, когда в датасете есть кадры, которые тренер должен «видеть» с разной частотой. Судите сами:

Каждый раз, обрабатывая изображение, нейросеть закрепляет полученный из него сигнал. Если обрабатывать его недостаточно часто (недообучение), модель так и не поймет, как это рисовать. Если обрабатывать его слишком часто (переобучение), модель станет жесткой и «забудет», как рисовать всё остальное. Ключ к успеху — найти золотую середину.

Вы тренируете модель, которая уже обладает огромным багажом знаний (ведь она обучена на миллионах изображений). LoRA лишь пытается «настроить» её на генерацию ваших конкретных концептов. Поэтому, когда вы учите её тому, что она уже знает, дойти до золотой середины можно за небольшое количество шагов. Но если вы учите её тому, чего она НЕ знает, шагов потребуется значительно больше.

Именно здесь вступает в игру параметр повторов, привязанный к каждому датасету. Есть две основные ситуации, где его нужно использовать с умом:

а) Чтобы сбалансировать однообразный датасет

  • В идеале датасет должен содержать равное количество разных ракурсов, уровней зума и т.д.
  • Если у вас всего пара фотографий в профиль, но целая гора снимков анфас, вы рискуете переобучить вид спереди и недообучить профиль.
  • Вы можете выделить «редкие» ракурсы в отдельный датасет и задать для него, скажем, в 2-3 раза больше повторов по сравнению с основным. Это выровняет баланс.

б) Чтобы уравновесить знакомые элементы с незнакомыми

  • Модель должна в 5 раз чаще видеть изображения того, чего она не знает, по сравнению с тем, что ей знакомо.
  • Например, если вы пытаетесь добавить NSFW-кадры в цензурированную модель, ей потребуется гораздо более интенсивное воздействие, чтобы усвоить эти новые концепты.
  • Используйте больше повторов для неизвестных элементов, чтобы избежать их недообучения на фоне стандартных данных.
Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметр: Размер батча (Batch) и Накопление градиента (Gradient Accumulation)

Чтобы учиться, тренер LoRA берет изображение из датасета, зашумляет его и пытается воссоздать исходную картинку из хаоса. Если вы используете размер батча 2, он проделывает эту работу одновременно для двух изображений, а затем усредняет полученный опыт. В долгосрочной перспективе это повышает качество, так как помогает модели не зацикливаться на «экстремальных» выбросах.

Батч (Batch) означает параллельную обработку изображений. Это требует колоссальных затрат VRAM и вычислительной мощности GPU. Количество шагов не увеличится, но каждый шаг станет дольше. В теории обучение идет быстрее, поэтому общее число шагов можно сократить.

Накопление градиента (Gradient accumulation) означает последовательную обработку изображений, одно за другим. Это не требует дополнительной VRAM, но каждый шаг будет пропорционально длиннее.

Для большинства пользовательских видеокарт, где объем памяти (VRAM) — главное ограничение, оптимальным выбором станет накопление градиента от 2 до 4. Вы получите все преимущества усреднения без перегрузки памяти.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметр: LR (Learning Rate / Скорость обучения)

LR — это параметр номер один, от которого зависит весь успех обучения вашей LoRA.

Представьте, что вы копируете картину, разбив её на мелкие квадраты и перенося на холст по одному квадратику за раз. Размер этого квадрата — и есть LR: насколько большой «кусок» информации нейросеть пытается усвоить за один раз.

  • Если «кусок» огромный, вы будете учиться семимильными шагами (потребуется меньше итераций)... но знания будут грубыми. Мелкие детали потеряются.
  • Если «кусок» крошечный, вы ювелирно проработаете самые тонкие нюансы... но на это уйдет целая вечность (потребуется уйма шагов).

Некоторые модели чувствительнее к высокому LR, чем другие. На Qwen-Image можно поставить LR 0.0003, и всё пройдет гладко. Попробуйте использовать тот же LR на Chroma, и вы уничтожите свою LoRA за тысячу шагов.

Слишком высокий LR — главная причина, по которой LoRA не сходится к нужному результату. Однако учтите: каждый раз, уменьшая LR вдвое, вам придется компенсировать это удвоением количества шагов. Если при LR 0.0001 какой-то модели нужно 3000 шагов, то более нежной модели может понадобиться LR 0.00005, но при этом придется сделать уже 6000 шагов.

Начните с LR 0.0001 — это достаточно безопасная отправная точка.

Планировщик скорости обучения (LR Scheduler) Один из лучших способов получить отличный результат без лишней головной боли — использовать планировщик LR. Этот изящный инструмент будет автоматически снижать скорость обучения по мере прогресса. Представьте, что вы высекаете скульптуру из мрамора: сначала вы берете широкое долото и тяжелый молоток, чтобы быстро отсечь лишние глыбы. Но чем ближе вы к финалу, тем ювелирнее должна быть работа. В какой-то момент придется взять тончайший резец, чтобы не испортить произведение искусства. Планировщик проследит за тем, чтобы ваша модель плавно перешла на более низкий LR («взяла тонкий резец») на поздних этапах обучения.

В AI-Toolkit включить планировщик можно прямо в дополнительных свойствах YAML-конфига, в разделе training:

train: lr_scheduler: "cosine"

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметр: Таймстеп (Timestep / Шаг времени)

В процессе диффузионного обучения модель учится очищать изображения от шума разной интенсивности — от почти идеальных картинок до абсолютного визуального хаоса. Каждый уровень зашумленности (таймстеп) учит модель чему-то своему:

  • Высокие таймстепы (сильный шум): Модель изучает глобальную структуру и общую композицию — «Это вообще лицо или пейзаж?»
  • Средние таймстепы: Модель усваивает семантическую идентичность и конкретные черты — «Чье это лицо? Каковы конкретные пропорции?»
  • Низкие таймстепы (слабый шум): Модель фокусируется на мелких деталях и текстурах — «Насколько острые здесь края? Как выглядит текстура этой кожи?»

По умолчанию алгоритм обучается на всех таймстепах равномерно. Но вы можете это изменить — именно за это и отвечает параметр Timestep. При тренировке персонажных LoRA идентичность формируется именно в среднем диапазоне, поэтому львиную долю усилий стоит направить туда.

В AI-Toolkit для персонажных LoRA рекомендуется распределение таймстепов по сигмоиде (sigmoid). Это концентрирует вероятность обучения вокруг средних шагов в форме плавной колоколообразной кривой, естественно приглушая обе крайности. Существуют и другие распределения под иные задачи: смещение к высоким таймстепам полезно для стилевых LoRA (влияющих на общую композицию), а смещение к низким — для работы с текстурами или сверхтонкими деталями.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Гиперпараметр: Оптимизатор (Optimizer)

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

  • AdamW — самый популярный оптимизатор для обучения LoRA. AdamW8bit — его экономная к памяти версия, потребляющая меньше VRAM при минимальных потерях качества. Для большинства домашних ПК AdamW8bit — это золотой стандарт и лучшая отправная точка. Я получаю превосходные результаты с AdamW, если не забываю использовать LR Scheduler для правильного затухания скорости со временем.
  • Prodigy — оптимизатор, пытающийся управлять LR автоматически. Он стартует со значения LR 1.0 (это просто плейсхолдер), а затем динамически его корректирует. Если вы не знаете, что делать со скоростью обучения, или работаете с очень капризными моделями, это может быть интересным выбором.

Большинство неудач при обучении LoRA связаны не с оптимизатором, а с датасетом, описаниями или неправильным LR. Если что-то не работает, смена оптимизатора — это последнее, что стоит пробовать.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Как мониторить процесс обучения

Многие отключают генерацию промежуточных примеров (сэмплинг), так как это сильно затягивает процесс. Однако, если вы не гуру, знающий всё наперед, это плохая идея. Сэмплы помогают понять, что вообще происходит и работает ли обучение в принципе.

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

  • Один базовый промпт, чтобы проверить, усвоила ли модель слово-триггер в стандартной ситуации.
  • Один промпт с другого ракурса и с другим уровнем зума — это поможет убедиться, что все углы усваиваются корректно (если при нестандартных ракурсах лицо «плывет», значит, есть недообучение, или в датасете не хватает повторов для этого угла).
  • Один промпт с акцентом на те части тела или элементы, которые модель изначально не знала (например, цензурированные детали) — пока вы видите анатомические искажения, модель недообучена.
  • Один промпт с деталью, отсутствующей в вашем датасете (например, синие волосы). Если они внезапно окрашиваются в тот же цвет, что и на основных исходниках, вы поймали переобучение (overfitting).
  • Один промпт с кадром в полный рост для проверки пропорций.
  • Один промпт с общим планом издалека, чтобы убедиться, что модель не «забыла» разные типы композиции и способна нарисовать вашего объекта на расстоянии.

Суть вы уловили: тестируйте, тестируйте и еще раз тестируйте, чтобы вовремя увидеть проблему и исправить её. Как правило, если вы замечаете, что сэмплы внезапно перестали сходиться или вообще начали деградировать — немедленно останавливайте процесс: ваш LR слишком высок, и он, скорее всего, безвозвратно портит LoRA.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры

Когда остановить обучение, чтобы избежать переобучения (Overtraining)

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

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

Классическая прогрессия переобучения выглядит так:

  1. LoRA начинает улучшаться.
  2. Достигает хорошего баланса между сходством и гибкостью.
  3. Начинает выглядеть «пережаренной» или излишне резкой (crispy).
  4. Теряет гибкость, перестает слушаться креативных промптов.
  5. Окончательно деградирует в качестве.

Использование датасета регуляризации

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

Это также становится проблемой при создании мульти-концептуальных LoRA. Модель должна четко понимать, как выглядит триггер А, как выглядит триггер Б, и что такое «ни А, ни Б».

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

Вам потребуется как минимум 1 изображение для регуляризации на каждые 2 изображения из основного датасета, обрабатываемые в процессе обучения (с учетом повторов). Если вы заметили, что ваша готовая LoRA ощутимо искажает других женщин в сгенерированных сценах — увеличьте объем регуляризации. Если же ваш персонаж получается тусклым или нестабильным — уменьшите его.

Базовое руководство по ключевым концепциям обучения LoRA — Часть 3: Гиперпараметры
3
1