Epoch
epoch — один полный проход по тренировочному датасету
Epoch (эпоха) — единица тренировки нейросети: один полный проход по всему датасету. Если в датасете 50 картинок и batch size = 2, одна эпоха — это 25 шагов. Стандарт для LoRA в 2026 году — 5–20 эпох; для DreamBooth — 8–15. В kohya_ss и AI-Toolkit обычно сохраняют чекпоинты каждой эпохи, чтобы можно было выбрать оптимальную точку до переобучения. Главный спутник параметра — learning rate.
Коротко
Коротко. Epoch — это один проход модели по всему датасету при тренировке. Если у вас 50 фотографий — 1 эпоха значит модель увидела каждую по одному разу. Стандарт для LoRA в 2026 году — 5–20 эпох. Каждая эпоха обычно сохраняется как отдельный чекпоинт: позже выбирается тот, где качество максимально, до переобучения.
Что это такое
Иллюстратор тренирует LoRA на 30 портретах. В kohya_ss ставит «num_epochs: 12» и запускает тренировку.
Что происходит:
- Эпоха 1: модель видит каждую из 30 картинок один раз. Только начинает «понимать» концепт. Файл
lora-e01.safetensorsсохранён. - Эпоха 5: концепт уже выучен на 70%. Лицо распознаваемо, мелкие детали ещё «уплывают».
- Эпоха 8: оптимум. Лицо чёткое, модель не забыла остальные знания.
- Эпоха 12: переобучение. LoRA «прилипла» к датасету и плохо работает на новых сценах.
После тренировки иллюстратор пробует все 12 чекпоинтов на тестовых промптах. Выбирает 8-ю — самый чистый баланс «выучено vs гибкость».
Это и есть смысл эпох: разделить тренировку на удобные «контрольные точки» и сохранить промежуточные результаты. Стандарт LoRA — 5–20 эпох, в зависимости от датасета и learning rate.
Как это работает
Внутри одной эпохи:
- Перемешивание датасета (shuffle).
- Разбиение на batches размера
batch_size. - Для каждого batch:
- Forward pass: модель предсказывает шум на зашумлённой картинке.
- Loss: разница между предсказанным и реальным шумом.
- Backward pass: вычисление градиентов.
- Optimizer step: обновление весов LoRA / модели.
Если в датасете 50 картинок и batch_size = 2, одна эпоха — 25 шагов оптимизатора. При 10 эпохах — 250 шагов общим итогом.
В kohya_ss параметры тренировки выглядят так:
max_train_epochs: 12 — сколько эпох.train_batch_size: 2 — размер batch.save_every_n_epochs: 1 — сохранять чекпоинт каждую эпоху.learning_rate: 1e-4 — главный параллельный параметр.
Стандартные диапазоны (2026):
- LoRA для SDXL — 8–15 эпох, batch 1–2.
- LoRA для FLUX — 6–12 эпох, batch 1.
- DreamBooth — 5–10 эпох, batch 1 (SDXL) или 4 (SD 1.5).
- Style-LoRA — 10–25 эпох (нужно много примеров стиля).
Пример на практике
Тренер LoRA, 30 портретов актёра, SDXL Juggernaut.
Запускает на 12 эпох, save_every_n_epochs=1. Тренировка занимает ~80 минут на RTX 4090. В папке вывода 12 файлов: lora-e01.safetensors … lora-e12.safetensors.
После — генерирует одну и ту же тестовую картинку с каждым чекпоинтом, одинаковый seed и промпт. Смотрит:
- e01: ничего не выучено, лицо размытое.
- e03: лицо начинает быть похожим.
- e06: 70% сходство, мягкая интеграция со сценой.
- e08: 90% сходство, лицо чёткое, фон гибкий. → выбирает её.
- e10: 95% сходство, но фон уже «прилипает» к тренировочным.
- e12: переобучение, лицо не уплывает только в близких ракурсах.
Финал — lora-e08.safetensors (100 МБ) на CivitAI или для коммерческой работы.
С чем часто путают
- Epoch и Step — step это одно обновление весов (один batch). Epoch — N steps, где N = размер датасета / batch_size.
- Epoch и Iteration — формально iteration = step. В обиходе путают.
- Training epoch и Inference step — training epoch это часть обучения. Inference step (sampling step) — шаг диффузии при генерации. Совершенно разные понятия.
- Epoch и Run — run — это вся тренировка целиком (от 1 до N эпох). Epoch — одна итерация датасета.
Частые ошибки и заблуждения
- «Больше эпох = лучше LoRA». Только до определённой точки. Дальше — переобучение: модель прилипает к датасету и теряет гибкость.
- «Один и тот же датасет требует одного числа эпох». Зависит от learning rate, batch size и сложности концепта. Лицо обычно учится за 8–12 эпох, стиль — за 15–20.
- «Можно сократить тренировку, увеличив batch». Можно, но нужно увеличить и learning rate пропорционально, иначе модель «недоучится».
- «Если результат плохой, добавьте эпох». Часто наоборот. Если LoRA «жесткая» и не гибкая — нужно МЕНЬШЕ эпох или меньшего LR.
- «Эпоха и шаг — одно и то же». Нет. Шаг — один batch. Эпоха — все batches датасета подряд.
Связанные термины
- Step / Iteration — единица оптимизации внутри эпохи.
- Batch Size — сколько примеров за один step.
- Learning Rate — параллельный параметр, влияет на скорость обучения.
- Overfitting — что случается после слишком многих эпох.
- Checkpoint — сохранённый файл LoRA/модели каждой эпохи.
- kohya_ss — главный инструмент LoRA-тренировки с параметром num_epochs.
Частые вопросы
Сколько эпох для LoRA? Стандарт: 8–15 для лица или объекта, 10–25 для стиля. Опирайтесь на тестовые промпты, не на сухие числа.
Почему ставят save_every_n_epochs=1? Чтобы иметь промежуточные чекпоинты. После тренировки тестируете каждый и выбираете оптимальный. Без этого приходится тренировать заново с другим num_epochs.
Как понять, что хватит эпох? Когда тестовый промпт с каждым чекпоинтом начинает теряет «гибкость» — не реагирует на новые сцены, фон, освещение. До этого момента модель ещё учится; после — переобучается.
Связаны ли эпохи с числом примеров?
Косвенно. 1 эпоха = N_images / batch_size шагов. Маленький датасет → быстрая эпоха, нужно больше эпох. Большой → медленная эпоха, нужно меньше.
Можно ли продолжить тренировку с конкретной эпохи?
В kohya_ss есть параметр resume_from: указываете путь к чекпоинту, и тренировка продолжается с этого момента.
Эпохи у DreamBooth и LoRA разные? По сути та же концепция. У DreamBooth обычно меньше эпох (5–10), потому что модель тяжелее и одно обновление весит больше. LoRA можно тренировать дольше без риска «свалить» модель.
Главное
Epoch — это «полный проход по датасету» в тренировке. Главный планировочный параметр LoRA и DreamBooth: 5–20 эпох под большинство задач. Чекпоинт каждой эпохи помогает выбрать оптимальную точку до переобучения — пробуйте все на тестовых промптах. Шаг (step) — это единица внутри эпохи, не альтернатива ей. В kohya_ss параметр называется max_train_epochs, в AI-Toolkit для FLUX — train_epochs.