Backend Personalizado do llama.cpp Descarrega Multiplicação de Matrizes LLM para NPU AMD XDNA2 no Ryzen AI MAX 385

Backend Personalizado para Descarga no NPU AMD XDNA2
Um desenvolvedor criou um backend personalizado para llama.cpp que despacha operações GEMM diretamente para o NPU AMD XDNA2 no Ryzen AI MAX 385 (Strix Halo). Essa abordagem evita o uso da iGPU e a contenção de memória compartilhada.
Configuração de Hardware e Software
Modelo: Meta-Llama-3.1-8B-Instruct Q4_K_M
Hardware: Ryzen AI MAX 385, CachyOS 6.19, driver amdxdna, XRT 2.21.75
Resultados de Desempenho
- Prefill Vulkan + decodificação NPU: 930 t/s prefill (pp512), 43,7 t/s decode (tg64), 41,5W potência média, 0,947 J/tok
- Apenas Vulkan: 833 t/s prefill, 41,6 t/s decode, 52,2W potência média, 1,3 J/tok
- Apenas CPU: 4,6 t/s prefill, 3,76 t/s decode
O caminho de decodificação do NPU economiza aproximadamente 10W em comparação com apenas Vulkan, mantendo (e até superando levemente) a taxa de decodificação, já que a iGPU permanece livre para outros trabalhos.
Stack Técnico
- Kernels: mlir-aie xclbins (Xilinx/mlir-aie, Apache 2.0)
- Despacho em tempo de execução: XRT 2.21.75
- Base: Fork de ggml-org/llama.cpp (MIT)
- Roteamento de kernel: 4 slots xclbin cobrindo diferentes blocos de dimensão K com roteamento MIN_N/MAX_N para selecionar o kernel apropriado em tempo de execução
Investigação do Limite de Desempenho
O desenvolvedor tentou ultrapassar 43,7 t/s de decodificação com várias abordagens:
- Varredura de lote N=1..64: Nenhuma melhoria (desempenho plano)
- Int4 double-quant: Matou SNR (44,8 → 19,7 dB) - beco sem saída
- Descarga em cascata: Descartada pela documentação da AMD
- Decodificação especulativa com rascunho Llama-3.2-1B: 44% taxa de aceitação, 212 t/s rascunho, mas ganho efetivo zero
A falta de melhoria na decodificação especulativa (que normalmente fornece ganhos com 44% de taxa de aceitação) indica que o gargalo é a largura de banda LPDDR5, não o processamento. O NPU já está atingindo o limite de memória, tornando 43,7 t/s o teto para este modelo neste hardware.
Links do Projeto
- GitHub: https://github.com/BrandedTamarasu-glitch/OllamaAMDNPU
- Changelog: https://brandedtamarasu-glitch.github.io/OllamaAMDNPU/xdna-npu/
O projeto foi construído com Claude Sonnet 4.6 / Claude Code, divulgado para fins de reprodutibilidade. O desenvolvedor está buscando feedback de outros que executam Strix Halo ou Phoenix com o driver amdxdna para comparar a taxa de decodificação em quantizações comparáveis e determinar se outras configurações XDNA2 encontram o mesmo limite de desempenho.
📖 Leia a fonte completa: r/LocalLLaMA
👀 See Also

Plugin de Canal Matriz Claude Code Construído em Rust com Suporte E2EE
Um desenvolvedor criou um plugin de canal Matrix para Claude Code em Rust, adicionando suporte para texto, arquivos, imagens com descriptografia E2EE, encadeamento de respostas, reações e comandos de bot. O binário de 14MB é licenciado MIT e funciona com qualquer servidor Matrix.

OpenClaw Alexa Voice Proxy Permite Interação de Voz Bidirecional
openclaw-alexa-voice é um proxy Node.js que conecta uma Alexa Custom Skill ao gateway OpenClaw com um sistema de resposta de três níveis para consultas de voz. Ele lida com respostas rápidas em menos de 1 segundo, respostas do agente em menos de 12 segundos e consultas complexas adiadas processadas de forma assíncrona dentro de 2 minutos.

Heddle: Aplicação de Confiança e Registro de Auditoria para Conexões MCP do Claude Desktop
Heddle é uma ferramenta de código aberto que adiciona níveis de confiança, controles de acesso e registro de auditoria às conexões MCP do Claude Desktop, permitindo o gerenciamento seguro de múltiplos serviços através de uma única interface com seis pacotes iniciais incluídos.

Total Recall: Conhecimento Local de Grafos para Histórias de Conversação de Código do Claude
Total Recall é um sistema de código aberto que importa transcrições de conversas em JSONL do Claude Code para um banco de dados SQLite com busca de texto completo e embeddings vetoriais, tornando o histórico de conversas pesquisável entre sessões. Ele recupera trechos reais de conversas com contexto consciente do DAG e inclui um importador do ChatGPT.