Acheté un Dell XPS 13 9345 (Snapdragon X Elite, NPU 45 TOPS annoncé « Copilot+ »), installé Ollama Windows ARM64, lancé ollama run qwen3:8b, Task Manager ouvert. Surprise : le NPU dort.
Symptôme
Sur n’importe quel modèle Ollama (3B comme 70B), en charge :
- CPU : 80-100 % (les 12 cœurs Oryon saturent)
- GPU Adreno : 0 %
- NPU Hexagon : 0 %
Pareil avec LM Studio (ARM64 natif). Pareil avec llama.cpp direct.
Cause
Ollama et LM Studio reposent sur llama.cpp. Au 17 mai 2026 :
- Backend Snapdragon mergé dans
ggml-org/llama.cpp: 3 backends (CPU, Adreno GPU via OpenCL, Hexagon NPU HTP0-4). Build b8755 ajoute le support Linux Hexagon. - Limite : mapping mémoire ~3.5 Go/session (Hexagon cDSP 32-bit) → modèles < 4B sur NPU.
- Ollama n’expose pas Hexagon par défaut : le subprocess llama.cpp est compilé via presets CMake, et les presets NPU ne sont pas activés dans les builds release → toujours CPU-only.
Donc tout GGUF via Ollama ou LM Studio tourne CPU-only sur Snapdragon. Ni mauvaise install ni pilote manquant — c’est l’état de la stack en aval de llama.cpp. Les 45 TOPS ne sont accessibles que via des runtimes ONNX-NPU dédiés (≤ 7-8B, format ONNX obligatoire).
Solution
Double stack, ports distincts, sans conflit :
| Hardware | Runtime | Port | Modèles |
|---|---|---|---|
| CPU | Ollama | 11434 | 14-70B (Qwen3, Llama 3.3 70B) |
| NPU | Microsoft Foundry Local (GA 2026) | 5273 | ≤ 8B ONNX (Phi-3.5 Mini, Llama 3.2 3B) |
winget install Microsoft.FoundryLocal
foundry model download phi-3.5-mini # variante NPU auto
API OpenAI-compatible des deux côtés : on route le client vers 11434 (CPU big) ou 5273 (NPU small fast) selon la tâche. Alternatives NPU : AnythingLLM Desktop (QNN, RAG), Nexa SDK (multimodal), QAI AppBuilder (HTP brut).
Lessons learned
- « 45 TOPS » et « Copilot+ » mentent par omission : la stack la plus populaire (Ollama/LM Studio) n’en utilise zéro.
- Aucun signal d’alerte :
ollama --versionnormal, les modèles répondent. Il faut regarder le moniteur de ressources pour voir qu’on tape le CPU. Le toggle « hardware acceleration » de LM Studio ne change rien sur Snapdragon. - CPU reste utilisable : 7-14B à 12-30 tok/s grâce à la LPDDR5X (~135 Go/s). Mais on grille la batterie quand un NPU à côté ferait le job à froid.
- À surveiller : build Ollama avec
-DGGML_HEXAGON=ONdonne ~14.9 tok/s sur Qwen3-4B NPU (vs ~5-10 CPU), pas encore en release. Snapdragon X2 Elite (80 TOPS) : même problème tant que le preset NPU n’est pas activé. Limite 3.5 Go/session bloque les > 4B sur NPU.
#sysadmin #linux #ollama #llm #ai #snapdragon #arm #npu #llama-cpp #troubleshooting