Richard Loyer
|
9ef5e11b53
|
chantier B TTS #6: P3.4+P3.5 = pipeline complet 100% tablette bout-en-bout
tts_pipeline.cpp : binaire unique qui orchestre TOUT en un seul process :
input_ids + x_vector (fixtures)
-> text_projection + lookups + spéciaux (P3.2) -> prefill_embeds [T, 1024]
-> Talker engine (libllama, M-RoPE IMROPE, Patch 1+2) -> logits + hidden
-> sampling top_k+temp sur CB0 (le greedy pur tombe dans un attracteur :
cb0 répété -> decoder produit du silence. temp=0.9 top_k=50 = défauts
Python, débloquent l'attracteur)
-> CP runner (cp_inference, recompute bit-exact) -> CB1..15
-> sum 16 codecs + tts_pad -> next embed (orchestration ggml-side, bit-exact)
-> codes [N, 16] -> decoder ggml (libqwen3tts-decoder rebuilt vs ql/ggml,
evite conflit double-ggml) -> WAV PCM 24kHz
Sortie : Bonjour je m'appelle Kazeia, 32 frames -> 2.56s audio audible
(rms=0.040, range [-0.26, 0.29]). 100% tablette : pas de Python, pas de root,
pas de QNN. Stack unifiee ggml.
Bench tablette CPU 6 threads (sweet spot, 8 = contention scheduler) :
load total : 1.12 s (talker f32 + cp + decoder + fixtures)
Talker prefill : 0.10 s
Loop (N=32) : 8.57 s talker_decode=1.01 cp=7.55 (talker 31ms/step, cp 236ms/step)
Decoder : 5.32 s (RTF dec 2.00)
TOTAL : 14.00 s pour 2.67s audio -> RTF 5.25
Gros leviers perf restants pour RTF<1 (P3.5 itératif, dehors session) :
- KV cache CP : 15 passes/step recompute O(L^2) -> incremental O(L). Estimation
gain x5-8 sur CP. Tentative cette session = abandonnee (risque casser bit-exact).
- Decoder ggml : histo chraac 0.96 prouve realisable, faut tuner.
- Threads big cores via taskset (Pad3 SD8Elite 8 cores big, scheduler ne route
pas tjrs au mieux).
Q8_0 CP teste -> perd la precision (76% codes match vs 100% f16) ; sampling et
CP en f16 reste necessaire (confirme observation rapport TTS avril : modeles RVQ
incompatibles avec quantization).
Decoder ggml rebuilte au passage avec ggml engine : kazeia-tts-decoder-ggml/
build-android-engine/ -> libqwen3tts-decoder.a sans conflit symboles. Patch
mineur build-time, pas de modif source decoder.
P3.4 (libkazeia_tts.so JNI assemblage Kotlin) : reporte en session future, le
code de tts_pipeline.cpp est l'implementation reference a wrapper en JNI.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-28 15:25:00 +02:00 |