diff --git a/kazeia-no-root-report.md b/kazeia-no-root-report.md index 67482d8..0fb391e 100644 --- a/kazeia-no-root-report.md +++ b/kazeia-no-root-report.md @@ -334,3 +334,29 @@ Backup disk : `/home/alf/kazeia_backup_20260414/`. - `f32b5dd` (LLM no-root: validate end-to-end pipeline, fix kv_io_bit_width detection) - `b57719f` (LLM: filter tokens out of the streaming TTS path) + +### 10.8 Comparaison de performances avant/après + +Mesurée le 2026-04-14 sur le même `.pte` Qwen3-4B avec le même runner C++ — +seule la voie d'invocation change (subprocess `su -c` vs `LlmModule` JNI +in-process). + +| Métrique | Avant (su-c subprocess) | Après (in-process LlmModule) | Delta | +|---|---|---|---| +| LLM gen rate | 18.3 tok/s | 17.2 tok/s | -6 % (bruit) | +| LLM prefill speed | 52 ms / prompt-token | 52 ms / prompt-token | identique | +| LLM TTFT (prompt 35 tok) | 1.8 s | 1.8 s | identique | +| LLM TTFT (prompt 80 tok, system+ChatML) | ~4.1 s | 4.2 s | identique | +| TTS Talker(.pte) | 45-65 ms / step | 37 ms / step | +25-40 % (contexte QNN partagé) | +| TTS CP(.pte) | 65-157 ms / step | 73 ms / step | +10-50 % | +| TTS load au boot | 26.7 s | 4.3 s | **6× plus rapide** (plus de subprocess Hexagon 12 s) | +| `LlmModule.load()` au boot | n/a (subprocess à la demande) | 3.1 s (one-time) | overhead init | +| App RSS | ~2 GB app + 1.76 GB subprocess séparé | ~3.7 GB process unique | mêmes ressources globales | +| Erreurs DSP 6031/6033 en concurrence | régulières | disparues | architectural | +| Prompts Magisk | 5 / tour | **0** | UX net | +| Taille APK | ~100 MB | ~100 MB (libexecutorch_jni.so 192 MB → 8.5 MB après strip à l'install) | négligeable | + +**Conclusion** : pas de régression LLM (perf identique, le runner C++ est le même). +Gain net sur la TTS (Talker 25-40 % plus rapide grâce au contexte QNN partagé, +load 6× plus rapide). Architecture plus propre : un seul process, un seul runtime +QNN, plus de contention DSP, plus de prompts root.