Исследования ИИ

NPU для LLM: что AMD XDNA2 даёт на практике — цифры, методология, выводы

Разработчик собрал кастомный бэкенд llama.cpp для AMD XDNA2 NPU и получил 43.7 t/s декода Llama 3.1 8B при 0.947 J/tok — на 27% энергоэффективнее Vulkan. Разбираю методологию, стек и почему 43.7 — это потолок.

28 марта 2026 г.
5 мин чтения
NPUAMDXDNA2Ryzen AILLMGEMMэнергоэффективностьllama.cpp

Контекст: NPU в ноутбуках — маркетинг или реальность?

NPU продают как будущее AI на устройствах. AMD XDNA2 в Ryzen AI MAX, Intel Lunar Lake NPU, Apple Neural Engine — у каждого вендора своя версия. Маркетинговые TOPS впечатляют. Реальные бенчмарки на LLM-задачах практически отсутствуют.

Разработчик собрал кастомный бэкенд llama.cpp, который диспатчит GEMM-операции (ядро вычислений в трансформерах) напрямую на XDNA2 NPU в Ryzen AI MAX 385 (Strix Halo). Не через iGPU, не через общую память — напрямую на нейропроцессор. И получил конкретные цифры.

Железо и стек

Процессор: AMD Ryzen AI MAX 385 (Strix Halo) — гибридный чип с CPU, iGPU (Radeon 8060S) и XDNA2 NPU.

Модель: Meta-Llama-3.1-8B-Instruct, квантизация Q4_K_M — 4-битные веса с группировкой, хороший баланс качества и скорости.

ОС: CachyOS (Linux) с ядром 6.19, драйвер amdxdna, рантайм XRT 2.21.75.

Стек: ядра mlir-aie xclbin (Xilinx/mlir-aie, Apache 2.0), рантайм XRT 2.21.75, форк llama.cpp (MIT), 4 xclbin-слота для разных тайлов K-размерности с маршрутизацией по MIN_N/MAX_N.

Результаты: три бэкенда, одна модель

Vulkan prefill + NPU decode: Prefill 930 t/s (pp512), Decode 43.7 t/s (tg64), мощность 41.5 W, 0.947 J/tok.

Vulkan only: Prefill 833 t/s, Decode 41.6 t/s, мощность 52.2 W, 1.3 J/tok.

CPU only: Prefill 4.6 t/s, Decode 3.76 t/s.

Главное здесь — не абсолютная скорость. 43.7 t/s и 41.6 t/s — разница 5%. Главное — энергоэффективность.

NPU-путь потребляет 41.5 Вт против 52.2 Вт на Vulkan: минус 10.7 Вт (−20%). В пересчёте на джоули на токен: 0.947 J/tok против 1.3 J/tok — экономия 27%. При NPU-декоде iGPU свободен для другой работы — рендеринга UI, батарея живёт дольше.

Исследование потолка: почему 43.7 — это предел

Самая ценная часть работы — систематический поиск потолка производительности.

Пакетная обработка (batch sweep N=1..64). Результат: плоская линия. Никакого улучшения при увеличении батча — NPU не упирается в латентность запуска ядер.

Int4 double-quant. Попытка ещё агрессивнее квантизировать: SNR рухнул с 44.8 до 19.7 дБ. Качество деградирует неприемлемо. Тупик.

Каскадный offload. Идея распределить вычисления между несколькими блоками NPU отвергнута на уровне документации AMD — архитектура не поддерживает.

Спекулятивное декодирование. Llama-3.2-1B как draft-модель, 44% acceptance rate, 212 t/s скорость драфта. По теории должен быть выигрыш. На практике — ноль. Эффективный throughput не вырос.

Это ключевой вывод. Спекулятивное декодирование не помогает, потому что bottleneck — не в compute, а в bandwidth. NPU уже упирается в пропускную способность LPDDR5. Модель читает веса из памяти быстрее, чем память может их отдавать. Даже если NPU будет в десять раз быстрее — скорость не вырастет.

43.7 t/s — это потолок для данной модели на данном железе, определяемый памятью, а не процессором.

Что это значит для индустрии

NPU реально работают для LLM. Не маркетинг. Кастомный бэкенд, конкретные GEMM-ядра, измеримый результат. 43.7 t/s для 8B модели — комфортная скорость генерации.

Энергоэффективность — главное преимущество. Не скорость. NPU выигрывает у iGPU в ваттах на токен. Для ноутбуков и edge-устройств это критично.

Memory wall — фундаментальное ограничение. LPDDR5 задаёт потолок. Улучшения придут от: более быстрой памяти (LPDDR5X), более агрессивной квантизации без потери качества, моделей оптимизированных под низкий memory bandwidth.

Путь к mainstream. Сейчас это форк llama.cpp с кастомными ядрами. Но архитектура показывает жизнеспособность подхода. Если AMD или сообщество интегрируют NPU-бэкенд в основной llama.cpp — каждый владелец Ryzen AI получит энергоэффективный инференс из коробки.

Сравнение с другими NPU

Прямых сравнений с Intel Lunar Lake NPU или Apple Neural Engine на тех же моделях пока нет. Контекст: Apple M4 Neural Engine — 38 TOPS, но Apple не открывает прямой доступ для произвольных LLM-ядер. Intel Lunar Lake NPU — 48 TOPS заявленных, LLM-бенчмарки фрагментарны. AMD XDNA2 — 50 TOPS заявленных, теперь есть реальные LLM-бенчмарки.

Академическая работа AMD (arxiv 2512.13282) показывает до 14.71 TOPS для bf16 GEMM на XDNA2. Реальный LLM-инференс — первый публичный результат с конкретными цифрами.

Итог

AMD XDNA2 NPU реально ускоряет LLM-инференс и экономит энергию. 43.7 t/s декода при 0.947 J/tok — конкретный результат, подтверждённый систематическим исследованием потолка. Узкое место — память, а не вычисления. И это определяет направление: не больше TOPS, а быстрее память и умнее квантизация.

Для тех, кто запускает LLM локально на AMD-железе — это первая точка отсчёта с реальными цифрами.

Автор: Алик Завалишев

Эксперт по ИИ и автоматизации процессов

Больше статей