AMD vs NVIDIA в генерации картинок: война, которую AMD почти проиграла
Покупаешь видеокарту AMD за адекватные деньги. Хочешь генерировать картинки. Открываешь гайд по запуску Stable Diffusion локально. Видишь: "CUDA required". Чувствуешь себя идиотом.
Так было в 2022-2023. Сейчас, в 2025, ситуация изменилась. Но не так сильно, как хотелось бы.
Главное, что нужно понять: Stable Diffusion на AMD работает. Но не так, как на NVIDIA. И не так, как хотелось бы.
ROCm: то, что должно было спасти AMD, но не спасло
ROCm — это ответ AMD на CUDA. В теории. На практике — это набор библиотек, которые поддерживают ограниченный список карт и требуют танцев с бубном.
| Карта | Официальная поддержка ROCm | Реальная работоспособность |
|---|---|---|
| RX 7900 XTX | Да | Работает, но медленнее RTX 4090 на 30-40% |
| RX 7800 XT | Да | Работает, нужны патчи |
| RX 6700 XT | Нет | Можно заставить работать через Vulkan |
| RX 6600 | Нет | Только Vulkan, очень медленно |
Проблема не в том, что ROCm плохой. Проблема в том, что его поддерживают единицы разработчиков. Пока NVIDIA тратит миллиарды на CUDA экосистему, AMD пытается догнать с открытым исходным кодом. Благородно? Да. Эффективно? Нет.
1 Что нужно для запуска Stable Diffusion на AMD сегодня
Есть три пути. Выбирай по степени своего мазохизма.
Путь 1: ROCm + Linux (самый быстрый, но сложный)
Если у тебя карта из официально поддерживаемых (RX 7900, RX 7800, некоторые старые Radeon VII), можешь попробовать.
# Установка ROCm на Ubuntu 22.04+
sudo apt update
sudo apt install rocm-libs5.7.1 rocm-dev5.7.1
# Проверка установки
rocminfo
Важно: ROCm 5.7+ поддерживает только Linux. Windows? Забудь. macOS? Ха-ха.
После установки ROCm нужно собрать PyTorch с поддержкой ROCm. Или использовать предсобранные версии, которые существуют, но их нужно искать по форумам.
Путь 2: Vulkan бэкенд (универсальный, но медленный)
Vulkan работает везде: Windows, Linux, даже на старых картах. Но производительность... ну, ты понимаешь.
Для этого пути тебе понадобится C++ фронтенд для слабых видеокарт или специальные сборки с Vulkan поддержкой.
# Пример запуска через Vulkan-бэкенд
python launch.py --precision full --no-half --device vulkan
Путь 3: Прямой транслятор (самый хакерский)
Есть проекты вроде HIPIFY, которые переводят CUDA код в HIP (язык ROCm). В теории это должно работать. На практике — получаешь сотни ошибок компиляции.
Реальная скорость: цифры, которые расстроят
Сравниваю на одной модели (SDXL), одинаковых параметрах (512x512, 20 шагов):
- RTX 4090: 2.1 секунды на картинку
- RX 7900 XTX (ROCm): 3.4 секунды
- RX 7900 XTX (Vulkan): 8.7 секунды
- RX 6700 XT (Vulkan): 14.2 секунды
Разница в 1.6 раза между топовыми картами. На бумаге приемлемо. Но когда считаешь стоимость карт... RX 7900 XTX дешевле RTX 4090 примерно на 40%. А производительность в AI хуже на 60%. Математика не сходится.
Ошибки, которые убьют твоё время (и нервы)
"HIP_ERROR_NoDeviceFound" или почему карта не определяется
Самая частая ошибка. ROCm видит только определенные модели карт. Если у тебя RX 6700 XT или ниже — забудь про ROCm. Даже если найдешь в интернете "патч для поддержки", он сломается при следующем обновлении драйверов.
Out of memory на 12 ГБ VRAM
У NVIDIA есть технология shared memory. У AMD её нет в том же виде. Когда VRAM заканчивается, PyTorch на CUDA может использовать системную память. На ROCm — просто падает с ошибкой.
# Типичная ошибка
RuntimeError: HIP out of memory. Tried to allocate 2.34 GiB
Драйверы, которые ломают всё
Установил новые драйверы AMD? Поздравляю, ROCm перестал работать. Придется откатываться или ждать патча. С NVIDIA такого нет годами.
Альтернативы, которые реально работают
Не хочешь страдать с Stable Diffusion? Есть варианты.
Qwen-Image-2512 через CPU
Китайская модель Qwen-Image-2512 работает через трансформеры. Есть оптимизации для CPU. На современном процессоре (Ryzen 7/9) генерация займет 30-60 секунд. Медленно, но стабильно.
FlaxeoUI для слабого железа
FlaxeoUI использует оптимизированные модели и может работать даже на интегрированной графике. Качество ниже, чем у SDXL, но для быстрых скетчей подойдет.
Vulkan через llama.cpp
Да, та самая оптимизация llama.cpp для AMD работает и для некоторых моделей генерации изображений. Не для всех, но пробовать стоит.
Пошаговый гайд: запускаем Stable Diffusion на RX 7900 XTX
Если всё же решился. Вот что нужно сделать.
1 Устанавливаем Ubuntu 22.04 или 24.04
Windows не подойдет. Даже WSL2 не спасет. Нужен чистый Linux. Ubuntu — самый простой вариант.
2 Ставим драйверы AMD и ROCm
# Удаляем старые драйверы (если были)
sudo apt purge *amdgpu* *rocm*
# Добавляем репозиторий ROCm
wget https://repo.radeon.com/amdgpu-install/latest/ubuntu/jammy/amdgpu-install_6.1.60101-1_all.deb
sudo apt install ./amdgpu-install_6.1.60101-1_all.deb
# Устанавливаем ROCm 5.7
sudo amdgpu-install --usecase=rocm --no-dkms --no-32
3 Проверяем установку
# Добавляем пользователя в группу video и render
sudo usermod -a -G video $USER
sudo usermod -a -G render $USER
# Перезагружаемся
sudo reboot
# Проверяем
rocminfo | grep "Agent\|GPU"
Должна появиться информация о твоей карте. Если нет — что-то пошло не так.
4 Устанавливаем PyTorch с поддержкой ROCm
# Создаем виртуальное окружение
python -m venv sd-amd
source sd-amd/bin/activate
# Ставим PyTorch для ROCm 5.7
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
Важно: версия PyTorch должна точно соответствовать версии ROCm. Иначе будет ошибка "undefined symbol".
5 Клонируем и настраиваем Stable Diffusion WebUI
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
# Редактируем webui-user.sh
nano webui-user.sh
Добавляем строку:
export TORCH_COMMAND="pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7"
export PYTORCH_HIP_ALLOC_CONF="max_split_size_mb:128"
6 Запускаем и молимся
./webui.sh --skip-torch-cuda-test --use-cpu all --precision full --no-half
Флаг --skip-torch-cuda-test отключает проверку CUDA. --use-cpu all заставляет использовать ROCm вместо CUDA. В теории.
Что делать, если ничего не работает
Сценарий более вероятный, чем успешный запуск. Вот план Б.
- Проверь версию ядра Linux. ROCm 5.7 требует ядро 6.5+. Если у тебя 6.2 — обновляйся.
- Посмотри dmesg.
sudo dmesg | grep -i amdпокажет ошибки драйверов. - Попробуй старую версию ROCm. 5.6 более стабильна для некоторых карт.
- Сдайся и используй Vulkan. Медленнее, но работает.
- Купи NVIDIA. Серьезно. Иногда проще потратить деньги, чем время.
Будущее: когда AMD догонит NVIDIA?
Смотря что считать "догнать". В играх AMD уже давно конкурирует. В AI — отстает на годы.
Но есть надежда:
- ROCm 6.0 обещает лучшую совместимость и поддержку Windows (наконец-то!)
- Прямая трансляция CUDA→HIP улучшается с каждым релизом
- Больше разработчиков начинают поддерживать ROCm из коробки
Проблема в том, что NVIDIA не стоит на месте. Пока AMD делает ROCm стабильным, NVIDIA выпускает новые версии CUDA с оптимизациями под новые архитектуры.
Итог: боль ещё есть, но уже не смертельная
Stable Diffusion на AMD работает. Если у тебя топовая карта последнего поколения и готовность потратить выходные на настройку.
Для остальных есть варианты:
- Использовать Vulkan-бэкенд (медленно, но работает)
- Перейти на модели, оптимизированные под CPU (вроде Qwen-Image-2512)
- Воспользоваться облачными сервисами (дорого в долгосрочной перспективе)
- Купить б/у NVIDIA (самый практичный вариант)
AMD пытается. ROCm становится лучше. Но пока это путь для энтузиастов, а не для тех, кто хочет просто генерировать картинки.
Мой совет? Если уже есть AMD — пробуй Vulkan или жди ROCm 6.0. Если выбираешь карту сейчас — смотри в сторону NVIDIA. Даже если придется переплатить.
Потому что время, которое потратишь на настройку AMD, стоит дороже разницы в цене между картами.