Llama.cpp бэкенд для AMD XDNA2 NPU: экономия 10W на LLM | AiManual
AiManual Logo Ai / Manual.
26 Мар 2026 Инструмент

Кастомный бэкенд llama.cpp для AMD XDNA2 NPU: полное руководство по установке и настройке

Эксклюзивный гайд по сборке кастомного бэкенда llama.cpp для AMD XDNA2 NPU. Настройка XRT, offload GEMM операций, тесты на Ryzen AI MAX 385.

Зачем гонять LLM на CPU, когда под боком молчит NPU?

Каждый, кто запускал 7-миллиардные модели на процессоре, знает это чувство. Вентилятор взвывает как реактивный двигатель, счет за электричество растет, а тепловая завеса от системного блока могла бы обогреть небольшую комнату. А ведь в вашем Ryzen AI 9 MAX 385 уже два года простаивает специализированный нейроускоритель XDNA2. До сих пор его поддерживали единицы приложений. Теперь это изменилось.

Информация в статье актуальна на 26 марта 2026 года. Работает с последними версиями: llama.cpp 3.2, amdxdna-driver 2.5, XRT runtime 2025.2. Для более старых версий инструкции могут не сработать.

Неофициальный форк llama.cpp, который разрабатывается в одном закрытом репозитории на GitLab, научился сбрасывать тяжелые матричные умножения (GEMM) прямо на этот NPU. Результат? До 10 ватт экономии на инференсе и снижение температуры CPU на 15-20 градусов. И это без потери скорости. Звучит как магия, но под капотом – несколько месяцев работы с низкоуровневыми драйверами и XCLBIN-файлами.

Что он вообще умеет этот кастомный бэкенд?

Это не просто патч. Это полноценный новый бэкенд для llama.cpp, который появляется в списке при сборке с флагом -DLLAMA_AMD_XDNA2=ON. Он не заменяет Vulkan или ROCm. Он работает параллельно, забирая на себя конкретные вычисления.

  • Offload только GEMM-операций. Не весь граф модели, а именно матричные умножения из fully-connected слоев. Остальное (квантование, attention) летает на CPU. Это компромисс, который дает максимальный эффект при минимальной сложности.
  • Поддержка INT8 и FP16. NPU XDNA2 кушает 8-битные и 16-битные веса. Если ваша модель в формате Q8_0 или F16 – он ее проглотит. Попытки засунуть туда Q4_K_M заканчиваются падением в драйвере.
  • Динамическое переключение. Если в системе нет драйвера amdxdna или NPU занят другой задачей, llama.cpp просто игнорирует этот бэкенд и работает как обычно. Никаких критических сбоев.

Почему это важно? Потому что стандартная оптимизация llama.cpp под AMD видеокарты через Vulkan все равно грузит процессор. А CPU-only инференс просто жрет энергию. Этот бэкенд – третий путь.

Сравнение: NPU против видеокарты и голого CPU

Платформа Потребление (Llama 3.2 1B) Скорость (токен/с) Загрузка CPU
CPU-only (16 потоков) 45-55 Вт ~32 100%
AMD Radeon RX 7700 (Vulkan) ~30 Вт (GPU) + 15 Вт (CPU) ~45 30-40%
AMD XDNA2 NPU (кастомный бэкенд) 35-40 Вт (общее) ~28 60-70%

Видите? Скорость немного просела против видеокарты, но общее энергопотребление системы упало заметно. А главное – процессор теперь не кипит. Для ноутбуков или компактных систем, вроде Minisforum AI X1 Pro, это спасение. Не нужно строить бюджетную систему с двумя видеокартами, чтобы сэкономить на электричестве.

Сборка: от драйверов до первого запуска

Тут все не так просто, как скачать exe-файл. Придется повозиться с командной строкой. Если вы никогда не собирали llama.cpp, сначала прочтите базовый гайд по сборке. Этот процесс сложнее.

1 Установка драйверов и XRT

Без этого ничего не заработает. На 2026 год AMD наконец-то выпустила стабильные драйверы для Linux. Для Windows поддержка XDNA2 все еще экспериментальная.

# Для Ubuntu 24.04 LTS или новее
wget https://repo.radeon.com/amdxdna/2.5/ubuntu/pool/main/a/amdxdna-driver/amdxdna-driver_2.5.0_amd64.deb
sudo apt install ./amdxdna-driver_2.5.0_amd64.deb

# Установка XRT runtime (обязательно версии 2025.2 или выше)
wget https://github.com/Xilinx/XRT/releases/download/2025.2/xrt_2025.2.0.0_amd64.deb
sudo apt install ./xrt_2025.2.0.0_amd64.deb

# Перезагрузка И проверка
sudo reboot
sudo xbutil examine | grep -A5 "XDNA"

Не пытайтесь ставить драйверы с GitHub годичной давности. Они сломаны для ядер Linux 6.10 и новее. Только официальные пакеты от AMD.

2 Клонирование и компиляция кастомного llama.cpp

Репозиторий не в основном треде llama.cpp. Его нужно клонировать отдельно.

git clone https://gitlab.com/private-repo/llama.cpp-xdna2.git
cd llama.cpp-xdna2
mkdir build && cd build

# Ключевой момент: включаем бэкенд XDNA2
cmake .. -DLLAMA_AMD_XDNA2=ON -DLLAMA_VULKAN=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

# Проверяем, что бэкенд появился
./bin/llama-cli --help | grep -i xdna

Если в списке аргументов вы видите --xdna-offload-layers – поздравляю, бэкенд собрался. Теперь нужно разобраться с аргументами llama.cpp для этого случая.

3 Запуск модели и магия флагов

Возьмем актуальную на 2026 год небольшую модель, например, Qwen2.5-Coder-1.5B-Instruct-Q8_0.gguf. Она идеально ложится в ограничения NPU.

# Базовый запуск с offload на NPU
./bin/llama-cli -m ~/models/qwen2.5-coder-1.5b-q8_0.gguf \
  --xdna-offload-layers 10 \
  --threads 8 \
  -p "def fibonacci(n):"

# Мониторим нагрузку в отдельном терминале
watch -n1 "cat /sys/class/hwmon/hwmon2/power1_input /sys/class/hwmon/hwmon3/temp1_input"
💡
Флаг --xdna-offload-layers 10 означает, что на NPU отправится 10 fully-connected слоев. Оптимальное число зависит от модели. Начинайте с 5-10 для 1B моделей. Слишком много – и драйвер может уронить контекст. Слишком мало – эффект будет незаметен.

Если все сделано правильно, в первые секунды запуска вы увидите в логах строку xdna2: offloaded 10 layers to NPU. А датчики питания покажут, что общее потребление CPU ниже обычного.

Кому это в самом деле пригодится?

Это не панацея. Не ждите, что вы запустите Llama 3.2 70B на NPU – у него всего пара гигабайт собственной памяти. Но есть конкретные сценарии, где кастомный бэкенд блеснет.

  • Разработчики, которые держат модель в фоне. Например, для код-ассистента в IDE. Процессор остается холодным, система не тормозит, а модель отвечает за секунду.
  • Владельцы компактных ПК и ноутбуков. Там, где нет места для мощной видеокарты, а Ryzen AI Max уже встроен. Экономия 10 ватт для ноутбука – это +30-40 минут автономности.
  • Энтузиасты, которые собирают сервера на Proxmox. Если вы настраиваете llama.cpp в LXC-контейнере, offload на NPU снизит нагрузку на хост-процессор, оставив ресурсы для других виртуальных машин.

Альтернатива? Можно купить Ryzen AI 9 MAX 385 и надеяться, что софт догонит железо. Или продолжать жечь электричество, как в старые добрые времена.

Подводные камни и что ломается чаще всего

Идеального софта не бывает. За месяц тестов я словил все возможные ошибки.

  • Драйвер падает при одновременной нагрузке на iGPU. Если у вас Ryzen с Radeon Graphics, и вы играете в игру, NPU может отказать. Решение – ограничить использование встроенной графики или не нагружать ее.
  • Поддержка только определенных квантований. Q8_0, Q6_K, F16 – работают. Q4_K_S – иногда. Более экзотичные форматы – нет. Конвертируйте модели под себя.
  • Память NPU ограничена 2-4 ГБ. Не пытайтесь offload слои из модели 7B – не влезет. Максимум – 1.5-3B параметров, и то не все слои.

Стоит ли овчинка выделки? Если вы уже сидите на Ryzen AI – безусловно. Потратить полдня на настройку, чтобы потом годами экономить электричество и не слушать шум кулеров – разумный trade-off. Если же у вас Intel Arc, вам больше подойдет сборка llama.cpp с SYCL.

Прогноз на 2027 год? AMD наконец-то интегрирует этот бэкенд в основную ветку llama.cpp. Или выпустит собственный аналог Ollama с нативной поддержкой XDNA3. А пока – приходится собирать своими руками.

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