KAHN1
EN FR

Modèles

Kahn1 existe en deux tailles, Kahn1 4B et Kahn1 3B : le même modèle, entraîné pour les trois mêmes primitives et servi par le même moteur. Chacun est sur Hugging Face en modèle fusionné et en adaptateur LoRA.

01 · Les deux tailles

Kahn1 4BKahn1 3B
Modèle de baseQwen/Qwen3.5-4BQwen/Qwen2.5-3B-Instruct
Modèle fusionnéOkura66/Kahn1-Qwen3.5-4B · 8,4 GoOkura66/Kahn1-Qwen2.5-3B · 6,17 Go
Adaptateur LoRAOkura66/Kahn1-Qwen3.5-4B-LoRA · 57 MoOkura66/Kahn1-Qwen2.5-3B-LoRA · 239 Mo
Format de prompttemplate de chat Qwen3 natif, choisi automatiquementmise en forme à balises, choisie automatiquement
LicenceApache 2.0licence de recherche Qwen : voir ses conditions
Holdout, 14 663 exemples72,4 %70,3 %
JevBench, 231 exemples publics87,4 % (difficile 75,7 %)67,5 % (difficile 42,3 %)
Latence médiane, k = 388,7 ms36,4 ms
Calibrationcalibration.json dans le dépôt Hugging Facecalibration.json dans le dépôt Hugging Face

Holdout et JevBench : k = 3, calibration par température. Latence : vLLM sur une RTX 5070 Ti. Le détail est sur la page des résultats. Le code est sous licence MIT.

Quantifications GGUF : mradermacher/Kahn1-Qwen2.5-3B-GGUF, un build plus léger du 3B fait par mradermacher, plus ancien que les poids publiés du 3B. Ce sont elles que chargent les démos navigateur (playground, Snake).

02 · Lequel choisir

Les deux tailles tournent sur GPU (vLLM) comme sur CPU (transformers), avec la même API et le même format de réponse. Les faits : sur le holdout, le 4B obtient 72,4 % et le 3B 70,3 % ; sur JevBench, le 4B obtient 87,4 % et le 3B 67,5 %, et 75,7 % contre 42,3 % sur le niveau difficile. Le 3B est plus petit (6,17 Go contre 8,4 Go) et plus rapide (médiane de 36,4 ms contre 88,7 ms). Les poids du 4B sont sous Apache 2.0, ceux du 3B sous licence de recherche Qwen.

03 · En charger un

Avec sysone, indiquez l'identifiant du modèle ; le moteur choisit seul son format de prompt.

$ SYSONE_MODEL=Okura66/Kahn1-Qwen3.5-4B uv run sysone serve --port 8000                      # GPU, vLLM
$ SYSONE_BACKEND=cpu SYSONE_MODEL=Okura66/Kahn1-Qwen3.5-4B uv run sysone serve --port 8000   # CPU
# Kahn1 3B : SYSONE_MODEL=Okura66/Kahn1-Qwen2.5-3B, sur l'un ou l'autre backend

Un adaptateur LoRA se pose sur son modèle de base avec peft :

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-4B", dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained("Okura66/Kahn1-Qwen3.5-4B-LoRA")
model = PeftModel.from_pretrained(base, "Okura66/Kahn1-Qwen3.5-4B-LoRA")
# Kahn1 3B : base "Qwen/Qwen2.5-3B-Instruct", adaptateur "Okura66/Kahn1-Qwen2.5-3B-LoRA"

Pour servir un adaptateur avec vLLM, fusionnez-le d'abord :

$ python scripts/merge_qwen_lora.py --base Qwen/Qwen3.5-4B --adapter Okura66/Kahn1-Qwen3.5-4B-LoRA --output checkpoints/kahn1_4b

Le guide couvre l'API, le format de réponse et la calibration.

Fiches Hugging Face : Kahn1 4B · Kahn1 4B LoRA · Kahn1 3B · Kahn1 3B LoRA · tous les résultats