AI Toolkit CUDA Out of Memory: исправление OOM при загрузке модели, обучении и сэмплировании
Если ваше задание AI Toolkit падает с ошибкой CUDA out of memory, OOM during training step 3 times in a row или 0 bytes is free, не продолжайте перезапускать то же задание без изменений.
На практике большинство OOM-ошибок в AI Toolkit возникают в одном из четырёх мест:
- загрузка модели (до начала реального обучения)
- первые шаги обучения
- сэмплирование превью / генерация базового сэмпла
- видео-специфичные пики из-за слишком большого количества кадров, слишком больших бакетов или и того, и другого
Это руководство — быстрый путь к восстановлению: определите, какой у вас OOM, измените правильные настройки в RunComfy AI Toolkit и быстрее добейтесь успешного перезапуска.
Быстрый чеклист (начните здесь)
- ✅ В Training уменьшите Batch Size
- ✅ В Datasets отключите самый высокий Resolution-бакет первым
- ✅ В Sample уменьшите Width / Height / Sample Steps или временно включите Disable Sampling
- ✅ Нажмите Show Advanced и убедитесь, что
gradient_checkpointing: true - ✅ Для видеомоделей уменьшите Num Frames прежде, чем трогать learning rate
- ✅ Если ошибка возникает даже с очень консервативной конфигурацией, рассматривайте как возможную проблему состояния worker / GPU, а не только конфигурации
1) Подтвердите, что это та же проблема
Вы в правильном месте, если ваши логи содержат такие сообщения:
CUDA out of memory
torch.OutOfMemoryError
OOM during training step 3 times in a row
Tried to allocate ...
0 bytes is free
CUBLAS_STATUS_ALLOC_FAILED
Типичные ситуации:
- задание падает до шага 1
- задание доходит до шага 2–10 и потом многократно OOM
- обучение вроде нормально, но крэш при генерации сэмплов
- одна и та же конфигурация то работает, то нет
2) Сначала: какой тип OOM?
A. OOM при загрузке модели или до начала обучения
Обычно означает одно из:
- модель слишком тяжела для текущих настроек экономии памяти
- генерация превью / базового сэмпла уже слишком дорогая
- worker / GPU в плохом состоянии и не стартует с чистой памятью
Типичные признаки:
- сбой до начала осмысленных шагов обучения
- ошибка сразу после загрузки модели или при первом сэмпле
- логи показывают почти нет свободной VRAM или ошибку аллокации CUBLAS
B. OOM в первых шагах обучения
Самый частый случай, вызванный конфигурацией.
Типичные причины:
gradient_checkpointingвыключен- Batch Size слишком высокий
- самый большой бакет датасета слишком амбициозен
- для видео, Num Frames — реальный пик памяти
C. OOM при сэмплировании / генерации превью
Очень распространённая ловушка.
Ваша конфигурация обучения может быть почти нормальной, но превью слишком дорогое:
- Sample Width / Height слишком большие
- Sample Steps слишком высокие
- Sample Every слишком часто
- превью-видео использует слишком много кадров
D. OOM только иногда
Обычно это пограничная конфигурация, а не загадка.
Примеры:
- запуск выживает на маленьких бакетах, но падает на самом большом бакете
- видео-запуски падают только на самых тяжёлых клипах
- ядро обучения помещается, но генерация сэмплов выводит за предел
3) Самые быстрые исправления в RunComfy AI Toolkit
Fix A — Снова включить gradient checkpointing
Первое, что проверять при OOM моделей изображений.
Где изменить
- Откройте упавшее задание
- Нажмите Show Advanced
- Под
train:убедитесь:
gradient_checkpointing: true
Если не уверены — оставьте включённым.
Fix B — Уменьшить Batch Size, использовать Gradient Accumulation для стабильности
Где изменить
- Откройте редактор задания
- В панели Training:
- уменьшите Batch Size
- сохраните или увеличьте Gradient Accumulation, если хотите чуть больший эффективный batch без увеличения пикового VRAM
Правило безопасного перезапуска
- Модели изображений: при OOM сначала опуститесь до Batch Size = 1
- Видеомодели: считайте Batch Size = 1 стандартом, если конфигурация не доказала свою стабильность
Не рассматривайте learning rate как первый рычаг памяти. Обычно это не так.
Fix C — Сначала убрать самый высокий бакет датасета
Где изменить
- Перейдите в панель Datasets
- В Resolutions отключите самый высокий бакет первым
Безопасный порядок отката
- 1024 / 1536 → убрать первым
- оставить 512 / 768 пока проверяете стабильность
- после стабилизации добавляйте большие бакеты по одному
Это один из самых быстрых способов превратить пограничный запуск в воспроизводимый.
Fix D — Сделать сэмплирование превью дешёвым или временно отключить
Если крэш происходит до реального начала обучения или при каждом сэмплировании, сначала исправьте превью.
Где изменить
- Откройте панель Sample
Затем сделайте одно или несколько:
- уменьшите Width
- уменьшите Height
- уменьшите Sample Steps
- увеличьте Sample Every
- включите Disable Sampling для валидационного запуска
Хороший первый перезапуск
Если цель — «доказать, что задание может обучаться», временный запуск без сэмплирования — нормально.
После стабилизации включите превью обратно с меньшими настройками.
Fix E — Видеомодели: уменьшить Num Frames прежде всего
Для видеомоделей кадры обычно самый большой рычаг памяти.
Где изменить
- Панель Datasets → Num Frames
- Панель Sample → Num Frames
Если обучаете видео и видите OOM, уменьшайте кадры первыми, затем batch size, затем разрешение.
Не начинайте с изменения optimizer или LR.
Fix F — Использовать путь экономии памяти модели
Некоторые архитектуры предназначены для обучения с настройками экономии памяти при ограниченной VRAM.
Где изменить
- Нажмите Show Advanced
- Под
model:найдите:
low_vram: true
Для некоторых моделей правильный путь также включает модель-специфичную квантизацию или обработку text-encoder. Следуйте руководству модели, а не гадайте.
4) Быстрая диагностика по времени сбоя
| Когда падает | Наиболее вероятная причина | Первое изменение |
|---|---|---|
| До шага 1 / при начальном сэмпле | превью слишком тяжёлое, давление при загрузке или грязный worker | отключить сэмплирование или уменьшить превью |
| Шаг 1–10 | GC выключен, batch слишком высокий, бакет слишком большой | включить GC, batch в 1, убрать самый большой бакет |
| Только при сэмплировании | настройки превью слишком дорогие | уменьшить Width/Height/Sample Steps или отключить сэмплирование |
| Иногда да, иногда нет | пограничная конфигурация | уменьшить самый большой бакет / кадры и стабилизировать |
| Даже консервативная конфигурация падает сразу | возможная проблема состояния GPU / worker | пересоздать на свежем worker или обратиться в поддержку |
5) Как отличить OOM конфигурации от проблем среды / состояния GPU
Рассматривайте это как не только проблему конфигурации, когда всё это верно:
- Batch Size = 1
gradient_checkpointing: true- консервативное разрешение / кадры
- задание всё равно падает до осмысленного начала обучения
- логи показывают
0 bytes is freeили ошибку аллокации CUBLAS
В этой ситуации:
- прекратите повторять тот же перезапуск
- создайте новое задание на свежем worker, если возможно
- если та же консервативная конфигурация работала раньше и теперь падает мгновенно, эскалируйте в поддержку
Это важно, потому что повторные перезапуски могут тратить и время, и бюджет GPU.
6) Самый безопасный порядок отката
Для моделей изображений
gradient_checkpointing: true- Batch Size → 1
- убрать самый большой Resolution-бакет
- уменьшить или отключить Sample
- включить low_vram или путь экономии памяти модели
Для видеомоделей
- уменьшить Num Frames
- Batch Size → 1
- убрать самый большой Resolution-бакет
- уменьшить или отключить Sample
- включить low_vram или модель-специфичное offloading / квантизацию
7) После первого успешного перезапуска
Когда стабильный запуск получен:
- возвращайте только одну более тяжёлую настройку за раз
- записывайте, что изменили
- не возвращайте несколько высокорисковых настроек одновременно
Хороший порядок масштабирования:
- сохранить те же стабильные настройки памяти
- увеличить Steps
- вернуть больший бакет
- вернуть более богатое сэмплирование
- только потом тестировать больший batch или более длинное видео
Итог одной строкой
Если AI Toolkit выдаёт OOM, прекратите случайные эксперименты.
Включите gradient_checkpointing, уменьшите Batch Size, уберите самый большой Resolution-бакет и сделайте сэмплирование превью дешевле перед повторной попыткой.
Связанные руководства
Ready to start training?
