Ошибка CUDA out of memory или сообщение о том, что PyTorch не находит GPU — первое, с чем сталкивается пользователь при запуске Stable Diffusion локально. В большинстве случаев причина кроется не в самой нейросети, а в несовместимости версий драйвера NVIDIA, библиотеки CUDA и сборки PyTorch, установленной в окружении Python.
Эта статья разбирает, как связаны Stable Diffusion и CUDA, как проверить, что видеокарта задействована корректно, и что делать при типичных сбоях: от нехватки видеопамяти до запуска генерации на процессоре вместо GPU. Все шаги даны без рискованных манипуляций — сначала диагностика, затем точечные исправления.
Что такое CUDA и зачем она нужна Stable Diffusion
CUDA — это платформа параллельных вычислений от NVIDIA, которая позволяет выполнять тяжёлые математические операции на графическом процессоре. Генерация изображений в Stable Diffusion — это десятки итераций работы нейросети, и на видеокарте они выполняются на порядки быстрее, чем на центральном процессоре.
Без рабочей связки «драйвер + CUDA + PyTorch» WebUI вроде AUTOMATIC1111 или ComfyUI либо откажется запускаться, либо переключится в режим CPU, где одна картинка может генерироваться десятки минут. Поэтому первое, что стоит понять: Stable Diffusion официально рассчитана на GPU NVIDIA с поддержкой CUDA — на видеокартах AMD и Intel стандартная установка работать не будет (для них существуют отдельные сборки на DirectML или ROCm, но это другая процедура).
Важно различать два компонента: версию CUDA, которую поддерживает драйвер видеокарты, и версию CUDA Toolkit, с которой собрана конкретная сборка PyTorch. Они не обязаны совпадать один в один — драйвер должен быть не старше требуемого минимума для выбранной сборки.
Проверка видеокарты и драйвера NVIDIA
Прежде чем что-то переустанавливать, убедитесь, что система вообще видит GPU и драйвер работает. Откройте командную строку и выполните:
nvidia-smi
Если утилита выводит таблицу с названием видеокарты, объёмом памяти и версией драйвера — базовый уровень в порядке. В правом верхнем углу вывода указана максимальная версия CUDA, которую поддерживает текущий драйвер. Если команда не распознаётся, драйвер либо не установлен, либо установлен некорректно — его нужно поставить с официального сайта NVIDIA, выбрав свою модель карты.
- 🖥️ Проверьте диспетчер устройств — видеокарта должна отображаться без жёлтого восклицательного знака.
- 🔄 Обновите драйвер до актуальной версии, если
nvidia-smiпоказывает старую. - 🧊 Убедитесь, что монитор подключён к дискретной карте, а не к встроенной графике, если у вас стационарный ПК.
- 💻 На ноутбуке проверьте, что приложение запускается на дискретном GPU (настраивается в панели управления NVIDIA).
Проверка связки PyTorch и CUDA
Следующий уровень диагностики — сам PyTorch. Даже при исправном драйвере может оказаться, что в виртуальное окружение установилась CPU-сборка библиотеки, и тогда GPU задействован не будет. Проверка выполняется двумя строками в окружении, где установлен WebUI:
python -c "import torch; print(torch.cuda.is_available(), torch.version.cuda)"
Если команда выводит True и номер версии CUDA — связка работает. Если False или возникает ошибка импорта — установлена не та сборка. В этом случае PyTorch нужно переустановить, указав индекс с нужной версией CUDA. Актуальную команду установки стоит брать с официального сайта pytorch.org, так как рекомендуемые версии периодически меняются.
Общий вид команды переустановки выглядит так (версию CUDA уточните на сайте PyTorch под ваш драйвер):
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
⚠️ Внимание: переустанавливайте PyTorch только внутри виртуального окружения WebUI (папка venv), активировав его заранее. Установка в глобальный Python может сломать другие проекты и не решит проблему в самом интерфейсе.
Ошибка CUDA out of memory: причины и решения
Самая частая жалоба — CUDA out of memory. Она означает, что для текущих параметров генерации (разрешение, размер батча, загруженные модели) не хватает видеопамяти. Это не поломка, а ограничение ресурса, и обходится оно настройками.
Сначала попробуйте программные меры, не трогая железо:
- 📉 Снизьте разрешение генерации — потребление памяти растёт нелинейно с ростом ширины и высоты.
- 🔢 Уменьшите batch size до единицы.
- ⚙️ Добавьте флаги запуска в
webui-user.bat:--medvramили--lowvramдля карт с малым объёмом VRAM, а также--xformersдля оптимизации внимания (требует установленного пакета xformers). - 🧹 Закройте лишние приложения, занимающие видеопамять: браузеры с множеством вкладок, игры, видеоредакторы.
☑️ Если CUDA out of memory повторяется
Если ошибка появляется даже на минимальных настройках, проверьте, не запущено ли одновременно два экземпляра WebUI или другая программа, удерживающая VRAM. Посмотреть текущую загрузку памяти можно той же командой nvidia-smi — там видно, какие процессы заняли GPU.
Stable Diffusion работает на CPU вместо GPU
Симптом узнаваем: генерация идёт, но мучительно медленно, а в логах нет упоминания видеокарты. Возможные причины — CPU-сборка PyTorch, конфликт версий или запуск с параметром, принудительно отключающим GPU.
Порядок действий такой. Сначала проверьте вывод torch.cuda.is_available(), как описано выше. Если результат False — переустановите PyTorch с CUDA-сборкой. Если True, но WebUI всё равно игнорирует карту, откройте файл запуска webui-user.bat и убедитесь, что в строке COMMANDLINE_ARGS нет параметра --use-cpu all или похожих флагов, оставшихся от прошлых экспериментов.
На ноутбуках с гибридной графикой добавьте исполняемый файл Python в список программ, работающих на высокопроизводительном GPU, через настройки графики Windows или панель NVIDIA. Точные названия пунктов зависят от версии системы, поэтому сверяйтесь с документацией вашей ОС.
Почему torch.cuda.is_available() возвращает False при исправном драйвере
Наиболее вероятные причины: установлена CPU-сборка PyTorch (при установке не был указан CUDA-индекс), драйвер старше минимально требуемого для выбранной версии CUDA, либо команда выполняется не в том окружении Python, где установлен WebUI. Проверяйте окружение командой where python (Windows) и убедитесь, что путь ведёт в папку venv проекта.
Сравнение типичных проблем и способов решения
Сводная таблица поможет быстро сориентироваться, с чего начинать диагностику в вашей ситуации.
| Симптом | Вероятная причина | Первый шаг |
|---|---|---|
| nvidia-smi не распознаётся | Драйвер не установлен или повреждён | Установить драйвер с сайта NVIDIA |
| torch.cuda.is_available() = False | CPU-сборка PyTorch | Переустановить PyTorch с CUDA-индексом |
| CUDA out of memory | Не хватает VRAM под параметры | Снизить разрешение, флаги --medvram |
| Медленная генерация | Работа на CPU | Проверить флаги запуска и сборку PyTorch |
| Ошибки при импорте torch | Конфликт версий в окружении | Пересоздать venv и установить зависимости заново |
⚠️ Внимание: при пересоздании виртуального окружения удаляйте папку venv целиком и запускайте установку заново — частичное удаление пакетов вручную часто оставляет конфликтующие остатки и создаёт новые ошибки.
Оптимизация и полезные практики
Когда базовая связка заработала, имеет смысл выжать из карты максимум стабильности. Пакет xformers снижает потребление памяти и ускоряет генерацию на поддерживаемых картах — он ставится в окружение и активируется флагом --xformers. Если установка xformers вызывает ошибки сборки, проверьте совместимость версий с вашим PyTorch или временно обойдитесь без него.
Держите драйвер в актуальном состоянии, но обновляйте его осознанно: если всё работает стабильно, срочной необходимости в обновлении нет. Перед крупным обновлением WebUI или PyTorch полезно сохранить копию рабочей папки — откат займёт минуты, а не часы.
Часто задаваемые вопросы
Нужно ли отдельно устанавливать CUDA Toolkit для Stable Diffusion?
Нет. Для работы WebUI достаточно драйвера NVIDIA — необходимые библиотеки CUDA уже включены в сборку PyTorch. Отдельный Toolkit требуется только для разработки или сборки пакетов из исходников.
Можно ли запустить Stable Diffusion на видеокарте AMD?
Стандартная установка с CUDA для этого не подходит, поскольку CUDA — технология NVIDIA. Для карт AMD существуют альтернативные варианты на базе ROCm (в основном под Linux) или DirectML под Windows, но их настройка отличается и описывается отдельно.
Что делать, если после обновления WebUI перестала работать генерация?
Начните с проверки torch.cuda.is_available() в окружении проекта. Обновление могло изменить зависимости. Если версия PyTorch перестала соответствовать требованиям, переустановите его командой с официального сайта PyTorch, либо откатитесь на сохранённую копию рабочей папки.
Поможет ли увеличение файла подкачки при ошибке CUDA out of memory?
Файл подкачки относится к оперативной памяти, а не к видеопамяти, поэтому напрямую ошибку VRAM он не устраняет. Однако достаточный объём RAM и файла подкачки полезен при загрузке больших моделей, когда данные временно выгружаются из VRAM в системную память.
Почему nvidia-smi показывает карту, а PyTorch её не видит?
Это классический признак несоответствия версий: драйвер работает, но сборка PyTorch либо CPU-only, либо рассчитана на более новую версию CUDA, чем поддерживает драйвер. Проверьте вывод torch.version.cuda и при необходимости обновите драйвер или переустановите PyTorch подходящей сборки.