kazeia/BENCHMARK_ROOT_VS_NONROOT.md

5.8 KiB

Benchmark Comparatif Root vs Non-Root — OnePlus Pad 3

Date: 28 mars 2026 — Projet Kazeia

Configuration

  • Tablette: OnePlus Pad 3 (OPD2415), Snapdragon 8 Elite (SM8750)
  • OS: OxygenOS 16 (Android 16, API 36)
  • RAM: 16 GB
  • Root: Magisk v30.6
  • QNN SDK: 2.42
  • ExecuTorch: build-android (NDK r27d)

Pipeline Conversationnel Complet

Sans Root

Étape Technologie Latence Status
VAD Énergie RMS <1ms Fonctionne
STT whisper.cpp (CPU) ~1500ms Fonctionne
LLM Aucun - Mode écho uniquement
TTS Android TTS natif ~200ms Fonctionne
Total - ~1700ms Pas de LLM, pas d'IA conversationnelle

Avec Root + NPU

Étape Technologie Latence Status
VAD Énergie RMS <1ms Fonctionne
STT whisper.cpp (CPU) ~1500ms Fonctionne
LLM ExecuTorch Qwen3 (NPU) ~1-5s (selon longueur) NOUVEAU
TTS Android TTS natif ~200ms Fonctionne
Total - ~3-7s Pipeline complet fonctionnel

Benchmarks Détaillés

STT — Whisper-Base (whisper.cpp CPU)

Identique avec ou sans root (pas d'accélération NPU pour whisper.cpp)

Métrique Valeur
Modèle ggml-base.bin (148 MB)
Backend CPU ARM (Cortex-X925)
Chargement ~100ms
Transcription (1-2s audio) 1000-1500ms
RTF moyen 0.9-1.5
Mel spectrogram Natif C++ (whisper.cpp)
Auto-gain Oui (normalisation audio)

LLM — ExecuTorch + QNN NPU (Root uniquement)

Qwen3-0.6B

Métrique Valeur
Modèle hybrid_llama_qnn.pte (660 MB)
Backend QNN HTP v79 (NPU)
Chargement 0.86s
Prefill 451 tok/s (31ms pour 14 tokens)
Génération 93.15 tok/s
TTFT (Time To First Token) 31ms
RAM ~698 MB
Qualité FR Basique, réponses courtes

Qwen3-1.7B

Métrique Valeur
Modèle hybrid_llama_qnn.pte (1.7 GB)
Backend QNN HTP v79 (NPU)
Chargement 1.29s
Prefill 1000 tok/s (27ms pour 27 tokens)
Génération 46.6 tok/s
TTFT 27ms
RAM ~1712 MB
Qualité FR Bonne, réponses empathiques détaillées

Comparaison modèles

Modèle Taille tok/s TTFT RAM Qualité FR
Qwen3-0.6B 660 MB 93 31ms 698 MB Basique
Qwen3-1.7B 1.7 GB 46 27ms 1.7 GB Bonne
Mistral-Nemo 12B 7.4 GB ~5 ~200ms ~8 GB Excellente

LLM — Sans Root

Métrique Genie SDK ExecuTorch QNN
Status Erreur -7 Erreur 4000 (libs manquantes)
Cause SDK non installé sur device libQnnModelDlc.so manquant, pas d'accès DSP
Résultat Mode écho Mode écho

TTS

Métrique Sans Root Avec Root
Android TTS 200ms 200ms
Chatterbox OOM (1.4 GB) OOM (1.4 GB)*

Chatterbox nécessite optimisation mémoire indépendante du root

Monitoring Système

Métrique Sans Root Avec Root
CPU % Fonctionne Fonctionne
GPU % Permission denied Fonctionne via su
NPU/DSP N/A Accès possible
RAM Fonctionne Fonctionne

Impact du Root — Synthèse

Gains mesurés

Fonctionnalité Sans Root Avec Root Gain
LLM Indisponible 93 tok/s (0.6B) / 46 tok/s (1.7B)
Prefill - 451-1000 tok/s
TTFT - 27-31ms
Pipeline complet Non (écho) Oui (STT→LLM→TTS) Pipeline fonctionnel
GPU monitoring 0% Fonctionne Visibilité
Whisper STT 1500ms (CPU) 1500ms (CPU) 0% (même backend)

Ce que le root débloque concrètement

  1. Accès au DSP/NPU via ExecuTorch → LLM fonctionnel sur NPU
  2. libs QNN chargées correctementlibQnnModelDlc.so + Skel dans ADSP_LIBRARY_PATH
  3. SELinux permissive → pas de blocage d'accès
  4. Boot script → permissions persistantes au redémarrage
  5. GPU sysfs → monitoring temps réel

Ce que le root ne change pas

  1. Performances STT (whisper.cpp CPU identique)
  2. TTS Android natif (identique)
  3. Chatterbox TTS (OOM indépendant du root)

Recommandations pour la Production

Modèle LLM recommandé

Qwen3-1.7B — meilleur compromis qualité/vitesse :

  • 46 tok/s suffisant pour conversation temps réel
  • Qualité FR bonne pour l'écoute émotionnelle
  • 1.7 GB RAM acceptable sur 16 GB device
  • TTFT 27ms = réponse quasi instantanée

Prochaines optimisations

  1. Whisper sur NPU : le qnn_whisper_runner est compilé, réduirait STT de 1500ms à ~50ms
  2. Chatterbox quantifié : réduire les modèles TTS pour éviter OOM
  3. Streaming LLM : afficher les tokens au fur et à mesure de la génération
  4. ExecuTorch JNI natif : intégrer directement en C++ au lieu du subprocess su

Procédure de Déploiement (Reproductible)

1. Root de la tablette

Voir GUIDE_ROOT_ONEPLUS_PAD3.md

2. Configuration post-root

# SELinux permissive
adb shell "su -c 'setenforce 0'"

# Boot script DSP
adb shell "su -c 'mkdir -p /data/adb/service.d && cat > /data/adb/service.d/kazeia_dsp.sh << EOF
#!/system/bin/sh
chmod 666 /dev/fastrpc-cdsp
chmod 666 /dev/fastrpc-cdsp-secure
setenforce 0
EOF
chmod 755 /data/adb/service.d/kazeia_dsp.sh'"

3. Déploiement ExecuTorch

Voir DEPLOY_EXECUTORCH_NPU.md

4. Déploiement app Kazeia

cd /opt/Kazeia/kazeia-android
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk

Projet Kazeia — Damien Micottis & Richard Loyer