Learning Rate
learning rate — скорость обновления весов в тренировке
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 в нейросети — то же самое. Каждый шаг тренировки:
- Модель вычисляет градиент (куда «идти» для уменьшения ошибки).
- Умножает градиент на LR.
- Сдвигает веса на этот вектор.
Если 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 оптимизатор, он сам подберёт. И главное правило: всегда смотрите на стандартные значения для своей связки «модель + метод + оптимизатор» — отступы оправданы редко.