KAHN1
EN FR

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).

Kahn1 4BKahn1 3BJEV 1.13.0 · API TypeSafe
HOLDOUT KAHN1
14 663 exemples · mêmes options · JEV via son API
0255075100
929194
525152
756774
727073
ChoiceScoreNoulTotal
JEVBENCH PUBLIC
231 exemples · Jev noté par JevBench
0255075100
100100100
978599
764273
876887
FacileStandardDifficileTotal
VUE TABLEAU
BenchmarkGroupeExemplesKahn1 4BKahn1 3BJEV
HOLDOUT KAHN1Choice6 05092,3 %90,9 %94,5 %
HOLDOUT KAHN1Score6 21051,9 %51,4 %52,0 %
HOLDOUT KAHN1Noul2 40375,5 %67,0 %74,4 %
HOLDOUT KAHN1Total14 66372,4 %70,3 %73,2 %
JEVBENCH PUBLICFacile48100,0 %100,0 %100,0 %
JEVBENCH PUBLICStandard7297,2 %84,7 %98,6 %
JEVBENCH PUBLICDifficile11175,7 %42,3 %73,0 %
JEVBENCH PUBLICTotal23187,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.

DatasetExemplesKahn1 4BKahn1 3BJEVECE 4BECE 3BECE JEV
banking773 07691,8 %91,1 %94,8 %0,0180,0260,024
MASSIVE2 97492,9 %90,8 %94,1 %0,0130,0110,017
RTE27785,9 %82,7 %89,9 %0,0480,1050,034
SciTail2 12674,1 %65,0 %72,4 %0,1410,2480,077
SST-52 21055,0 %52,4 %57,7 %0,0520,0980,178
Avis d'applications4 00050,2 %50,9 %48,9 %0,1460,0960,252
Choice6 05092,3 %90,9 %94,5 %0,0150,0170,019
Score6 21051,9 %51,4 %52,0 %0,1120,0970,226
Noul2 40375,5 %67,0 %74,4 %0,1270,2320,071
Total14 66372,4 %70,3 %73,2 %0,0720,0820,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 questionExemplesKahn1 4BKahn1 3BJEV
8 (la bonne + 7 leurres tirés)6 05092,3 %90,9 %94,5 %
toutes les intentions (77 / 60)1 18471,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.

DatasetExemplesKahn1 4BKahn1 3BJEV, affirmation seuleJEV, formulation « appuie »
RTE27785,9 %82,7 %82,3 %89,9 %
SciTail2 12674,1 %65,0 %44,4 %72,4 %
Noul2 40375,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é.

NiveauExemples publicsKahn1 4BKahn1 3BJevK5 v0.2Jev 1.13.0Jev, public + réservé
Facile48100,0 %100,0 %100,0 %100,0 %100,0 %
Standard7297,2 %84,7 %95,8 %98,6 %99,0 %
Difficile11175,7 %42,3 %73,9 %73,0 %74,1 %
Total23187,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.

QuestionsExemplesQwen3.5-4B, baseKahn1 4B
Anglais23348,9 %67,0 %
Français8448,8 %69,0 %
Total31748,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

banking77 CHOICE · 8 INTENTIONS SUR 77 · 3 076 EXEMPLES91,8 %
MASSIVE CHOICE · 8 INTENTIONS SUR 60 · 2 974 EXEMPLES92,9 %
RTE NOUL · 277 EXEMPLES85,9 %
SciTail NOUL · 2 126 EXEMPLES74,1 %
SST-5 SCORE · 5 NIVEAUX · 2 210 EXEMPLES55,0 %
Avis d'applications SCORE · 5 NIVEAUX · 4 000 EXEMPLES50,2 %

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

PrimitiveExemplesPrécisionECEBrier
Choice6 05092,35 %0,0150,113
Noul2 40375,49 %0,1270,346
Score6 21051,88 %0,1120,624
Total14 66372,45 %0,0720,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

DatasetExact±1 niveauMAE E[S]Spearman ρ
SST-554,98 %94,48 %0,5720,833
Avis d'applications50,18 %84,42 %0,6730,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.

Kahn1 3B, plateau + lecture à un pas MAX 40 · 22,2 MS PAR DÉCISION, 20 PARTIES EN BATCH21,05
Heuristique gloutonne MAX 3421,00
Coup aléatoire, jamais demi-tour MAX 10,20
Kahn1 3B, plateau seul 5 PAS EN MOYENNE, PUIS UN MUR0,00

À 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.

Questions1246810Servi par le cache
État de 212 tokens45,5 ms83,8 ms136,4 ms189,4 ms249,1 ms318,8 ms0 %
État de 1 064 tokens49,3 ms92,8 ms108,7 ms104,1 ms121,7 ms142,7 ms93 %

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 4BKahn1 3BJEV 1.13.0
Oùvotre matériel : vLLM sur une RTX 5070 Ti (16 Go) ; tourne aussi sur CPU, en quelques secondes par questionde même, sur le même GPUl'API hébergée de TypeSafe
Latence médiane88,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ébit8,5 requêtes/s (k = 3)21,7 requêtes/s, une à la fois23,3 exemples/s avec 6 en parallèle
Prixvotre GPU ou CPU ; poids sous Apache 2.0votre 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.