Вы купили RX 7900 XTX или новую Radeon AI Pro R9700, поставили ROCm 7, запустили Stable Diffusion в ComfyUI... и уперлись в стену. Все крутые оптимизации - Triton для ядерных операций, Flash-attention для ускорения внимания в LLM, bitsandbytes для квантования - работают только под Linux. Официально.
AMD говорит "нет". Сообщество говорит "заткнись и собирай сам". Вот как это сделать.
Предупреждение: Это не официальная поддержка. Вы лезете в код, меняете флаги компиляции, собираете из исходников. Сломать можно всё. Но иначе на Windows с AMD вы никогда не получите нормальной производительности в LLM.
Почему это так сложно? (И почему это всё равно стоит делать)
Три причины, по которым официального пути нет:
- Triton изначально заточен под CUDA. ROCm поддержка - костыль, который плохо работает на Windows из-за различий в компиляторах.
- Flash-attention 2 использует специфичные инструкции AMD CDNA (не RDNA!), которые на потребительских картах эмулируются через ROCm.
- bitsandbytes вообще не имеет ROCm поддержки в основной ветке - нужно использовать форки, которые сами по себе нестабильны.
Но если вы читали нашу статью про разгон 6700XT под ROCm, то уже знаете: сообщество давно обходит официальные ограничения. С gfx1100 архитектурой (RX 7900 серия, Radeon AI Pro) ситуация стала лучше - но только на Linux.
На Windows вам придется повторить весь путь коммиттеров GitHub, которые месяцами пилят патчи.
hipconfig --version. Если нет - качайте с официального сайта AMD. И да, только Windows 11 22H2 или новее. На Windows 10 не заработает.Шаг 0: Подготовка поля боя
Сначала ставим весь необходимый тулкит через Chocolatey. Не используйте установщики с сайтов - только так гарантируется совместимость версий.
# Открываем PowerShell от имени администратора
# Устанавливаем Chocolatey, если еще нет
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Ставим всё необходимое
choco install -y python --version=3.10.11 # Важно: именно 3.10.11
choco install -y git
choco install -y visualstudio2022buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install -y ninja
Почему Python 3.10.11, а не 3.11 или 3.12? Потому что ROCm toolchain на Windows до сих пор завязан на конкретные версии библиотек, которые ломаются на новых Python. Это раздражает, но таковы реалии на начало 2026 года.
1 Сборка Triton для ROCm 7
Официальный Triton не соберется. Точка. Нужен форк с патчами под ROCm. Самый живой на февраль 2026 - triton-rocm-win от сообщества ROCm на Windows.
# Клонируем форк
git clone https://github.com/ROCm-Windows/triton-rocm-win.git
cd triton-rocm-win
# Переключаемся на ветку для ROCm 7
git checkout rocm7-windows-support
# Создаем виртуальное окружение
python -m venv venv_triton
venv_triton\Scripts\activate
# Ставим зависимости
pip install --upgrade pip setuptools wheel
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.0.1
# Ключевой момент: правильная установка pybind11
pip install "pybind11[global]"==2.12.0
Ошибка, которая сломает всё: Если поставить pybind11 версии 2.13 или новее, компиляция упадет с невнятными ошибками template deduction. Версия 2.12.0 - проверенная работающая.
# Компилируем Triton
# Устанавливаем переменные окружения для ROCm
$env:ROCM_PATH = "C:\Program Files\AMD\ROCm\7.0" # Проверьте ваш путь!
$env:PATH = "$env:ROCM_PATH\bin;$env:PATH"
# Запускаем setup.py с нужными флагами
python setup.py build develop --cmake="-G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_WERROR=OFF -DROCM_PATH=$env:ROCM_PATH"
Компиляция займет 15-30 минут. Если увидите ошибки про hipErrorNoBinaryForGpu - значит, не настроены переменные окружения ROCm. Если ошибки про llvm - проверьте, что Visual Studio Build Tools установлены полностью.
2 Flash-attention 2: обманываем систему
Здесь хитрость в другом. Официальный flash-attention 2 не поддерживает Windows вообще. Но есть форк, который добавляет ROCm поддержку через хип.
# Клонируем специальный форк
cd ..
git clone https://github.com/ROCmSoftwarePlatform/flash-attention.git
cd flash-attention
# Используем конкретный коммит, который работает с ROCm 7
git checkout 78f6f5c # Это хэш коммита на февраль 2026
# Создаем новое виртуальное окружение
python -m venv venv_flash
venv_flash\Scripts\activate
# Ставим PyTorch с ROCm поддержкой
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.0.1
# Ключевой момент: нужно поставить ninja ДО сборки
pip install ninja
# Собираем flash-attention
# Флаг -DCMAKE_CUDA_COMPILER=/dev/null обманывает CMake, заставляя его использовать hipcc
python setup.py install --cmake="-G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CUDA_COMPILER=/dev/null"
Флаг -DCMAKE_CUDA_COMPILER=/dev/null выглядит как костыль (потому что это и есть костыль). Он говорит системе: "Да, CUDA компилятор есть, но он вот тут лежит". На Windows путь /dev/null преобразуется в nul, что заставляет CMake переключиться на hipcc.
$env:HIP_ARCH = "gfx1100". Иначе компилятор может сгенерировать код для gfx1030, который будет работать медленнее.3 bitsandbytes: самый проблемный ребенок
bitsandbytes - это отдельный уровень боли. Официальный репозиторий даже не упоминает ROCm. Но без него квантование LLM моделей будет работать в 5-10 раз медленнее.
Единственный работающий вариант на февраль 2026 - форк TimDettmers с патчами под ROCm, плюс наши правки для Windows.
cd ..
git clone https://github.com/TimDettmers/bitsandbytes.git
cd bitsandbytes
# Переключаемся на ROCm ветку
git checkout rocm_support
# Применяем патч для Windows
# Создаем файл win_rocm.patch со следующим содержанием:
"""
diff --git a/setup.py b/setup.py
index 1a2b3c4..5d6e7f8 100644
--- a/setup.py
+++ b/setup.py
@@ -15,6 +15,9 @@ def get_cuda_bare_metal_version(cuda_dir):
else:
cuda_dir = '/usr/local/cuda'
+ if os.name == 'nt': # Windows
+ return '11.8' # Обманываем систему
+
raw_output = subprocess.check_output([cuda_dir + "/bin/nvcc", "-V"], universal_newlines=True)
output = raw_output.split()
release_idx = output.index("release") + 1
""" | Out-File -FilePath win_rocm.patch -Encoding UTF8
git apply win_rocm.patch
Патч обманывает setup.py, заставляя его думать, что у нас CUDA 11.8. На самом деле мы будем компилировать под ROCm, но без этого обмана система откажется собирать проект.
# Создаем окружение
python -m venv venv_bnb
venv_bnb\Scripts\activate
# Ставим зависимости
pip install torch --index-url https://download.pytorch.org/whl/rocm7.0.1
pip install scipy
pip install packaging
# Компилируем с флагами для ROCm
$env:BNB_ROCM_BUILD = "1"
$env:ROCM_HOME = "C:\Program Files\AMD\ROCm\7.0"
python setup.py build_ext --inplace --cmake="-G Ninja -DCMAKE_BUILD_TYPE=Release -DBNB_ROCM_BUILD=ON"
# Устанавливаем
pip install .
Если сборка падает с ошибкой hipErrorNoBinaryForGpu, нужно явно указать архитектуру:
$env:HIP_ARCH = "gfx1100" # для RX 7900/Radeon AI Pro
$env:HIP_ARCH = "gfx1030" # для RX 6800/6900/6700
Тестирование: работает ли всё это вообще?
Создайте тестовый скрипт:
import torch
import triton
import flash_attn
import bitsandbytes as bnb
print(f"PyTorch версия: {torch.__version__}")
print(f"PyTorch ROCm доступен: {torch.cuda.is_available()}")
print(f"PyTorch устройство: {torch.cuda.get_device_name(0)}")
# Тест Triton
try:
from triton.testing import do_bench
print("Triton загружен успешно")
except Exception as e:
print(f"Triton ошибка: {e}")
# Тест Flash-attention
try:
import flash_attn.functional as F
print("Flash-attention загружен")
except Exception as e:
print(f"Flash-attention ошибка: {e}")
# Тест bitsandbytes
try:
linear = bnb.nn.Linear8bitLt(1024, 512, bias=False)
print("bitsandbytes 8-bit линейный слой создан")
except Exception as e:
print(f"bitsandbytes ошибка: {e}")
Запустите его в каждом виртуальном окружении (или создайте одно общее, куда установите все три пакета). Если видите ошибки импорта - значит, что-то собралось неправильно.
Интеграция с ComfyUI и текстовыми LLM
Теперь самое интересное - заставить это всё работать в реальных приложениях.
Для ComfyUI:
# Активируем окружение ComfyUI
cd ComfyUI_windows_portable
python_embeded\python.exe -m venv venv_comfy
venv_comfy\Scripts\activate
# Устанавливаем наши собранные пакеты
pip install path\to\triton-rocm-win # Используйте -e для разработки
pip install path\to\flash-attention
pip install path\to\bitsandbytes
# Теперь устанавливаем остальные зависимости ComfyUI
pip install -r requirements.txt
В настройках ComfyUI выберите бэкенд ROCm. Если всё собрано правильно, скорость генерации в Stable Diffusion 3 или SDXL должна вырасти на 15-40% по сравнению со стандартным PyTorch ROCm бэкендом.
Для текстовых LLM (Ollama, llama.cpp с GPU):
Если вы используете Ollama с ROCm бэкендом, bitsandbytes ускорит загрузку квантованных моделей. Flash-attention заработает автоматически в моделях, которые его поддерживают (как большинство современных LLM на февраль 2026).
Важный нюанс: Не пытайтесь использовать все три пакета одновременно в одном скрипте, если они собраны в разных окружениях. Соберите единое окружение, куда установите PyTorch с ROCm поддержкой, а затем все три пакета. Иначе получите конфликты версий библиотек.
Что делать, если ничего не работает?
Типичные проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
hipErrorNoBinaryForGpu |
Компилятор не знает архитектуру вашей карты | Установите $env:HIP_ARCH в правильное значение |
CMake Error: Could not find CUDA |
Скрипты ищут CUDA, а не ROCm | Используйте флаг -DCMAKE_CUDA_COMPILER=/dev/null |
| Импорт падает с segfault | Несовместимость версий PyTorch | Убедитесь, что везде одна версия PyTorch с ROCm |
| Сборка занимает 2+ часа | Ninja не используется или нет параллельной сборки | Добавьте -G Ninja и --parallel 8 |
Стоит ли оно того?
Честно? Для разового запуска Stable Diffusion - нет. Вы потратите день на настройку, чтобы получить 20% прирост, который заметите только на бенчмарках.
Но если вы, как и автор статьи про две Radeon AI Pro R9700, строите систему для локальных LLM, которые работают часами - тогда да. Flash-attention ускоряет инференс в 1.5-3 раза. Bitsandbytes позволяет загружать 70B модели на 24 ГБ VRAM. Triton оптимизирует custom kernels.
Это разница между "модель работает" и "модель работает прилично".
AMD не хочет делать официальную поддержку Windows для этих библиотек. Сообщество делает это за них. Ваша задача - собрать пазл из форков, патчей и костылей. Но когда всё заработает - вы получите на Windows с AMD почти такую же производительность, как на Linux.
Почему "почти"? Потому что драйверы ROCm на Windows всё еще на 10-15% медленнее. Но это уже тема для другой статьи.