Torch is not able to use GPU в Stable Diffusion: причины и исправление

Ошибка «Torch is not able to use GPU» при запуске Stable Diffusion означает, что библиотека PyTorch не видит видеокарту и вся генерация изображений пойдёт на процессоре — со скоростью в десятки раз ниже. Чаще всего причина в том, что установлена CPU-сборка PyTorch вместо CUDA-версии, либо драйвер NVIDIA устарел или конфликтует с окружением.

Хорошая новость: проблема решается программно и не требует переустановки Windows. Ниже разберём диагностику и все рабочие способы исправления — от простой проверки до чистой переустановки PyTorch с поддержкой CUDA.

Как проверить, видит ли PyTorch видеокарту

Прежде чем что-то менять, убедитесь, что проблема именно в PyTorch, а не в самой системе. Откройте командную строку в папке вашей установки Stable Diffusion (например, Automatic1111) и активируйте виртуальное окружение, после чего выполните простую проверку:

python -c "import torch; print(torch.cuda.is_available()); print(torch.version.cuda)"

Если команда выводит False или версию CUDA None — PyTorch действительно установлен без поддержки GPU. Если выводится True, но Stable Diffusion всё равно ругается, проблема может быть в параметрах запуска веб-интерфейса или в конфликте версий внутри окружения.

Дополнительно проверьте, что сама система видит видеокарту: выполните в командной строке nvidia-smi. Утилита должна показать модель GPU, версию драйвера и поддерживаемую версию CUDA. Если nvidia-smi не распознаётся — начинать нужно с драйвера, а не с PyTorch.

Основные причины ошибки

Сообщение «Torch is not able to use GPU» появляется по ограниченному набору причин. Знание корня проблемы экономит время: не нужно перебирать все способы подряд.

  • 🔧 Установлена CPU-сборка PyTorch — самая частая причина, особенно если установка шла не через официальный установщик.
  • 🎮 Устаревший или повреждённый драйвер NVIDIA, из-за которого CUDA недоступна.
  • 💻 Видеокарта AMD или встроенная графика Intel — стандартная CUDA-сборка PyTorch с ними не работает.
  • 📦 Конфликт пакетов в виртуальном окружении venv после обновлений Stable Diffusion.
  • ⚙️ Параметры запуска принудительно отключают GPU, например флаг --use-cpu all в webui-user.bat.
⚠️ Внимание: если у вас видеокарта AMD, инструкции из этой статьи про CUDA не подойдут напрямую. Для AMD существуют отдельные сборки — DirectML-версия для Windows или ROCm для Linux, и их установка отличается.

Способ 1. Переустановка PyTorch с поддержкой CUDA

Если проверка показала False, нужно заменить CPU-сборку PyTorch на версию с CUDA. Это делается внутри виртуального окружения Stable Diffusion, чтобы не затронуть системный Python.

Откройте командную строку в папке stable-diffusion-webui, активируйте окружение и выполните удаление старой версии, а затем установку CUDA-сборки:

venv\Scripts\activate

pip uninstall torch torchvision torchaudio -y

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

Индекс cu121 соответствует CUDA 12.1 — актуальной ветке для большинства современных драйверов. Если ваша видеокарта старая и драйвер не поддерживает CUDA 12, используйте индекс cu118 вместо cu121. Точную совместимость стоит сверить с документацией PyTorch и требованиями вашей версии Stable Diffusion.

☑️ Переустановка PyTorch с CUDA

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

Способ 2. Обновление драйвера NVIDIA

Даже правильная сборка PyTorch не заработает без свежего драйвера. Скачайте актуальную версию с официального сайта NVIDIA для вашей модели видеокарты и установите её с перезагрузкой. После установки снова выполните nvidia-smi — в выводе должна отображаться поддерживаемая версия CUDA.

Если драйвер обновлялся давно и система работала с разными версиями CUDA, возможна «грязная» установка. В таком случае при установке драйвера выберите вариант чистой установки (если установщик NVIDIA предлагает такой пункт) — он удалит остатки старых компонентов.

📊 Что стало причиной ошибки в вашем случае?
CPU-сборка PyTorch
Устаревший драйвер NVIDIA
Конфликт в venv
Видеокарта AMD/Intel

Способ 3. Проверка параметров запуска

Иногда PyTorch исправен, но веб-интерфейс сам запрещает использование GPU. Откройте файл webui-user.bat в папке Stable Diffusion любым текстовым редактором и найдите строку, начинающуюся с set COMMANDLINE_ARGS=.

Убедитесь, что в ней нет флагов --use-cpu all, --skip-torch-cuda-test в сочетании с принудительным CPU-режимом или --no-half там, где он не нужен. Для видеокарт с малым объёмом видеопамяти допустимы флаги --medvram или --lowvram — они не отключают GPU, а лишь экономят память.

Способ 4. Чистое пересоздание виртуального окружения

Когда пакеты в venv конфликтуют после обновлений, проще пересоздать окружение, чем искать виновника. Удалите папку venv в каталоге Stable Diffusion и запустите webui-user.bat заново — установщик автоматически скачает нужные версии PyTorch и зависимостей.

⚠️ Внимание: перед удалением venv убедитесь, что ваши модели, LoRA и сгенерированные изображения лежат в своих папках (models, outputs) — они не пострадают, но лишняя проверка не помешает. Само пересоздание окружения может занять заметное время из-за загрузки пакетов.

Этот способ особенно эффективен после крупных обновлений Automatic1111, когда старые закреплённые версии библиотек перестают сочетаться с новым кодом интерфейса.

Сравнение способов решения

СпособКогда применятьСложность
Проверка torch.cuda и nvidia-smiВсегда, первым шагомМинимальная
Переустановка PyTorch (cu121/cu118)is_available() возвращает FalseСредняя
Обновление драйвера NVIDIAnvidia-smi не работает или CUDA устарелаНизкая
Правка webui-user.batGPU исправен, но интерфейс его игнорируетНизкая
Пересоздание venvКонфликты после обновлений, ничего не помоглоСредняя
А если видеокарта AMD?

Для Windows существует форк Stable Diffusion с поддержкой DirectML, который работает на картах AMD без CUDA. Для Linux применяется ROCm-совместимая сборка PyTorch, но список поддерживаемых GPU ограничен — сверяйтесь с официальной документацией ROCm. Официальный репозиторий Automatic1111 ориентирован прежде всего на NVIDIA.

Что делать, если ничего не помогло

Если все шаги выполнены, а torch.cuda.is_available() по-прежнему возвращает False, проверьте версию Python: Stable Diffusion и PyTorch требуют конкретные версии интерпретатора (обычно Python 3.10.x для Automatic1111). Неподходящая версия Python может тихо подтянуть несовместимые сборки пакетов.

Также убедитесь, что видеокарта вообще поддерживается: совсем старые GPU без поддержки актуальных версий CUDA не заработают с современными сборками PyTorch, сколько бы раз вы их ни переустанавливали. В таком случае остаются CPU-режим (медленно, но работает) или облачные сервисы генерации.

⚠️ Внимание: не устанавливайте PyTorch глобально в систему «для страховки» — это создаёт конфликты с venv и затрудняет диагностику. Все манипуляции выполняйте только внутри активированного виртуального окружения.

Частые вопросы

Почему Stable Diffusion работает, но очень медленно?

Это типичный признак генерации на CPU. Проверьте torch.cuda.is_available() — скорее всего, PyTorch не использует видеокарту, и нужно переустановить его CUDA-сборку.

Нужно ли отдельно устанавливать CUDA Toolkit?

Для запуска Stable Diffusion обычно достаточно драйвера NVIDIA и CUDA-сборки PyTorch — pip-пакет уже содержит необходимые библиотеки. Полный CUDA Toolkit требуется лишь для компиляции некоторых расширений.

Ошибка появилась после обновления Automatic1111. Что делать?

Обновление могло изменить требования к версиям пакетов. Самый надёжный путь — удалить папку venv и запустить webui-user.bat, чтобы установщик подтянул совместимые зависимости заново.

Поддерживается ли видеокарта AMD?

Стандартная CUDA-сборка PyTorch — нет. Для AMD на Windows используют DirectML-форки, на Linux — ROCm-сборки, при этом список поддерживаемых карт ограничен и его нужно проверять в документации.

Как уменьшить потребление видеопамяти?

Добавьте в COMMANDLINE_ARGS флаги --medvram (или --lowvram для очень малого объёма VRAM) и --xformers. Это не отключает GPU, а оптимизирует использование памяти.