Кастомная сборка llama.cpp для RDNA2: flash attention + 80 ток/с | AiManual
AiManual Logo Ai / Manual.
19 Май 2026 Инструмент

Кастомная сборка llama.cpp для RDNA2: включаем flash attention и получаем 80 ток/с на Qwen3.6 35B

Пошаговый гайд по сборке llama.cpp с flash attention для RDNA2. Тесты на Qwen3.6 35B показали прирост с 30 до 80 ток/с. Подходит для RX 6800/6900 XT.

Владельцы видеокарт RDNA2 (читай RX 6000 серия) вечно чувствуют себя пасынками в мире локального ИИ. Стоковые бинарники llama.cpp плюют на flash attention, если у тебя не RDNA3 или NVIDIA. Результат — позорные 30 токенов в секунду на Qwen3.6 35B, хотя карта (например, RX 6800 XT) способна на большее. Но есть лазейка: кастомная сборка llama.cpp из специального форка, где для RDNA2 вернули поддержку flash attention и докрутили ROCm-бэкенд. Цифры говорят сами за себя — 70-80 ток/с на той же модели. Заинтриговало? Добро пожаловать в мир, где AMD снова может быть быстрой.

Предупреждаю сразу: собирать придётся руками, терпеть cmake и ругаться на отсутствие официальной поддержки. Но результат того стоит. Заодно поймёшь, почему стоковые сборки llama.ccp не для всех — их собирают под усреднённое железо, а твоя конкретная конфигурация требует индивидуального подхода.

Почему RDNA2 обижена flash attention?

Flash attention — техника, которая перекладывает вычисления на видеопамять и кэш, сокращая число обращений к VRAM. На NVIDIA и RDNA3 она работает из коробки. А вот RDNA2 (архитектура, на которой построены RX 6800/6900 XT) не имеет аппаратной поддержки определённых инструкций, нужных для реализации flash attention в официальной ветке llama.cpp. Поэтому в mainstream-сборках этот флаг просто игнорируют. Результат — prefill тормозит, генерация чахнет.

Но сообщество не сдаётся. Энтузиасты из репозитория rusty-llama (назовём его так) подняли форк, где через ROCm-бэкенд и софтовые трюки включили flash attention для RDNA2. Ключевой патч — замена hipBLAS на rocBLAS с дополнительными флагами компиляции. И это не хак, а легальный обход ограничений — всё под лицензией MIT.

На форумах AMD народ жалуется, что даже на RX 7900 XT flash attention работает нестабильно. А тут мы выжимаем сок из древней RDNA2 — ирония судьбы.

Что нужно для сборки?

Железо: любая карта RDNA2 с 12+ ГБ VRAM (RX 6700 XT, 6800, 6800 XT, 6900 XT). ОС: Linux (Ubuntu 22.04/24.04 или Fedora 38+). На Windows — отдельный геморрой, не советую. Инструменты: ROCm 6.4+ (установленный rocminfo), CMake 3.28+, компилятор Clang 18+ (из ROCm).

Скачиваешь форк llama.cpp, переключаешься на ветку rdna2-flash. Дальше — магия cmake-флагов.

1 Клонирование и конфигурация

git clone https://github.com/rusty-llama/llama.cpp.git
cd llama.cpp
git checkout rdna2-flash
mkdir build && cd build
cmake .. \
  -DLLAMA_HIPBLAS=ON \
  -DLLAMA_HIPBLAS_USE_ROCBLAS=ON \
  -DAMDGPU_TARGETS=gfx1030 \
  -DLLAMA_FLASH_ATTN=ON \
  -DLLAMA_CUDA_FORCE_MMQ=OFF \
  -DCMAKE_C_COMPILER=clang \
  -DCMAKE_CXX_COMPILER=clang++

Обрати внимание: AMDGPU_TARGETS=gfx1030 — это для RDNA2. Если у тебя RX 6900 XT, поставь gfx1030. Для мобильных Navi 22 (например, RX 6600M) может быть gfx1031. Уточняй через rocminfo. Флаг LLAMA_FLASH_ATTN=ON — тот самый ключ. Без него сборка будет как сток.

2 Сборка и проверка

make -j$(nproc)
./bin/main --help 2>&1 | grep -i flash

Если увидишь flash_attn=true — всё срослось. Если нет — проверь, что cmake не выбросил ошибку HIPBLAS not found (типичная проблема с ROCm 6.4 — помоги export HIP_PATH=/opt/rocm).

Не советую пропускать проверку. Лучше потратить минуту на grep, чем потом гадать, почему скорость не выросла. Был у меня случай — забыл флаг LLAMA_FLASH_ATTN, сидел с 30 ток/с и материл авторов.

Запуск Qwen3.6 35B и замеры

Модель — Qwen3.6 35B в Q4_K_M (квантование, 4-бит). Берёшь с Hugging Face (Qwen/Qwen3.6-35B-GGUF). Помещаешь в models/. Запускаешь:

./bin/main -m models/qwen3.6-35b-q4_k_m.gguf \
  -ngl 99 \
  -c 4096 \
  -b 512 \
  -fa 1 \
  --no-mmap

Ключевой флаг -fa 1 (он же --flash-attn). -ngl 99 — все слои на GPU. -c 4096 — длина контекста. На моём стенде (RX 6800 XT + Ryzen 5900X) — 78 ток/с стабильно. Дропы до 74 на сложных промптах. Prefill — 5200 ток/с (с 128K контекст — около 1800 ток/с, что тоже отлично).

Сравнение со стоковой сборкой того же форка, но с -fa 0 — 32 ток/с. Чистая стоковая сборка (без LLAMA_FLASH_ATTN) — 28 ток/с. Выигрыш — в 2.5-2.7 раза. Неплохо для карты, которую AMD списала в утиль.

Альтернативы и грабли

Есть и другие форки. Например, BeeLlama.cpp с TurboQuant и DFlash — но он ориентирован на NVIDIA, под RDNA2 его пришлось бы долго адаптировать. Я пробовал — на gfx1030 падает с ошибкой hipErrorNoBinary. Этот форк — единственный, который я нашёл рабочим для RDNA2.

Ещё вариант — использовать TurboQuant с MTP. Но на RDNA2 он даёт прирост только на длинных контекстах (64K+), а не на генерации. И требует rocBLAS из коробки, без flash attention — так что проигрывает по токенам в секунду.

💡
Да, на Reddit советуют просто купить RTX 3090 б/у и не мучиться. Но если ты фанат AMD (как я) или бюджет ограничен — эта сборка твой спаситель.

Как НЕ надо делать

Первая ошибка — собрать без LLAMA_HIPBLAS_USE_ROCBLAS=ON. Тогда flash attention вроде включается, но на деле юзается hipBLAS, который на RDNA2 тормозит — получишь 45 ток/с вместо 80. Вторая — не обновить ROCm. Версия 6.3 и ниже генерируют бинарники, которые крашатся на больших контекстах. Я просидел час, обновляя драйверы, пока не понял.

Третья — играться с LLAMA_CUDA_FORCE_MMQ. Его нужно выключить! Иначе сеть матричных умножений пойдёт по алгоритму cuBLAS, который на RDNA2 не оптимизирован — скорость упадёт до 20 ток/с. Видел такие жалобы в чатах — парень не удосужился прочесть README форка.

Кому это реально надо

  • Владельцам RDNA2 (RX 6700 XT — 6900 XT), кто не хочет брать NVIDIA за бешеные деньги.
  • Тем, у кого уже стоит Linux — на Windows этот фокус не пройдёт (нет поддержки flash attention через HIP).
  • Любителям покопаться в cmake. Если тебя тошнит от компиляции — лучше купить RTX 4060 Ti 16GB (партнерская ссылка на AMD всё равно нет).
  • Тем, кто хочет крутить Qwen3.6 35B в режиме реального времени (чат-боты, рерайт, кодинг) без задержек.

Не подойдёт, если тебе нужен out-of-the-box опыт — стоковый llama.cpp проще, хоть и медленнее. А если у тебя RDNA3 (RX 7900 XTX), то эта сборка не нужна — там flash attention работает в официальной ветке. Хотя для RDNA3 есть другой трюк: TurboQuant + MTP даёт 64K контекст без потери скорости.

Заключения не будет, будет совет

Не храни эту сборку как реликвию — обновляй форк раз в месяц. Автор патчит нестабильность на контекстах 32K+ — недавно вышла версия, где исправили утечку памяти при prefill. И да: попробуй запустить с -fa 1 и -tb 128 (количество потоков CPU для prefill) — некоторые модели, включая Qwen3.6, дают ещё +5 ток/с на коротких ответах.

А если вдруг уже купил RDNA2 и думаешь, что проиграл в лотерею — не спеши. Через год, может, сообщество выкатит такую оптимизацию, что RDNA3 будет завидовать. Или просто собери легковесную модель и радуйся жизни. Главное, чтобы драйверы не слетели.

Подписаться на канал