Stable Diffusion и CUDA: полное руководство по настройке и устранению ошибок

Ошибка 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 вы столкнулись в Stable Diffusion?
CUDA out of memory
torch.cuda.is_available() возвращает False
Генерация идёт на CPU вместо GPU
Ошибки при установке PyTorch

Ошибка CUDA out of memory: причины и решения

Самая частая жалоба — CUDA out of memory. Она означает, что для текущих параметров генерации (разрешение, размер батча, загруженные модели) не хватает видеопамяти. Это не поломка, а ограничение ресурса, и обходится оно настройками.

Сначала попробуйте программные меры, не трогая железо:

  • 📉 Снизьте разрешение генерации — потребление памяти растёт нелинейно с ростом ширины и высоты.
  • 🔢 Уменьшите batch size до единицы.
  • ⚙️ Добавьте флаги запуска в webui-user.bat: --medvram или --lowvram для карт с малым объёмом VRAM, а также --xformers для оптимизации внимания (требует установленного пакета xformers).
  • 🧹 Закройте лишние приложения, занимающие видеопамять: браузеры с множеством вкладок, игры, видеоредакторы.

☑️ Если CUDA out of memory повторяется

Выполнено: 0 / 4

Если ошибка появляется даже на минимальных настройках, проверьте, не запущено ли одновременно два экземпляра 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 подходящей сборки.