Почему отключение 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 проще всего проверить через расширенную конфигурацию.
Пошагово
- Откройте задание
- Нажмите Show Advanced
- Найдите блок
train: - Установите:
train:
gradient_checkpointing: true
- Сохраните задание
- Повторите запуск, не меняя ничего другого
Если та же конфигурация теперь работает — вы подтвердили, что проблема была в 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
- вы меняете одну переменную, а не несколько
Хороший порядок тестирования:
- стабилизируйте задание с GC включённым
- оставьте остальные настройки идентичными
- выключите GC
- наблюдайте за:
- OOM на ранних шагах
- OOM при сэмплировании
- перемежающимися скачками бакетов
Если что-то из этого произойдёт, включите GC обратно и остановитесь.
7) Чем GC выключенный не является
Gradient Checkpointing — это не:
- магический усилитель качества
- переключатель улучшения сходства
- правильное первое решение для слабых сэмплов
- хороший первый эксперимент, когда у вас уже OOM
Если ваши сэмплы слабые, проверьте:
- качество датасета
- подписи (captions)
- rank
- steps
- соответствие превью
Не предполагайте, что отключение GC — это ответ.
8) Часто задаваемые вопросы
Ухудшает ли включение GC качество результата?
На практике это обычно не тот компромисс, который замечают пользователи.
Реальный компромисс — в основном память vs скорость.
Я включил GC, но OOM всё равно есть. Что делать?
Ваши следующие рычаги:
- Batch Size
- самый высокий Resolution-бакет
- стоимость сэмплирования превью
- для видео — Num Frames
Стоит ли когда-нибудь начинать первый запуск с GC выключенным?
Для большинства пользователей: нет.
Сначала докажите стабильность, потом экспериментируйте.
Итог одной строкой
Если в AI Toolkit возникает OOM и gradient_checkpointing выключен, исправьте это первым делом.
GC включён — это безопасный стандарт. GC выключен — это продвинутый эксперимент со скоростью.
Связанные руководства
Готовы начать обучение?
