CUDA System Memory Fallback — включать или нет?
Начиная с версии драйвера 546.01 в Панели управления NVIDIA появилась возможность включения и отключения новой опции — CUDA Sysmem Fallback Policy, позволяющей настроить поведение функции System Memory Fallback.
В этой статье о том, что это за функция, включать ли System Memory Fallback для игр или других задач и дополнительная информация на тему, которая может быть полезной.
Назначение функции
Функция System Memory Fallback (можно перевести как «Резервирование в системной памяти») на видеокартах NVIDIA предназначена для задач, требующих значительного объема памяти видеокарты при использовании CUDA-ядер: прежде всего при использовании ИИ-инструментов, таких как Stable Diffusion.
В случае, если опция включена, для обозначенных задач в дополнение к памяти видеокарты (VRAM) может быть использована оперативная память (RAM) компьютера со следующим результатом:
- Вы не получите уведомлений о том, что памяти недостаточно (CUDA out of memory), при условии, что суммарного объема VRAM и свободной RAM достаточно для выполнения задачи.
- Производительность, вероятнее всего, будет ниже: причина в том, что оперативная память компьютера работает значительно медленнее, чем память видеокарты.
Таким образом, включение функции позволяет использовать ИИ-инструменты (и другие процессы, использующие CUDA и значительный объем VRAM) даже на видеокартах с недостаточным объемом собственной памяти и без применения дополнительных оптимизаций.
Настройки System Memory Fallback
Возможность настройки System Memory Fallback появилась в «Панели управления NVIDIA» начиная с версии драйвера 546.01 (сама функция была реализована ранее, но без возможности настройки).
Для включения или отключения достаточно выполнить следующие действия:
- Откройте Панель управления NVIDIA: сделать это можно через контекстное меню рабочего стола — нажмите правой кнопкой мыши по рабочему столу и выберите нужный пункт (в Windows 11 потребуется сначала нажать «Показать дополнительные параметры»).
- Перейдите в раздел «Параметры 3D» — «Управление параметрами 3D».
- Задайте нужное значение для параметра CUDA – Sysmem Fallback Policy на вкладке «Глобальные параметры» (для всех программ) или «Программные настройки» (для выбранных программ) и нажмите кнопку «Применить».
Доступны следующие варианты настроек:
- Driver Default — значение по умолчанию, поведение функции определяется драйвером и выполняемой задачей.
- Prefer No Sysmem Fallback — предпочитать не использовать System Memory Fallback
- Prefer Sysmem Fallback — предпочитать использование функции.
Включать ли CUDA – Sysmem Fallback Policy
Несмотря на то, что рассматриваемую опцию можно включить глобально для всех приложений и игр, использующих CUDA, делать этого не рекомендуется, за исключением случаев, когда вы столкнулись с недостатком памяти видеокарты при выполнении тех или иных задач. Причина этому — потенциальное снижение производительности из-за использования оперативной памяти компьютера вместо VRAM.
При включении System Memory Fallback для ИИ-задач, производительность может серьезно просесть и более предпочтительными могут оказаться другие варианты обеспечения работоспособности на видеокартах с малым объемом VRAM.
Например, в моем случае при использовании Stable Diffusion и WebUI на видеокарте с 6 Гб памяти использование параметров для оптимизации работы на таких видеокартах показывает результат в несколько раз быстрее, чем отключение соответствующих параметров и включение System Memory Fallback. Поэтому использование функции может быть осмысленным, возможно, только при необходимости генерации изображений с большим разрешением, которые иначе создать на этом оборудовании не получится.
В случае игр ситуация лучше, но также наблюдается некоторое снижение производительности и возможна её нестабильность. Ниже — на скриншоте результат теста различных игр с включенной и отключенной опцией Sysmem Fallback Policy, а также результат тестирования на предыдущей версии драйвера:
Возможно, у вас есть отличающиеся наблюдения о работе функции? Будет отлично, если вы сможете поделиться ими в комментариях ниже.
All
Бесполезно, SD всё равно валится в конце генерации с ошибкой TORCH_USE_CUDA_DSA, хоть включена Prefer Sysmem Fallback хоть нет…
Ответить