Résultats
Tous les chiffres derrière la page d'accueil : Kahn1 4B et Kahn1 3B face à JEV sur les mêmes exemples, les résultats de Kahn1 sur son holdout, la latence, et comment les reproduire.
01 · En bref
Deux benchmarks, tous deux appariés exemple par exemple. Sur le holdout de Kahn1, nous avons lancé JEV via son API, avec les mêmes états, prompts et options que Kahn1. Sur JevBench, les résultats de Jev sont ceux que publie JevBench. Le graphique montre Kahn1 4B et Kahn1 3B ; les tableaux ci-dessous ajoutent le détail par dataset, et JevK5 sur JevBench.
Autres modèles ouverts. Lancé par nous sur les mêmes exemples et le même GPU, Clef-flash de Cloudflare (9B, en int8) est le plus précis sur le holdout, 74,8 % contre 72,4 % pour Kahn1 4B et 73,2 % pour JEV, et au même niveau que Kahn1 4B sur JevBench (83,5 %, écart non significatif) ; Laya (421M) obtient 59,1 % et 57,6 %. Tous les tableaux, la méthode de test et les biais connus : modèles de décision ouverts, mesurés à périmètre égal.
Correction. Une version précédente de cette page posait Choice sur 8 options à Kahn1 mais sur toutes les intentions à JEV, ce qui faisait paraître Kahn1 devant en Choice et au global. Cette comparaison était inégale et a été corrigée : sur les mêmes options, JEV est devant en Choice et au global. Les deux conditions côte à côte (3B) (en anglais).
VUE TABLEAU
| Benchmark | Groupe | Exemples | Kahn1 4B | Kahn1 3B | JEV |
|---|---|---|---|---|---|
| HOLDOUT KAHN1 | Choice | 6 050 | 92,3 % | 90,9 % | 94,5 % |
| HOLDOUT KAHN1 | Score | 6 210 | 51,9 % | 51,4 % | 52,0 % |
| HOLDOUT KAHN1 | Noul | 2 403 | 75,5 % | 67,0 % | 74,4 % |
| HOLDOUT KAHN1 | Total | 14 663 | 72,4 % | 70,3 % | 73,2 % |
| JEVBENCH PUBLIC | Facile | 48 | 100,0 % | 100,0 % | 100,0 % |
| JEVBENCH PUBLIC | Standard | 72 | 97,2 % | 84,7 % | 98,6 % |
| JEVBENCH PUBLIC | Difficile | 111 | 75,7 % | 42,3 % | 73,0 % |
| JEVBENCH PUBLIC | Total | 231 | 87,4 % | 67,5 % | 86,6 % |
02 · Kahn1 face à JEV sur le holdout de Kahn1
14 663 exemples issus de six datasets publics, aucun vu à l'entraînement, dans les familles de tâches sur lesquelles Kahn1 a été entraîné : intentions (banking77, MASSIVE), échelles à 5 niveaux (SST-5, avis d'applications) et implication (RTE, SciTail). Une question par requête, et les mêmes options pour chaque système : chaque question Choice présente la bonne intention et 7 leurres tirés à partir de l'état, soit 8 options. Kahn1 4B et Kahn1 3B : k = 3, calibration par température. JEV : jev-1.13.0, a répondu aux 14 663 sans erreur. ECE : 15 classes sur pmax, 0 = parfait.
| Dataset | Exemples | Kahn1 4B | Kahn1 3B | JEV | ECE 4B | ECE 3B | ECE JEV |
|---|---|---|---|---|---|---|---|
| banking77 | 3 076 | 91,8 % | 91,1 % | 94,8 % | 0,018 | 0,026 | 0,024 |
| MASSIVE | 2 974 | 92,9 % | 90,8 % | 94,1 % | 0,013 | 0,011 | 0,017 |
| RTE | 277 | 85,9 % | 82,7 % | 89,9 % | 0,048 | 0,105 | 0,034 |
| SciTail | 2 126 | 74,1 % | 65,0 % | 72,4 % | 0,141 | 0,248 | 0,077 |
| SST-5 | 2 210 | 55,0 % | 52,4 % | 57,7 % | 0,052 | 0,098 | 0,178 |
| Avis d'applications | 4 000 | 50,2 % | 50,9 % | 48,9 % | 0,146 | 0,096 | 0,252 |
| Choice | 6 050 | 92,3 % | 90,9 % | 94,5 % | 0,015 | 0,017 | 0,019 |
| Score | 6 210 | 51,9 % | 51,4 % | 52,0 % | 0,112 | 0,097 | 0,226 |
| Noul | 2 403 | 75,5 % | 67,0 % | 74,4 % | 0,127 | 0,232 | 0,071 |
| Total | 14 663 | 72,4 % | 70,3 % | 73,2 % | 0,072 | 0,082 | 0,113 |
JEV est devant en Choice et au global, et au même niveau en Score (52,0 % contre 51,9 %) ; Kahn1 4B est devant en Noul (75,5 % contre 74,4 %, écart non testé). Le 4B devance le 3B sur chaque primitive et il est le mieux calibré au global.
Choice sur toutes les intentions
Le tableau ci-dessus pose Choice sur 8 options. Posé sur toutes les intentions (77 pour banking77, 60 pour MASSIVE), sur les mêmes 1 184 exemples, tous les systèmes reculent, Kahn1 plus que JEV. Kahn1 passe alors par son routeur en deux étapes : une question Noul par option garde les 10 meilleures, puis un Choice tranche entre elles (k = 1).
| Options par question | Exemples | Kahn1 4B | Kahn1 3B | JEV |
|---|---|---|---|---|
| 8 (la bonne + 7 leurres tirés) | 6 050 | 92,3 % | 90,9 % | 94,5 % |
| toutes les intentions (77 / 60) | 1 184 | 71,6 % | 68,4 % | 79,1 % |
La formulation de la question Noul
La forme Noul native de JEV est l'affirmation seule dans instructions, c'est aussi ce qu'envoie
JevBench. JEV juge alors si l'affirmation est vraie en général, pas si le texte l'appuie : sur SciTail, dont
les négatifs sont des affirmations que le texte n'appuie pas, il répond oui à 93 % des exemples. Le prompt de
Kahn1 demande si l'affirmation est « vraie pour cet état » ; les exemples Noul ont donc été relancés
avec The text supports this statement: {statement}. Les tableaux ci-dessus utilisent cette formulation,
la plus favorable à JEV.
| Dataset | Exemples | Kahn1 4B | Kahn1 3B | JEV, affirmation seule | JEV, formulation « appuie » |
|---|---|---|---|---|---|
| RTE | 277 | 85,9 % | 82,7 % | 82,3 % | 89,9 % |
| SciTail | 2 126 | 74,1 % | 65,0 % | 44,4 % | 72,4 % |
| Noul | 2 403 | 75,5 % | 67,0 % | 48,7 % | 74,4 % |
03 · Kahn1 face à Jev sur JevBench
JevBench est un benchmark public et indépendant pour les modèles de décision de type Jev, avec de longues grilles et des jugements difficiles. Les résultats de Jev sur les 231 exemples publics viennent des résultats publiés par JevBench (v1.3.0). JevK5 v0.2, un autre modèle ouvert (Qwen3.5-4B avec un LoRA distillé de Qwen3.6-27B), est son propre passage public avec l'outil de JevBench. Kahn1 a répondu aux mêmes exemples, k = 3, calibré. La moitié réservée de JevBench n'est pas publique, Kahn1 n'y a donc pas été testé.
| Niveau | Exemples publics | Kahn1 4B | Kahn1 3B | JevK5 v0.2 | Jev 1.13.0 | Jev, public + réservé |
|---|---|---|---|---|---|---|
| Facile | 48 | 100,0 % | 100,0 % | 100,0 % | 100,0 % | 100,0 % |
| Standard | 72 | 97,2 % | 84,7 % | 95,8 % | 98,6 % | 99,0 % |
| Difficile | 111 | 75,7 % | 42,3 % | 73,9 % | 73,0 % | 74,1 % |
| Total | 231 | 87,4 % | 67,5 % | 86,1 % | 86,6 % | — |
Kahn1 4B face à l'exécution publiée par les auteurs de JevK5, exemple par exemple : 13 exemples que seul Kahn1 4B réussit, 10 que seul JevK5 réussit ; test exact de McNemar, p = 0,68, écart non significatif. Face aux résultats publiés de Jev : 13 exemples que seul Kahn1 4B réussit, 11 que seul Jev réussit ; p = 0,84, écart non significatif lui aussi. L'exécution de JevK5 v0.2 par JevBench lui-même donne 85,3 % sur les mêmes 231 exemples (agrégats v1.4). Les chiffres de Kahn1, de JevK5 et de Jev viennent de trois exécutions différentes sur les mêmes exemples : la nôtre, celle des auteurs de JevK5 et celle de JevBench. Sur le niveau difficile, le 4B obtient 75,7 %, contre 42,3 % pour le 3B et 73,0 % pour Jev ; les écarts avec Jev et JevK5 ne sont pas significatifs.
04 · Décisions difficiles sur de longs documents
317 questions de décision rédigées par Claude Opus sur des documents longs et réalistes, en anglais et en français, chacune vérifiée par deux solveurs Opus à l'aveugle. Kahn1 ne s'est jamais entraîné dessus, mais elles ont servi à choisir le checkpoint 4B : lisez-les comme un split de développement, pas comme un benchmark. Aucun autre système n'y a été testé. k = 1.
| Questions | Exemples | Qwen3.5-4B, base | Kahn1 4B |
|---|---|---|---|
| Anglais | 233 | 48,9 % | 67,0 % |
| Français | 84 | 48,8 % | 69,0 % |
| Total | 317 | 48,9 % | 67,5 % |
Le fine-tuning ajoute 19 points au modèle de base dont il part. Les questions qui demandent de calculer une date, une durée ou un montant restent les plus faibles : une seule passe ne fait pas d'arithmétique.
05 · Kahn1 en détail
Kahn1 4B, sur des données réservées jamais vues à l'entraînement, avec k = 3 permutations d'options et calibration par température, sur une seule RTX 5070 Ti (16 Go) avec vLLM. Les chiffres de Kahn1 3B restent dans le tableau du holdout ci-dessus.
Précision par dataset, Kahn1 4B
niveau du hasard (1/n options ; chaque question Choice présente 8 des intentions). Score en correspondance exacte : sur SST-5, les annotateurs humains ne s'accordent qu'environ 55 à 60 % du temps.
Par primitive, Kahn1 4B
| Primitive | Exemples | Précision | ECE | Brier |
|---|---|---|---|---|
| Choice | 6 050 | 92,35 % | 0,015 | 0,113 |
| Noul | 2 403 | 75,49 % | 0,127 | 0,346 |
| Score | 6 210 | 51,88 % | 0,112 | 0,624 |
| Total | 14 663 | 72,45 % | 0,072 | 0,367 |
ECE : erreur de calibration attendue, 15 classes (0 = parfait). Dans une ablation sur le 3B, une étape isotonique ajoutée à la température a fait monter l'ECE globale à 0,093 : Kahn1 utilise donc la température seule.
Scores ordinaux, Kahn1 4B
| Dataset | Exact | ±1 niveau | MAE E[S] | Spearman ρ |
|---|---|---|---|---|
| SST-5 | 54,98 % | 94,48 % | 0,572 | 0,833 |
| Avis d'applications | 50,18 % | 84,42 % | 0,673 | 0,783 |
Quand le 4B rate le niveau exact, il est le plus souvent à un cran : 94,5 % (SST-5) et 84,4 % (avis d'applications) de ses réponses sont à un niveau près.
Snake : une décision à chaque tour
20 parties sur un plateau 10×10, mêmes règles et même texte d'état que la démo navigateur. Nombre moyen de fruits mangés par partie, barres à l'échelle de 25.
À partir du seul plateau ASCII, il ne sait pas faire la géométrie. Dès que l'état dit ce qui se trouve à un pas dans chaque direction, il joue aussi bien que l'heuristique.
Cache de préfixe
Latence médiane pour N questions posées sur un même état, Kahn1 4B (bf16, vLLM, une RTX 5070 Ti, k = 1, médiane de 10 passages). Qwen3.5 est un modèle hybride (couches Gated DeltaNet et attention) : vLLM met donc son préfixe en cache par blocs de 528 tokens. Sur un état de 1 064 tokens, 93 % de chaque prompt vient du cache et 10 questions prennent 143 ms, environ 3 fois une question (une dizaine de millisecondes par question supplémentaire). Sur un état de 212 tokens, aucun bloc ne se remplit, rien n'est réutilisé et chaque question recalcule l'état : la latence croît presque linéairement, 319 ms pour 10.
| Questions | 1 | 2 | 4 | 6 | 8 | 10 | Servi par le cache |
|---|---|---|---|---|---|---|---|
| État de 212 tokens | 45,5 ms | 83,8 ms | 136,4 ms | 189,4 ms | 249,1 ms | 318,8 ms | 0 % |
| État de 1 064 tokens | 49,3 ms | 92,8 ms | 108,7 ms | 104,1 ms | 121,7 ms | 142,7 ms | 93 % |
Rapports complets (en anglais) : Kahn1 4B · holdout 4B · JevBench 4B · cache de préfixe · Kahn1 face à JevK5 · Choice sur les mêmes options (3B) · holdout 3B · JevBench 3B · benchmark Snake
06 · Latence et prix
Les latences ne mesurent pas la même chose : Kahn1 tourne sur un GPU local, JEV est une requête sur Internet.
| Kahn1 4B | Kahn1 3B | JEV 1.13.0 | |
|---|---|---|---|
| Où | votre matériel : vLLM sur une RTX 5070 Ti (16 Go) ; tourne aussi sur CPU, en quelques secondes par question | de même, sur le même GPU | l'API hébergée de TypeSafe |
| Latence médiane | 88,7 ms, p95 279,3 ms (k = 3) | 36,4 ms, p95 82,6 ms (k = 3) | 248 ms, p95 308 ms, aller-retour depuis notre client, réseau inclus, 6 requêtes en parallèle |
| Débit | 8,5 requêtes/s (k = 3) | 21,7 requêtes/s, une à la fois | 23,3 exemples/s avec 6 en parallèle |
| Prix | votre GPU ou CPU ; poids sous Apache 2.0 | votre GPU ou CPU ; poids sous licence de recherche Qwen (voir ses conditions) | 0,042 $ par million de tokens d'entrée, sortie gratuite (tarif public) |
07 · Reproduire
$ python scripts/fit_calibration.py --model Okura66/Kahn1-Qwen3.5-4B --format qwen3 --out calibration_4b.json $ python -m eval.eval_full --model Okura66/Kahn1-Qwen3.5-4B --prompt-format qwen3 --eval data/eval.jsonl \ --calibration calibration_4b.json --n-permutations 3 --max-model-len 4096 # Kahn1 4B, holdout $ python scripts/jev_holdout.py run # JEV sur data/eval.jsonl, reprend où il s'est arrêté $ python scripts/jev_holdout.py run --noul-template supported # exemples Noul, reformulés $ python scripts/choice_fairness.py jev8 # JEV, Choice sur les mêmes 8 options $ python scripts/jevbench_vs_jev.py # reports/JEVBENCH_VS_JEV.md $ python scripts/kahn1_4b_report.py # reports/KAHN1_4B_REPORT.md
JEV demande JEV_API_KEY. Construisez d'abord le holdout avec
python training/build_dataset.py --eval-only --eval-out data/eval.jsonl. Rapports (en anglais) :
Kahn1 4B face au 3B, à JEV et à JevK5 ·
holdout Kahn1 4B ·
JevBench Kahn1 4B ·
Kahn1 face à JevK5 ·
Choice sur les mêmes options (3B) ·
JevBench, Kahn1 3B face à Jev ·
holdout Kahn1 3B.
JEV_VS_KAHN1.md est le premier passage, qui donnait à JEV
toutes les intentions en Choice.