Портативная сборка Stable Diffusion на видеокарте AMD часто завершается ошибкой torch.cuda.is_available() returned False или медленной генерацией на процессоре — причина в том, что стандартный PyTorch собран под CUDA и не видит GPU от AMD. Это не неисправность видеокарты: проблема решается выбором правильного бэкенда — DirectML, ZLUDA или ROCm — и соответствующими флагами запуска.
В этой статье разберём, как подготовить портативную версию Stable Diffusion (на базе Automatic1111 WebUI или аналогичных сборок) к работе на Radeon RX-картах, какие параметры командной строки критичны, и что проверить, если генерация падает с ошибкой нехватки памяти или чёрным изображением на выходе.
Почему стандартная сборка не работает на AMD
Большинство готовых portable-сборок Stable Diffusion поставляются с библиотекой PyTorch, скомпилированной под CUDA — проприетарную платформу NVIDIA. Видеокарты AMD эту платформу не поддерживают, поэтому интерфейс либо не запускается вовсе, либо автоматически переключается на процессор, где одна генерация занимает минуты вместо секунд.
Существует три рабочих пути обхода этого ограничения:
- 🔧 DirectML — вариант для Windows, использующий DirectX 12. Работает на большинстве карт AMD, проще всего в настройке, но медленнее нативных решений.
- ⚡ ZLUDA — прослойка, эмулирующая CUDA поверх ROCm/HIP для Windows. Даёт заметно более высокую скорость на поддерживаемых картах, но требует аккуратной установки.
- 🐧 ROCm — официальная платформа AMD, полноценно работает в Linux (в том числе через WSL). Наиболее производительный вариант, но поддержка зависит от конкретной модели GPU.
Выбор зависит от вашей видеокарты, операционной системы и готовности возиться с настройкой. Для быстрого старта на Windows обычно начинают с DirectML.
Проверка совместимости видеокарты
Прежде чем качать сборку, убедитесь, что карта соответствует минимальным требованиям. Главный параметр — объём видеопамяти: для комфортной генерации в разрешении 512×512 желательно от 6–8 ГБ VRAM, хотя с оптимизациями возможна работа и на 4 ГБ.
Узнать объём памяти можно через Диспетчер задач → вкладка «Производительность» → раздел «Графический процессор». Также убедитесь, что установлены свежие драйверы AMD Adrenalin — устаревшие версии драйвера являются частой причиной падений DirectML и ZLUDA.
| Вариант запуска | ОС | Скорость | Сложность настройки |
|---|---|---|---|
| DirectML | Windows 10/11 | Средняя | Низкая |
| ZLUDA | Windows 10/11 | Высокая | Средняя |
| ROCm | Linux / WSL | Высокая | Высокая |
| Только CPU | Любая | Очень низкая | Низкая |
Установка portable-сборки с DirectML
Самый простой путь — готовая сборка Automatic1111 с предустановленным PyTorch-DirectML либо форк, ориентированный на AMD (например, сборки на базе Stable Diffusion WebUI DirectML). Распакуйте архив в папку без кириллицы и пробелов в пути — это устраняет целый класс ошибок запуска.
Ключевой момент — параметры запуска. Для карт AMD в файл webui-user.bat необходимо добавить флаги:
set COMMANDLINE_ARGS=--use-directml --medvram --opt-sub-quad-attention
☑️ Проверка перед первым запуском
Флаг --use-directml переключает вычисления на DirectML, --medvram снижает потребление видеопамяти ценой небольшой потери скорости, а --opt-sub-quad-attention включает экономичный механизм внимания. На картах с 4–6 ГБ VRAM без этих опций генерация часто падает с ошибкой out of memory.
⚠️ Внимание: не запускайте одновременно Stable Diffusion и тяжёлые игры или видеомонтаж — DirectML делит VRAM с другими приложениями, и нехватка памяти приведёт к вылету генерации или зависанию системы.
Ускорение через ZLUDA
ZLUDA позволяет запускать CUDA-версию PyTorch на картах AMD, транслируя вызовы в HIP. На поддерживаемых моделях Radeon RX это даёт скорость, сопоставимую с ROCm на Linux, при этом сохраняется привычный Windows-окруженный portable-формат.
Общий порядок действий выглядит так: устанавливается стандартная CUDA-сборка WebUI, затем в её окружение подкладываются библиотеки ZLUDA и прописывается переменная окружения, указывающая на них. Конкретные шаги зависят от версии ZLUDA и вашей видеокарты — сверяйтесь с инструкцией проекта, так как список поддерживаемых GPU и процедура периодически меняются.
Почему первая генерация на ZLUDA очень долгая
При первом запуске ZLUDA компилирует ядра под вашу конкретную видеокарту — это может занять 10–20 минут, в течение которых кажется, что программа зависла. Это нормально: скомпилированный кэш сохраняется, и последующие запуски проходят быстро. Не прерывайте процесс, иначе компиляция начнётся заново.
Если после подключения ZLUDA WebUI всё равно не видит GPU, проверьте, что в выводе консоли отсутствуют строки об ошибках загрузки библиотек hip, и что версия драйвера AMD соответствует требованиям используемой сборки.
Типичные ошибки и их решения
Даже правильно настроенная сборка может выдавать ошибки. Вот наиболее частые симптомы на AMD и направления диагностики:
- 🖤 Чёрное или зелёное изображение — классическая проблема вычислений в половинной точности (FP16) на некоторых картах AMD. Решается флагами
--no-halfи--precision full, либо отключением half-precision для VAE. - 💥 RuntimeError: out of memory — уменьшите разрешение, добавьте
--lowvramвместо--medvram, закройте браузер с множеством вкладок. - 🐌 Генерация идёт на CPU — проверьте, что флаг бэкенда указан именно в
COMMANDLINE_ARGS, а не в другой переменной, и что в консоли при старте нет строки "running on CPU". - 📦 Ошибки при установке зависимостей — часто вызваны антивирусом, блокирующим pip, или нестабильным интернетом при первичной загрузке пакетов.
⚠️ Внимание: параметр
--no-halfпочти удваивает расход видеопамяти. Если после его добавления появляется out of memory, комбинируйте его с--medvramи снижением разрешения до 448×448 или 512×512.
Если ошибка не воспроизводится по описанию выше, смотрите полный текст traceback в консоли — последние 10–15 строк обычно содержат точное указание модуля, где произошёл сбой. Поиск по этому тексту в репозитории используемой сборки даёт решение быстрее, чем перебор случайных флагов.
Оптимизация скорости генерации
После того как сборка стабильно работает, можно заняться производительностью. Наибольший эффект дают сэмплеры с малым числом шагов (например, DPM++ 2M Karras при 20–25 шагах) и разрешение, не выходящее за пределы возможностей вашей VRAM.
Также имеет смысл хранить модели на SSD: загрузка чекпоинта весом в несколько гигабайт с HDD заметно тормозит переключение между моделями. А вот перенос всей portable-папки на быстрый диск не обязателен — после загрузки модели в память скорость генерации от накопителя не зависит.
Не гонитесь за максимальным размером батча: на картах с 8 ГБ и меньше батч больше 1–2 изображений чаще приводит к ошибкам памяти, чем к реальной экономии времени. Последовательная генерация с Batch count вместо Batch size стабильнее и даёт тот же результат.
Часто задаваемые вопросы
Можно ли запустить Stable Diffusion на встроенной графике AMD (APU)?
Технически через DirectML это иногда возможно, но встроенная графика использует общую оперативную память и имеет ограниченную мощность — генерация будет очень медленной, а большие модели могут не поместиться в память. Для APU реалистичнее рассматривать облегчённые модели и низкие разрешения, либо запуск на CPU.
Какая portable-сборка лучше для AMD — Automatic1111, ComfyUI или Forge?
Все три интерфейса могут работать на AMD, но процедура настройки различается. ComfyUI часто хвалят за экономное расходование VRAM, что важно на картах с малым объёмом памяти. Выбирайте тот интерфейс, для которого существует актуальная инструкция под ваш бэкенд (DirectML/ZLUDA/ROCm) — это важнее различий в удобстве.
Почему после обновления драйвера AMD сборка перестала запускаться?
Обновление драйвера может менять версии системных библиотек HIP/DirectX, от которых зависят ZLUDA и DirectML. Типичное решение — обновить саму прослойку до версии, совместимой с новым драйвером, либо откатить драйвер на предыдущую стабильную версию. Перед обновлением драйвера имеет смысл проверить отзывы пользователей вашей сборки.
Нужна ли portable-версия, или лучше обычная установка?
Portable-сборка удобна тем, что не трогает системный Python и легко переносится между дисками и компьютерами вместе с моделями. Минус — обновления и установка расширений иногда требуют ручного вмешательства. Для AMD разницы в производительности между portable и обычной установкой нет — важен только правильно настроенный бэкенд.
Работают ли на AMD расширения вроде ControlNet и LoRA?
LoRA работают без ограничений, так как это лишь дополнительные веса к модели. ControlNet также функционирует, но заметно увеличивает расход VRAM — на картах с 6–8 ГБ может потребоваться --lowvram и снижение разрешения. Совместимость конкретных расширений с DirectML/ZLUDA стоит проверять отдельно, так как часть из них рассчитана только на CUDA.