Backend personalizado de llama.cpp descarga la multiplicación de matrices de LLM a la NPU AMD XDNA2 en Ryzen AI MAX 385

✍️ OpenClawRadar📅 Publicado: 26 de marzo de 2026🔗 Source
Backend personalizado de llama.cpp descarga la multiplicación de matrices de LLM a la NPU AMD XDNA2 en Ryzen AI MAX 385
Ad

Backend Personalizado para Descarga en NPU AMD XDNA2

Un desarrollador ha creado un backend personalizado de llama.cpp que envía operaciones GEMM directamente al NPU AMD XDNA2 en Ryzen AI MAX 385 (Strix Halo). Este enfoque evita el uso de la iGPU y la contención de memoria compartida.

Configuración de Hardware y Software

Modelo: Meta-Llama-3.1-8B-Instruct Q4_K_M

Hardware: Ryzen AI MAX 385, CachyOS 6.19, controlador amdxdna, XRT 2.21.75

Resultados de Rendimiento

  • Prefill Vulkan + decodificación NPU: 930 t/s prefill (pp512), 43.7 t/s decodificación (tg64), 41.5W potencia promedio, 0.947 J/tok
  • Solo Vulkan: 833 t/s prefill, 41.6 t/s decodificación, 52.2W potencia promedio, 1.3 J/tok
  • Solo CPU: 4.6 t/s prefill, 3.76 t/s decodificación

La ruta de decodificación del NPU ahorra aproximadamente 10W en comparación con solo Vulkan, manteniendo (y superando ligeramente) el rendimiento de decodificación, ya que la iGPU permanece libre para otras tareas.

Pila Técnica

  • Kernels: mlir-aie xclbins (Xilinx/mlir-aie, Apache 2.0)
  • Envío en tiempo de ejecución: XRT 2.21.75
  • Base: Fork de ggml-org/llama.cpp (MIT)
  • Enrutamiento de kernels: 4 ranuras xclbin que cubren diferentes mosaicos de dimensión K con enrutamiento MIN_N/MAX_N para seleccionar el kernel apropiado en tiempo de ejecución
Ad

Investigación del Límite de Rendimiento

El desarrollador intentó superar los 43.7 t/s de decodificación con varios enfoques:

  • Barrido por lotes N=1..64: Sin mejora (rendimiento plano)
  • Int4 doble cuantización: Destruyó SNR (44.8 → 19.7 dB) - callejón sin salida
  • Descarga en cascada: Descartada por la documentación de AMD
  • Decodificación especulativa con borrador Llama-3.2-1B: 44% tasa de aceptación, 212 t/s borrador, pero ganancia efectiva cero

La falta de mejora con la decodificación especulativa (que normalmente proporciona ganancias con una tasa de aceptación del 44%) indica que el cuello de botella es el ancho de banda de LPDDR5, no el cómputo. El NPU ya está alcanzando el límite de memoria, haciendo que 43.7 t/s sea el máximo para este modelo en este hardware.

Enlaces del Proyecto

  • GitHub: https://github.com/BrandedTamarasu-glitch/OllamaAMDNPU
  • Registro de cambios: https://brandedtamarasu-glitch.github.io/OllamaAMDNPU/xdna-npu/

El proyecto fue construido con Claude Sonnet 4.6 / Claude Code, divulgado con fines de reproducibilidad. El desarrollador busca comentarios de otros que ejecuten Strix Halo o Phoenix con el controlador amdxdna para comparar el rendimiento de decodificación en cuantizaciones comparables y determinar si otras configuraciones XDNA2 encuentran el mismo límite de rendimiento.

📖 Read the full source: r/LocalLLaMA

Ad

👀 Ver también