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 4B | Kahn1 3B | |
|---|---|---|
| Modèle de base | Qwen/Qwen3.5-4B | Qwen/Qwen2.5-3B-Instruct |
| Modèle fusionné | Okura66/Kahn1-Qwen3.5-4B · 8,4 Go | Okura66/Kahn1-Qwen2.5-3B · 6,17 Go |
| Adaptateur LoRA | Okura66/Kahn1-Qwen3.5-4B-LoRA · 57 Mo | Okura66/Kahn1-Qwen2.5-3B-LoRA · 239 Mo |
| Format de prompt | template de chat Qwen3 natif, choisi automatiquement | mise en forme à balises, choisie automatiquement |
| Licence | Apache 2.0 | licence de recherche Qwen : voir ses conditions |
| Holdout, 14 663 exemples | 72,4 % | 70,3 % |
| JevBench, 231 exemples publics | 87,4 % (difficile 75,7 %) | 67,5 % (difficile 42,3 %) |
| Latence médiane, k = 3 | 88,7 ms | 36,4 ms |
| Calibration | calibration.json dans le dépôt Hugging Face | calibration.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