From b11d8a96d45613057bcd630fe16b105ba127d3df Mon Sep 17 00:00:00 2001 From: Kazeia Team Date: Thu, 18 Jun 2026 00:13:54 +0200 Subject: [PATCH] diag(bench): option .pte multi-contexte en premier (bench_llm_pte_first) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trigger de diagnostic pour charger les .pte multi-contextes (8B/7B) en premier dans un process frais. A servi à prouver que l'échec in-app des gros .pte est un artefact du bench (2ᵉ .pte multi-contexte dans le même process), PAS un problème d'artefact/version : 8B chargé en 1er = génère 12 tok/s in-app. Prod = 1 .pte/process (restart au switch) → 7B/8B OK. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/main/java/com/kazeia/llm/BenchLlmHarness.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/kazeia-android/app/src/main/java/com/kazeia/llm/BenchLlmHarness.kt b/kazeia-android/app/src/main/java/com/kazeia/llm/BenchLlmHarness.kt index 427f352..413fb98 100644 --- a/kazeia-android/app/src/main/java/com/kazeia/llm/BenchLlmHarness.kt +++ b/kazeia-android/app/src/main/java/com/kazeia/llm/BenchLlmHarness.kt @@ -27,7 +27,16 @@ object BenchLlmHarness { Log.i(TAG, "########## BENCH LLM (UnifiedLlmAdapter, refonte 2026-06-17) ##########") // Modèles à tester : GGUF par défaut + tous les .pte présents sur disque. - val models = ModelRegistry.availableOnDisk() + // ORDRE DIAG (2026-06-18) : on charge les gros .pte multi-contextes (8B/7B) EN PREMIER, + // dans un process frais, pour isoler "contention in-process après modèles précédents" + // vs "limite in-app fondamentale". Trigger fichier bench_llm_pte_first pour activer. + val pteFirst = java.io.File(ctx.getExternalFilesDir(null), "bench_llm_pte_first").exists() + val models = ModelRegistry.availableOnDisk().let { all -> + if (pteFirst) all.sortedBy { m -> + when (m.id) { "qwen3-8b" -> 0; "qwen2.5-7b" -> 1; "qwen3-4b" -> 2; "guard4b" -> 3; else -> 9 } + } else all + } + if (pteFirst) Log.i(TAG, ">>> ORDRE DIAG : .pte multi-contexte EN PREMIER (process frais)") if (models.isEmpty()) { Log.e(TAG, "aucun modèle sur disque (ni GGUF ni .pte)"); return@runBlocking } for (m in models) {