Epoch

epoch — один полный проход по тренировочному датасету

Раздел
Обучение
Обновлено
19.06.26

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.

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

Внутри одной эпохи:

  1. Перемешивание датасета (shuffle).
  2. Разбиение на batches размера batch_size.
  3. Для каждого 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.safetensorslora-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.