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 поддерживает именно такое сочетание. Некоторые варианты ручного распределения и переноса компонентов могут быть взаимоисключающими. Проверяйте журнал запуска и фактический расход памяти, а не только сохранённое состояние переключателя.

Порядок диагностики нехватки памяти

  1. Остановите ненужные модели штатными кнопками и проверьте внешние процессы.
  2. Посмотрите доступную RAM и VRAM непосредственно перед запуском.
  3. Начните с одного короткого запроса, одного изображения или короткого видео.
  4. Уменьшите контекст для LLM либо размер кадра, число кадров и партию для генерации.
  5. Проверьте, на каком этапе возникает ошибка: загрузка, энкодер, основной расчёт или декодирование.
  6. Только после этого меняйте схему offload или формат весов.

Не завершайте принудительно неизвестные процессы и не удаляйте веса для освобождения RAM: файл на диске и занятая оперативная память — разные вещи. Если процесс завершён системой из-за нехватки памяти, журнал контейнера может оборваться без подробного Python traceback.

Как сравнивать результат

Зафиксируйте параметры, пиковую RAM, пиковую VRAM и полное время. Первый прогрев отмечайте отдельно. Если режим лишь позволяет завершить задачу, но работает медленнее, это всё равно может быть полезным компромиссом — просто его нельзя описывать как ускорение.

Практические разделы панели: запуск моделей, мониторинг и устранение ошибок. Дополнительное описание механизмов переноса компонентов есть в документации Diffusers по памяти; применимость зависит от конкретного pipeline.

О материале

Материал подготовлен с помощью ИИ с проверкой по пользовательскому руководству панели и указанным справочным источникам. Параметры и доступные функции зависят от версии установленной сборки; приведённые примеры не являются результатами отдельного бенчмарка.

Все статьи · Руководство пользователя