Руководства по обучению LoRA с AI Toolkit

Почему отключение Gradient Checkpointing вызывает OOM в AI Toolkit

Практическое руководство по gradient checkpointing в AI Toolkit: как он влияет на VRAM, когда безопаснее оставить его включённым и какие настройки изменить перед экспериментами с GC OFF.

Обучайте диффузионные модели с Ostris AI Toolkit

Почему отключение Gradient Checkpointing вызывает OOM в AI Toolkit

Если вы не уверены, почему Gradient Checkpointing выключен, самое безопасное решение простое:

Включите его обратно.

Для больших моделей изображений в AI Toolkit отключение gradient_checkpointing — один из самых быстрых способов превратить стабильный запуск в OOM-крэш.

Это руководство объясняет:

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

Краткий ответ

Gradient Checkpointing — это в первую очередь компромисс память vs скорость.

  • Включён = ниже пик VRAM, обычно безопаснее
  • Выключен = выше пик VRAM, иногда быстрее, гораздо выше риск OOM

Для большинства пользователей, особенно при работе с большими моделями изображений, это не настройка качества. Это настройка стабильности.


Быстрый чеклист

  • ✅ Нажмите Show Advanced
  • ✅ В блоке train: убедитесь, что gradient_checkpointing: true
  • ✅ Повторите запуск с теми же Batch Size и Resolution
  • ✅ Если OOM всё ещё возникает, уменьшите Batch Size и уберите самый высокий Resolution-бакет
  • ✅ Если проблема в генерации превью, уменьшите Sample Width / Height / Sample Steps вместо отключения GC

1) Что на самом деле делает Gradient Checkpointing

Глубокая теория PyTorch не нужна для правильного использования.

Практический взгляд:

  • при GC включённом AI Toolkit хранит меньше промежуточных данных активаций в памяти и пересчитывает часть из них по мере необходимости
  • при GC выключенном больше данных остаётся в VRAM, поэтому обучение может идти быстрее, если память доступна

Звучит нормально, пока вы не объедините это с:

  • высоким разрешением
  • несколькими бакетами разрешений
  • большим batch size
  • дорогим сэмплированием
  • тяжёлыми архитектурами вроде Qwen Edit, Z-Image, FLUX / моделей типа Flex

Тогда дополнительный запас памяти исчезает очень быстро.


2) Почему отключение вызывает «внезапный» OOM

Пользователи часто думают:

«Я изменил только один переключатель.»

Но этот переключатель определяет, сколько памяти активаций удерживается во время обучения.

Конфигурация, которая с GC включённым была «тяжёлой, но рабочей», с GC выключенным становится «пограничной или невозможной».

Поэтому сбой кажется таким резким:

  • тот же датасет
  • та же модель
  • те же промпты для превью
  • тот же batch size
  • изменён только GC
  • теперь OOM на шаге 2, шаге 3 или при первом превью

3) Семейства моделей с высоким риском при GC выключенном

На основе повторяющихся реальных паттернов OOM в AI Toolkit эти комбинации следует по умолчанию считать опасными:

Семейство моделей Высокий риск при GC выключенном Безопасная первая попытка
Z-Image Бакеты 1024–1536 с большими batch GC включён, консервативный старт, затем масштабирование
Qwen-Edit Воркфлоу 1024 с большим batch / несколькими тяжёлыми условиями GC включён, Batch Size 1, снизить нагрузку от превью
FLUX-dev / крупные модели типа Flex большие batch или мультибакетное обучение высокого разрешения GC включён, Batch Size 1–4 в зависимости от запаса

Полезная ментальная модель:

  • Z-Image быстро становится опасным при высокое разрешение + большой batch + GC выключен
  • Qwen Edit быстро становится опасным при 1024 + тяжёлое кондиционирование + GC выключен
  • FLUX / типа Flex быстро становятся опасными при большой batch + GC выключен

4) Где изменить это в RunComfy AI Toolkit

В текущем интерфейсе RunComfy вы видите напрямую:

  • Batch Size
  • Gradient Accumulation
  • Steps
  • Unload TE
  • Cache Text Embeddings

Однако gradient_checkpointing проще всего проверить через расширенную конфигурацию.

Пошагово

  1. Откройте задание
  2. Нажмите Show Advanced
  3. Найдите блок train:
  4. Установите:
train:
  gradient_checkpointing: true
  1. Сохраните задание
  2. Повторите запуск, не меняя ничего другого

Если та же конфигурация теперь работает — вы подтвердили, что проблема была в GC.


5) Что делать вместо этого, если ваша настоящая цель — скорость

Многие пользователи отключают GC, чтобы ускорить обучение.

Это понятно — но обычно это неправильный первый эксперимент по ускорению.

Попробуйте следующее до отключения GC:

A. Сделать сэмплирование превью дешевле

В панели Sample:

  • уменьшите Width / Height
  • уменьшите Sample Steps
  • увеличьте Sample Every
  • временно включите Disable Sampling, чтобы проверить стабильность обучения

Это часто даёт больше практического ускорения, чем рискованная конфигурация с GC выключенным.

B. Держать batch маленьким, масштабировать через accumulation при необходимости

В панели Training:

  • держите Batch Size консервативным
  • увеличивайте Gradient Accumulation только если хотите чуть больший эффективный batch без резкого скачка пикового VRAM

C. Сначала убрать самый высокий бакет

В Datasets:

  • оставьте 512 / 768
  • возвращайте 1024 / 1536 только после стабильного запуска

D. Использовать предусмотренный путь экономии памяти модели

Для некоторых архитектур правильный путь — не «GC выключен», а:

  • low_vram: true
  • квантизация, специфичная для модели
  • оптимизация text-encoder, специфичная для модели

Следуйте руководству по модели, а не общим предположениям.


6) Когда действительно нормально тестировать GC выключенным?

Относитесь к GC выключенному как к продвинутому эксперименту, а не к настройке по умолчанию.

Разумные условия:

  • у вас уже есть стабильный запуск
  • Batch Size всё ещё консервативный
  • вы не на пределе с самым большим бакетом
  • превью лёгкие или отключены
  • у вас достаточно запаса VRAM
  • вы меняете одну переменную, а не несколько

Хороший порядок тестирования:

  1. стабилизируйте задание с GC включённым
  2. оставьте остальные настройки идентичными
  3. выключите GC
  4. наблюдайте за:
    • OOM на ранних шагах
    • OOM при сэмплировании
    • перемежающимися скачками бакетов

Если что-то из этого произойдёт, включите GC обратно и остановитесь.


7) Чем GC выключенный не является

Gradient Checkpointing — это не:

  • магический усилитель качества
  • переключатель улучшения сходства
  • правильное первое решение для слабых сэмплов
  • хороший первый эксперимент, когда у вас уже OOM

Если ваши сэмплы слабые, проверьте:

  • качество датасета
  • подписи (captions)
  • rank
  • steps
  • соответствие превью

Не предполагайте, что отключение GC — это ответ.


8) Часто задаваемые вопросы

Ухудшает ли включение GC качество результата?

На практике это обычно не тот компромисс, который замечают пользователи.

Реальный компромисс — в основном память vs скорость.

Я включил GC, но OOM всё равно есть. Что делать?

Ваши следующие рычаги:

  1. Batch Size
  2. самый высокий Resolution-бакет
  3. стоимость сэмплирования превью
  4. для видео — Num Frames

Стоит ли когда-нибудь начинать первый запуск с GC выключенным?

Для большинства пользователей: нет.

Сначала докажите стабильность, потом экспериментируйте.


Итог одной строкой

Если в AI Toolkit возникает OOM и gradient_checkpointing выключен, исправьте это первым делом.

GC включён — это безопасный стандарт. GC выключен — это продвинутый эксперимент со скоростью.


Связанные руководства

Готовы начать обучение?