CPU offload: как запускать большие модели с помощью оперативной памяти
Раздел: Память и оптимизация.
CPU offload — общее название схем, при которых часть данных или вычислений переносится с GPU на процессорную сторону. Это помогает использовать модель, которая не полностью помещается в видеопамять. Но конкретное поведение определяется движком: где-то на CPU выполняются слои, где-то компоненты временно хранятся в RAM и возвращаются на GPU перед вычислением.
Чего offload не делает
Он не превращает RAM в дополнительную VRAM той же скорости, не снимает требования к совместимости и не позволяет игнорировать минимальную память отдельных операций. Если выбранный runtime не поддерживает offload для нужной архитектуры, переключатель не создаст такую поддержку.
Для генерации изображений и видео могут применяться разные схемы переноса компонентов или групп данных. Более частые перемещения часто уменьшают нагрузку на VRAM ценой дополнительных обменов. Поэтому сравнивайте не только пик памяти, но и полное время задачи.
Почему OOM возможен даже с offload
- На GPU всё ещё должны помещаться активный блок и рабочие буферы.
- Системная RAM занята весами, временными копиями, приложениями и кешами.
- Энкодер, трансформер и VAE имеют разные пики потребления.
- На другом этапе запуска появляется дополнительное резервирование.
- Offload включён в интерфейсе, но не применяется в выбранном режиме либо несовместим с другим параметром.
Наличие свободного SSD не решает нехватку RAM. Swap также не следует считать равноценной заменой: интенсивная подкачка может сделать задачу практически непригодной по времени.
Как настроить в AI Server Manager
Сначала выберите правильную модель и движок, затем совместимый пресет размещения. Для LLM проверьте настройки слоёв и контекста, если соответствующие поля доступны. Для SDNQ-видео и изображений используйте предусмотренный моделью режим CPU offload, а не параметры от другой архитектуры.
Если планируется схема на нескольких GPU с offload, убедитесь, что runtime поддерживает именно такое сочетание. Некоторые варианты ручного распределения и переноса компонентов могут быть взаимоисключающими. Проверяйте журнал запуска и фактический расход памяти, а не только сохранённое состояние переключателя.
Порядок диагностики нехватки памяти
- Остановите ненужные модели штатными кнопками и проверьте внешние процессы.
- Посмотрите доступную RAM и VRAM непосредственно перед запуском.
- Начните с одного короткого запроса, одного изображения или короткого видео.
- Уменьшите контекст для LLM либо размер кадра, число кадров и партию для генерации.
- Проверьте, на каком этапе возникает ошибка: загрузка, энкодер, основной расчёт или декодирование.
- Только после этого меняйте схему offload или формат весов.
Не завершайте принудительно неизвестные процессы и не удаляйте веса для освобождения RAM: файл на диске и занятая оперативная память — разные вещи. Если процесс завершён системой из-за нехватки памяти, журнал контейнера может оборваться без подробного Python traceback.
Как сравнивать результат
Зафиксируйте параметры, пиковую RAM, пиковую VRAM и полное время. Первый прогрев отмечайте отдельно. Если режим лишь позволяет завершить задачу, но работает медленнее, это всё равно может быть полезным компромиссом — просто его нельзя описывать как ускорение.
Практические разделы панели: запуск моделей, мониторинг и устранение ошибок. Дополнительное описание механизмов переноса компонентов есть в документации Diffusers по памяти; применимость зависит от конкретного pipeline.
О материале
Материал подготовлен с помощью ИИ с проверкой по пользовательскому руководству панели и указанным справочным источникам. Параметры и доступные функции зависят от версии установленной сборки; приведённые примеры не являются результатами отдельного бенчмарка.