Files
rpa_vision_v3/docs/BENCH_T2A_DECISION_11DOSSIERS.md
Dom 5ea4960e65
Some checks failed
tests / Lint (ruff + black) (push) Successful in 1m50s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped
backup: snapshot post-démo GHT 2026-05-19
Backup état complet après enregistrement vidéo démo de bout en bout.
À utiliser comme point de référence pour la consolidation post-démo.

Changements majeurs de la session 18-19 mai :
- AIVA-URGENCE : page autonome avec preset URL + auto-focus chain
- Workflow Demo_urgence_3_db : merge linux_db + steps AIVA + pause humaine NoMachine
- Bypass LLM (static_result / static_text) dans replay_engine
  pour démos déterministes sans appel Ollama
- Fix api_stream:3013 — replay_paused au premier polling /next
- dag_execute : lift duration_ms vers top-level pour wait runtime
- NPM bypass auth /aiva-urgence/ via location ^~ (proxy_host/10.conf hors git)
- scripts/cancel-replays.sh — workaround Stop VWB qui ne purge pas la queue

Anchors visuels (468) forcés dans le commit pour garantir restorabilité.
DB workflows actuelle + ~12 .bak DB de la journée incluses.

Sujets identifiés pour consolidation post-démo (TODO) :
1. Bug VWB recapture anchor ne régénère pas le PNG
2. Léa client accumule état mémoire (restart périodique requis)
3. Stop VWB ne purge pas la queue serveur (lien manquant vers /replay/cancel)
4. Bug coord client mss tronqué 2560x60 → mapping Y cassé
5. delay_before/delay_after ignorés au runtime (fix partiel duration_ms)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:55:06 +02:00

91 lines
6.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bench LLM décision T2A — 11 dossiers GHT Sud 95
_Généré le 2026-05-05 19:00 — **18 modèles** × 11 DPI consolidés (5 UHCD / 6 Forfait)_
> ⚠️ **Vérité-terrain corrigée 2026-05-05** : `25003284` reclassé **FORFAIT** (sortie domicile en 3h37, J12.1 VRS) — auparavant à tort UHCD. Tous les scores ci-dessous reflètent la nouvelle vérité-terrain.
## 🏆 Classement complet
| # | Modèle | Acc | p50 | Err HTTP | Parse | Calib | Verdict |
|---|---|---:|---:|:---:|:---:|:---:|---|
| #1 | `gemma3:27b-cloud` | **8/11 (73%)** | 10.6s | ✅ | ✅ | ❌ 2 | 🟢 **Recommandé démo** |
| #2 | `qwen3:8b` | **7/11 (64%)** | 7.6s | ✅ | ✅ | ❌ 1 | 🟡 Acceptable + garde-fou |
| #3 | `qwen2.5:7b` | **7/11 (64%)** | 10.0s | ✅ | ✅ | ❌ 2 | 🟡 Acceptable + garde-fou |
| #4 | `qwen3-vl:235b-instruct-cloud` | **7/11 (64%)** | 20.3s | ✅ | ✅ | ❌ 4 | 🟡 Acceptable + garde-fou |
| #5 | `qwen3.5:9b` | **7/11 (64%)** | 25.8s | ✅ | ⚠1 | ❌ 1 | 🟡 Acceptable + garde-fou |
| #6 | `t2a-gemma3-27b-q4:latest` | **7/11 (64%)** | 152.2s | ⚠1 | ✅ | ❌ 3 | 🟡 Acceptable + garde-fou |
| #7 | `thiagomoraes/medgemma-27b-it:Q4_K_S` | **7/11 (64%)** | 181.6s | ⚠1 | ✅ | ❌ 3 | 🟡 Acceptable + garde-fou |
| #8 | `gemma4:latest` | **6/11 (55%)** | 17.9s | ✅ | ✅ | ❌ 3 | 🔴 Insuffisant |
| #9 | `pmsi-runpod:latest` | **6/11 (55%)** | 18.8s | ✅ | ⚠1 | ❌ 4 | 🔴 Insuffisant |
| #10 | `qwen2.5:14b` | **6/11 (55%)** | 68.0s | ✅ | ✅ | ❌ 1 | 🔴 Insuffisant |
| #11 | `pmsi-coder:latest` | **5/11 (45%)** | 18.1s | ✅ | ⚠1 | ❌ 5 | 🔴 Insuffisant |
| #12 | `medgemma:4b` | **4/11 (36%)** | 4.4s | ✅ | ⚠6 | ❌ 1 | 🟠 Format JSON cassé via Ollama |
| #13 | `gpt-oss:120b-cloud` | **3/11 (27%)** | 16.0s | ✅ | ⚠5 | ❌ 3 | 🟠 Format JSON cassé via Ollama |
| #14 | `pmsi-coder-v2:latest` | **3/11 (27%)** | 23.4s | ✅ | ⚠5 | ✅ | 🟠 Format JSON cassé via Ollama |
| #15 | `qwen3:14b` | **1/11 (9%)** | 1.2s | ✅ | ⚠1 | ❌ 1 | 🔴 Insuffisant |
| #16 | `charlestang06/openbiollm:latest` | **1/11 (9%)** | 6.0s | ✅ | ✅ | ❌ 3 | 🔴 Insuffisant |
| #17 | `gpt-oss:20b-cloud` | **0/11 (0%)** | 0.0s | ✅ | ⚠11 | ✅ | 🟠 Format JSON cassé via Ollama |
| #18 | `qwen3-next:80b-cloud` | **0/11 (0%)** | 0.0s | ✅ | ⚠11 | ✅ | 🟠 Format JSON cassé via Ollama |
## 🎯 Recommandation pour la démo
**Modèle retenu : `gemma3:27b-cloud`** — 8/11 (73%), p50 10.6s
**Backup local si cloud KO** : `qwen3:8b` (7/11, 7.6s, 5 GB seulement → tient large dans 12 GB GPU).
## 📊 Détail dossier-par-dossier (top 5)
| IPP | Cas | Vérité | `gemma3` | `qwen3` | `qwen2.5` | `qwen3-vl` | `qwen3.5` |
|---|---|:---:|:---:|:---:|:---:|:---:|:---:|
| 25003284 | Pneumo VRS — Forfait | **Forfait** | ❌ UHCD | ❌ UHCD | ❌ UHCD | ❌ UHCD | ✅ Forfait |
| 25003362 | Intox PE2 | **Forfait** | ✅ Forfait | ✅ Forfait | ✅ Forfait | ✅ Forfait | ✅ Forfait |
| 25003364 | Pneumo SLA — UHCD | **UHCD** | ✅ UHCD | ✅ UHCD | ✅ UHCD | ✅ UHCD | ✅ UHCD |
| 25003451 | Plaie SU2 | **Forfait** | ✅ Forfait | ✅ Forfait | ❌ UHCD | ✅ Forfait | ✅ Forfait |
| 25003475 | Aura migr. — UHCD | **UHCD** | ✅ UHCD | ✅ UHCD | ❌ Forfait | ❌ Forfait | ❌ Forfait |
| 25005866 | Trauma hockey — UHCD | **UHCD** | ✅ UHCD | ❌ Forfait | ✅ UHCD | ✅ UHCD | ✅ UHCD |
| 25010621 | Laryngite PE2 | **Forfait** | ✅ Forfait | ✅ Forfait | ✅ Forfait | ✅ Forfait | ✅ Forfait |
| 25012257 | Douleur abdo — UHCD | **UHCD** | ❌ Forfait | ✅ UHCD | ✅ UHCD | ✅ UHCD | ⚠️ parse |
| 25048485 | Convulsion PE2 | **Forfait** | ✅ Forfait | ❌ UHCD | ✅ Forfait | ✅ Forfait | ✅ Forfait |
| 25056615 | Salpingite std | **Forfait** | ❌ UHCD | ❌ UHCD | ❌ UHCD | ❌ UHCD | ❌ UHCD |
| 25151530 | Colique std | **Forfait** | ✅ Forfait | ✅ Forfait | ✅ Forfait | ❌ UHCD | ❌ UHCD |
## ⚠️ Cas problématiques universels (3+ modèles top se trompent)
- **`25003284` (Pneumo VRS — Forfait, vérité Forfait)** : 4/5 modèles top se trompent → DPI à enrichir OU vérité-terrain à challenger avec Pauline
- **`25003475` (Aura migr. — UHCD, vérité UHCD)** : 3/5 modèles top se trompent → DPI à enrichir OU vérité-terrain à challenger avec Pauline
- **`25056615` (Salpingite std, vérité Forfait)** : 5/5 modèles top se trompent → DPI à enrichir OU vérité-terrain à challenger avec Pauline
## 🔬 Limites du bench (transparence)
Ce bench est **suffisant pour trier les modèles candidats** mais **PAS rigoureusement validant** :
- **n=11** dossiers — échantillon trop petit pour statistique robuste (cible : 50-100)
- **1 inférence par dossier** — pas de variance mesurée (un même DPI peut donner 2 réponses différentes)
- **Vérité-terrain dérivée** — partiellement corrigée mais pas encore validée à 100% par DIM
- **DPI source partiellement fictif** — voir `REVUE_DOSSIERS_PAULINE.md` (40+ noms inventés, 4 hallucinations cliniques graves, constantes tronquées). **Le bench tourne donc sur du contenu non-fidèle.** Re-bench prévu après reconstruction `data.js`.
- **Pas de cross-validation** — pas de split train/test
- **Pas de calibration formelle** — % de "elevee" fausses noté mais pas Calibration Error Score
- **Bench externes non utilisés** — MedQA, MedFrenchBenchmark, etc. pourraient compléter
**Pour un vrai bench de validation produit (post-démo)** :
1. Étendre à 50-100 dossiers anonymisés diversifiés (Pauline + DIM partenaires)
2. 3 inférences par dossier (mesure variance)
3. Cross-validation k-fold
4. Inter-rater agreement humain comme baseline
5. Tests robustesse (DPI avec fautes, abréviations atypiques)
## 🧪 Modèles non testés intéressants à explorer
- **MedGemma 1.5** (jan 2026, 91% MedQA — surpasse Med-PaLM 2) — disponible HuggingFace, à pull si compatible Ollama
- **DeepSeek-R1** (top open-source reasoning 2026) — cloud Ollama 403 sans abonnement
- **Modèles vllm** : qwen3-next, gpt-oss-120b ont eu 100% parse errors via Ollama, peut-être fonctionnels via vllm avec format JSON propre
- **Fine-tune T2A custom étendu** : `t2a-gemma3-27b` (28 GB non-quantized) sur DGX Spark
## 📦 Annexes
- Trace brute local : `/tmp/bench_t2a_full.json`
- Trace brute cloud : `/tmp/bench_t2a_cloud.json`
- Trace brute extra : `/tmp/bench_t2a_extra.json`
- Trace brute retry : `/tmp/bench_t2a_retry.json`
- Scripts : `/tmp/bench_t2a*.py`
- DPI consolidés : `/tmp/dpis.json`