2.5 KiB
2.5 KiB
Kazeia-Engine
Moteur d'inférence LLM Snapdragon 8 Elite sans conversion .pte : charger
GGUF directement, NPU pour le prefill, CPU pour le decode. Mono-tablette,
local-first, sans root. Bench-driven : aucune décision sans chiffre reproductible.
Cibles & gabarits
- Qwen3-4B (dense, attn pleine) — tourne déjà sous ExecuTorch : decode 14-21 tok/s, TTFT 190 ms. Réf à approcher.
- Qwen3.5-4B (hybride DDDA×8 : 24 DeltaNet + 8 FullAttn, GDN, conv1d, SSM, head_dim 256, vocab 248k, tied embeds) — ExecuTorch ne sait pas l'exporter proprement. C'est lui qu'il faut bien faire tourner. Empreinte mémoire mini = priorité.
Verdict R&D (issu de briques + bench, ne PAS refaire l'erreur)
Sur SM8750, Qwen3.5-4B-Q4_0, decode M=1 = memory-bandwidth bound, pas compute. Mesures :
| Voie | Decode | Prefill | Statut |
|---|---|---|---|
llama.cpp CPU NEON (-dev none) |
16.5 tok/s | 75 | stable, ~67% BW |
| llama.cpp CPU+Hexagon auto | 16.5 | 159 | stable — prefill HMX |
| llama.cpp Hexagon-only | 3.6 | — | DSP seul = perdant decode |
| briques DSP-first custom | 5.3 | 26 | crash ~12min, abandonné |
| → Angle = NPU prefill / CPU decode, exactement ce que fait llama.cpp+chraac. Tout DSP-first sur decode plafonne (~5 tok/s) ; gros vocab + tied embeds bloque spec-dec. CPU NEON bat le HVX 3.4× sur Q6_K M=1. Bonus DDDA : 75% des couches O(1) → decode stable en long contexte. |
Socle
/opt/Kazeia/chraac-llama(branch dev-refactoring 897501a) — llama.cpp + backend Hexagon = point de départ. Decode CPU + prefill HMX.- ExecuTorch GitHub — référence/qnn_llama_runner, à dépasser pas dépendre.
briques-archive/+ mémoiresproject_briques_qwen35*— kernels HVX (Q6_K valign, q4x4x2 repack), pièges V79 0x2e, oracle ggml. Lire avant kernels.- HW: i8mm+bf16+dotprod, PAS de SVE ; LPDDR5x ~77 GB/s, CPU eff ~25. Build
-O3 -march=armv8.6-a+dotprod+fp16+i8mm+bf16, ggml=chraac (jamais whisper.cpp/upstream → RTF 1.5).
Plan d'attaque mémoire-mini
- Bench chraac CPU+HTP sur Qwen3-4B (match ExecuTorch?) + Qwen3.5-4B Q4_0 pure.
- Mémoire mini : poids Q4_0/embeds Q6_K, prefill HTP / decode CPU, pas de double-copie poids ; viser <4 GB pour 4B.
- Refacto Phase 8 si gap : repack Q4_0 8x8 NEON decode + HMX prefill.
Limite assistant
R&D LLM frontière (kernels HVX bit-exacts, quant) = aide partielle, je le dis au cas par cas.
GGUF/llama.cpp archivés vers /opt/Kazeia/to_delete. Git local: commits réguliers. — Richard & Damien.