Пользовательский бэкенд llama.cpp переносит матричное умножение LLM на NPU AMD XDNA2 в процессорах Ryzen AI MAX 385

Пользовательский бэкенд для выгрузки на NPU AMD XDNA2
Разработчик создал пользовательский бэкенд llama.cpp, который отправляет операции GEMM напрямую на NPU AMD XDNA2 в Ryzen AI MAX 385 (Strix Halo). Этот подход позволяет избежать использования iGPU и конфликтов в общей памяти.
Конфигурация оборудования и программного обеспечения
Модель: Meta-Llama-3.1-8B-Instruct Q4_K_M
Оборудование: Ryzen AI MAX 385, CachyOS 6.19, драйвер amdxdna, XRT 2.21.75
Результаты производительности
- Vulkan предзаполнение + NPU декодирование: 930 t/s предзаполнение (pp512), 43,7 t/s декодирование (tg64), средняя мощность 41,5 Вт, 0,947 Дж/токен
- Только Vulkan: 833 t/s предзаполнение, 41,6 t/s декодирование, средняя мощность 52,2 Вт, 1,3 Дж/токен
- Только CPU: 4,6 t/s предзаполнение, 3,76 t/s декодирование
Путь декодирования через NPU экономит примерно 10 Вт по сравнению с использованием только Vulkan, при этом сохраняя (и даже немного превосходя) пропускную способность декодирования, поскольку iGPU остается свободным для других задач.
Технологический стек
- Ядра: mlir-aie xclbins (Xilinx/mlir-aie, Apache 2.0)
- Динамическая отправка: XRT 2.21.75
- Основа: Форк ggml-org/llama.cpp (MIT)
- Маршрутизация ядер: 4 слота xclbin, покрывающих различные тайлы K-измерения, с маршрутизацией MIN_N/MAX_N для выбора подходящего ядра во время выполнения
Исследование потолка производительности
Разработчик пытался превысить показатель 43,7 t/s декодирования с помощью нескольких подходов:
- Перебор пакетов N=1..64: Улучшений нет (плоская производительность)
- Int4 двойное квантование: Убило SNR (44,8 → 19,7 дБ) - тупиковый путь
- Каскадная выгрузка: Исключена документацией AMD
- Спекулятивное декодирование с черновиком Llama-3.2-1B: 44% принятия, 212 t/s черновик, но нулевой эффективный прирост
Отсутствие улучшений от спекулятивного декодирования (которое обычно дает прирост при 44% принятия) указывает на то, что узким местом является пропускная способность LPDDR5, а не вычисления. NPU уже упирается в ограничение памяти, что делает 43,7 t/s потолком для этой модели на данном оборудовании.
Ссылки на проект
- GitHub: https://github.com/BrandedTamarasu-glitch/OllamaAMDNPU
- Журнал изменений: https://brandedtamarasu-glitch.github.io/OllamaAMDNPU/xdna-npu/
Проект был создан с помощью Claude Sonnet 4.6 / Claude Code, что раскрыто для целей воспроизводимости. Разработчик ищет отзывы от других пользователей, работающих на Strix Halo или Phoenix с драйвером amdxdna, чтобы сравнить пропускную способность декодирования на сопоставимых квантованиях и определить, сталкиваются ли другие конфигурации XDNA2 с тем же потолком производительности.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

OpenGauge: Инструмент с открытым исходным кодом для локального отслеживания затрат на LLM-агентов
OpenGauge — это инструмент с открытым исходным кодом, который отслеживает вызовы API от LLM-агентов, таких как OpenClaw, записывая использование токенов, затраты и задержки в локальную базу данных SQLite. Он включает режим прокси для автоматического логирования, подробную статистику по затратам и функционал автоматического выключателя для предотвращения бесконечных циклов.

Подробности API инструментов Claude Code раскрыты
Пользователь Reddit извлек детали о Tool API Claude Code, включая операции с файловой системой, выполнение команд bash, веб-поиск и структуру вызовов инструментов с использованием XML-подобных блоков.

JetBrains представляет плагин для современного Go-кода с AI-агентами Junie и Claude Code.
JetBrains выпустила плагин для AI-агентов Junie и Claude Code, улучшив их способность генерировать современный код на Go, соответствующий последним функциям и лучшим практикам языка.

Сервер MCP подключает Claude к инвентарю вин CellarTracker
Разработчик создал MCP-сервер, который напрямую подключает Claude к аккаунтам CellarTracker, позволяя задавать вопросы о винном инвентаре, дегустационных заметках, истории покупок и оптимальных сроках употребления без ручного экспорта CSV.