Ejecutar LLMs en la NPU de AMD con FastFlowLM - Guía para Fedora

Ahora puedes ejecutar modelos de lenguaje extensos (LLMs) directamente en tu NPU de AMD usando Fedora. Esta guía te muestra cómo configurar el stack en un ASUS ROG Flow Z13 con un chip Ryzen AI Max 390.

La configuración requiere cuatro capas de funcionamiento:

  • Kernel + controlador DKMS (amdxdna): Crea el nodo del dispositivo y carga el firmware.
  • XRT base: El entorno de ejecución (runtime) de AMD.
  • Plugin NPU de XRT: Permite que XRT detecte la NPU.
  • FastFlowLM (flm): La herramienta que ejecuta los modelos.

Dado que Fedora carece de paquetes precompilados para esto, debes compilar desde el código fuente.

⚠️ Correcciones críticas antes de empezar

  1. Habilitar IOMMU Muchos usuarios deshabilitan IOMMU para el ajuste de la GPU. Esto rompe la NPU. Comprueba tu configuración: cat /proc/cmdline Si ves amd_iommu=off, elimínalo de /etc/default/grub, regenera tu configuración de grub y reinicia.

  2. Establecer Memlock ilimitado La NPU necesita memoria bloqueada. Comprueba tu límite: ulimit -l Si no es ilimitado, añade esto a /etc/security/limits.d/99-memlock.conf:

  • soft memlock unlimited
  • hard memlock unlimited Luego, cierra sesión y vuelve a entrar.
  1. Corregir la ruta de xrt-smi No crees un enlace simbólico (symlink) para xrt-smi. Esto rompe el script interno. Usa un wrapper en su lugar: sudo tee /usr/local/bin/xrt-smi <<'EOF'

#!/bin/sh exec /opt/xilinx/xrt/bin/xrt-smi "$@" EOF sudo chmod +x /usr/local/bin/xrt-smi

Resumen de los pasos de compilación

  • Instalar dependencias: Usa dnf para instalar git, dkms, cmake y varias librerías de desarrollo.
  • Compilar XRT: Clona el repositorio xdna-driver. Crea un wrapper de cmake3 para Fedora. Compila e instala los RPM.
  • Instalar el plugin de la NPU: Compila el xrt_plugin desde el repositorio xdna-driver e instala el RPM resultante.
  • Compilar FastFlowLM: Clona el repositorio de FastFlowLM y usa cmake para compilar e instalar.

Comandos de verificación

Comprueba el kernel y la NPU: flm validate

Comprueba el hardware: xrt-smi examine xrt-smi validate

Ejecuta un modelo: flm run gemma4-it:e4b

Benchmarks de rendimiento (Ryzen AI Max 390)

  • Tiempo hasta el primer token: 1.21 s
  • Velocidad de prellenado (prefill): 18 tok/s
  • Velocidad de decodificación: 11 tok/s

Fuente: https://dev.to/ankk98/running-llms-on-amd-npu-with-fastflowlm-fedora-guide-1oo5

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi