Learning Rate

learning rate — скорость обновления весов в тренировке

Раздел
Обучение
Сокращ.
LR
Обновлено
19.06.26

Learning Rate (LR) — самый важный параметр любой тренировки: скорость, с которой модель «делает шаг» в сторону уменьшения ошибки. Слишком низкий — тренировка идёт вечно и не догоняет до качества. Слишком высокий — модель «прыгает» мимо оптимума, LoRA получается нестабильной. Стандарт для LoRA на SDXL — 1e-4 (0.0001), для DreamBooth — 1e-6 (0.000001). На FLUX обычно 1e-4 для LoRA. Часто сочетается с шедулером (cosine, constant).

Коротко

Коротко. Learning Rate — это «насколько большой шаг» модель делает при каждом обновлении весов. Слишком маленький — учится медленно и недодходит. Слишком большой — «промахивается» мимо оптимума, тренировка нестабильна. Для LoRA на SDXL стандарт 1e-4, для DreamBooth 1e-6. Часто работает в паре с шедулером (cosine / constant) и оптимизатором (AdamW8bit, Prodigy).

Что это такое

Представьте, что вы спускаетесь с горы в туман. У вас есть направление вниз (это градиент), и нужно решить: делать большие шаги или маленькие. Большие — быстрее, но рискуете провалиться. Маленькие — безопаснее, но дольше.

Learning Rate в нейросети — то же самое. Каждый шаг тренировки:

  1. Модель вычисляет градиент (куда «идти» для уменьшения ошибки).
  2. Умножает градиент на LR.
  3. Сдвигает веса на этот вектор.

Если LR=0.0001 (1e-4), за один шаг каждый параметр LoRA меняется на маленькую долю градиента. Если LR=0.01 — на большую долю. Слишком большой LR может «выкинуть» веса в плохое состояние, из которого модель не восстанавливается.

К 2026-му стандартные значения для разных задач:

  • LoRA на SDXL — 1e-4 (0.0001) с шедулером cosine.
  • LoRA на FLUX — 1e-4 или 5e-5 с constant.
  • LoRA на SD 1.5 — 5e-5 — 1e-4.
  • DreamBooth (full fine-tune) — 1e-6 для SD 1.5, 2e-6 для SDXL.
  • Textual Inversion — 5e-3 (значительно выше — учим только эмбеддинг).

Как это работает

Обновление весов на каждом шаге:

new_weight = old_weight − learning_rate × gradient

Это формула SGD (стохастического градиентного спуска). Современные оптимизаторы (AdamW, Lion, Prodigy) — варианты той же идеи с разными модификациями.

Learning Rate Scheduler — функция, которая меняет LR в процессе тренировки:

  • Constant — LR не меняется. Простой и предсказуемый.
  • Cosine — LR плавно снижается по косинусной кривой. Стандарт для LoRA. Помогает «осесть» в конце.
  • Linear — LR снижается по прямой.
  • Polynomial — LR снижается по полиному (степень настраивается).
  • Warmup + Cosine — сначала LR растёт от 0 до пика (warmup, обычно 5-10% шагов), потом косинусно падает.

Для LoRA лучший выбор — cosine или constant_with_warmup. Для DreamBooth — обычно constant без шедулинга.

Оптимизатор — связан с LR неразрывно:

  • AdamW8bit — стандарт kohya_ss, экономит память. LR 1e-4 — 5e-4 для LoRA.
  • Lion — современная альтернатива AdamW, требует в 3–5 раз меньший LR (3e-5).
  • Prodigy — автоматически подбирает LR (можно ставить 1.0, оптимизатор сам найдёт). Удобно для новичков.

Пример на практике

Тренер LoRA, 40 портретов, SDXL Juggernaut. Тренировка не идёт хорошо: после 10 эпох сходство 50%, лицо «уплывает».

Проверяет параметры:

  • learning_rate: 1e-5 — это в 10× меньше стандарта.
  • optimizer: AdamW8bit.
  • lr_scheduler: cosine.

Меняет learning_rate: 1e-4 (стандарт). Перезапускает тренировку. После 10 эпох сходство 90%. Проблема была — слишком низкий LR.

В другом проекте — LoRA тренируется, но результат «дёргается»: разные кадры одной эпохи дают резко разные стили. Тренер смотрит — learning_rate: 5e-3, в 50× больше стандарта. Меняет на 1e-4 — стабильность возвращается.

Универсальное правило:

  • Сходство «не догоняет» → LR увеличить (×2–5).
  • Тренировка нестабильна → LR уменьшить (÷2–5).
  • Не знаете → берите стандарт под задачу.

С чем часто путают

  • Learning Rate и Epoch — LR это шаг обновления, Epoch — количество проходов по датасету. Параллельные параметры, оба влияют на итог.
  • Learning Rate и Batch Size — batch это сколько примеров за шаг. При увеличении batch обычно LR тоже надо увеличить (но не пропорционально).
  • Learning Rate и Loss — Loss это «насколько модель неправа сейчас». LR — насколько сильно идти в направлении уменьшения Loss.
  • Learning Rate и Weight Decay — оба регулируют обновление весов, но разные механизмы. WD «тянет» веса к нулю; LR определяет шаг обучения.

Частые ошибки и заблуждения

  • «Большой LR ускоряет тренировку». До определённой границы. После — модель «прыгает» мимо оптимума, никогда не сходится.
  • «1e-4 это лучший LR для всего». Только для AdamW LoRA. Для Lion это слишком высоко. Для DreamBooth — слишком высоко. Под каждую связку оптимизатор+метод свой LR.
  • «Если LR не понятен — поставьте 1e-5». Слишком безопасно. Часто LoRA на 1e-5 «не догоняет», и тренер думает, что метод плохой.
  • «Cosine всегда лучше constant». Не всегда. Для коротких тренировок constant иногда стабильнее. Cosine хорош для 1500+ шагов.
  • «Можно менять LR во время тренировки». Можно через ручную остановку и resume, но это редко делают. Шедулер делает это автоматически.

Связанные термины

  • Optimizer — алгоритм, использующий LR (AdamW, Lion, Prodigy).
  • LR Scheduler — функция, которая меняет LR в процессе.
  • Epoch / Step — единицы тренировки, на каждом шаге применяется LR.
  • Batch Size — связан с LR через scaling rules.
  • Warmup — начальная фаза с медленно растущим LR.
  • Weight Decay — параллельный параметр регуляризации.

Частые вопросы

Какой LR выбрать для LoRA SDXL? Стандарт — 1e-4 с cosine scheduler и AdamW8bit. Если результат плохой — пробуйте 5e-5 (медленнее) или 2e-4 (быстрее).

Что такое 1e-4? Это научная запись числа: 1 × 10⁻⁴ = 0.0001. Удобно для маленьких чисел. 1e-5 = 0.00001. 5e-4 = 0.0005.

Зачем шедулер? В начале тренировки модель «находит» направление — нужен большой шаг. В конце «оседает» в оптимуме — нужен маленький шаг. Шедулер автоматически снижает LR ближе к концу.

Prodigy действительно автоматичен? Да. Ставите learning_rate: 1.0, и Prodigy сам подбирает реальный LR за первые несколько шагов. Результат обычно хороший, но иногда уступает ручной настройке на 5–10%.

FLUX-LoRA — какой LR? 1e-4 с constant или cosine. Иногда 5e-5 для более стабильного, но медленного обучения. Меньше зависит от типа объекта, чем SDXL.

Можно ли тренировать с LR=0? Технически да — модель не обновит веса. Бесполезно, но кодом не запрещено. Иногда используют для warmup-фазы.

Главное

Learning Rate — главный параметр любой тренировки. Слишком низкий — не доучитесь. Слишком высокий — нестабильно. Стандарт для LoRA SDXL — 1e-4 с AdamW8bit и cosine scheduler. Для DreamBooth — 1e-6. Для Textual Inversion — 5e-3. Если не знаете — используйте Prodigy оптимизатор, он сам подберёт. И главное правило: всегда смотрите на стандартные значения для своей связки «модель + метод + оптимизатор» — отступы оправданы редко.