kazeia/kazeia-android/app
Kazeia Team 0108f47c09 refonte(llm): NPU .pte in-app sans root (ADSP_LIBRARY_PATH) + normalisation think-block
Validation device (OPD2415 rooté, mais .pte sans root via PD signé) :
- GGUF défaut Qwen3.5-4B : ~18 tok/s, FR cohérent (chemin session cache-préfixe)
- qwen3-4b .pte NPU : 18.6 tok/s | guard4b .pte NPU : 21 tok/s — FR cohérent
- DJL tokenizer arm64 (tokenizer-native:0.33.0) OK on-device

Fixes :
- KazeiaApplication : pose ADSP_LIBRARY_PATH (dossier natif extrait + chemins DSP)
  AVANT toute session QNN. Sans ça le CDSP ne trouve pas libQnnHtpV79Skel.so
  (errno 2) → device_handle 14001 → .pte renvoie handle 0. Absent de la spec
  engine (validée via qnn_llama_runner CLI, où le shell exporte ADSP_LIBRARY_PATH).
- UnifiedLlmAdapter : strip du bloc <think>…</think> en tête de sortie .pte
  (pas des special tokens => skipSpecialTokens ne les retire pas ; le GGUF le
  strippe nativement). Sinon le TTS le lit et la cascade parse faux.
- BenchLlmHarness : réécrit pour valider UnifiedLlmAdapter sur GGUF + chaque .pte.

Connu (hors périmètre intégration) :
- qwen3-8b .pte (export 05-23, sharding=2) : blob contexte incompatible runtime
  QAIRT 2.42 (magic 0x5678abcd attendu, 0x2000000 lu ; "Context group 1") →
  re-export 2.42 requis côté engine.
- qwen2.5-7b .pte absent du device (seul le GGUF est présent).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 23:00:31 +02:00
..
src refonte(llm): NPU .pte in-app sans root (ADSP_LIBRARY_PATH) + normalisation think-block 2026-06-17 23:00:31 +02:00
build.gradle.kts refonte(llm): moteur LLM unifié GGUF + .pte NPU (UnifiedLlmAdapter) 2026-06-17 22:47:32 +02:00
proguard-rules.pro Initial commit: Kazeia TTS pipeline on NPU via ExecuTorch 2026-04-09 08:42:11 +02:00