Instructions to use borekboissy/Millesime-2026-9b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use borekboissy/Millesime-2026-9b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="borekboissy/Millesime-2026-9b") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("borekboissy/Millesime-2026-9b") model = AutoModelForMultimodalLM.from_pretrained("borekboissy/Millesime-2026-9b", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use borekboissy/Millesime-2026-9b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "borekboissy/Millesime-2026-9b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "borekboissy/Millesime-2026-9b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/borekboissy/Millesime-2026-9b
- SGLang
How to use borekboissy/Millesime-2026-9b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "borekboissy/Millesime-2026-9b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "borekboissy/Millesime-2026-9b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "borekboissy/Millesime-2026-9b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "borekboissy/Millesime-2026-9b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use borekboissy/Millesime-2026-9b with Docker Model Runner:
docker model run hf.co/borekboissy/Millesime-2026-9b
Millésime 2026 — 9B
Millésime 2026 9B est un modèle de langue de 9 milliards de paramètres, spécialisé pour le français conversationnel, construit à partir de Qwen/Qwen3.5-9B.
Il obtient un score FR-MT-Bench supérieur à des modèles de 14B paramètres — et ce avec quatre juges LLM différents.
Philosophie du projet Millésime
Le projet Millésime repose sur trois principes :
- L'excellence en langue française. Les modèles Millésime visent à surpasser les modèles de taille équivalente sur les principaux benchmarks francophones.
- Une gamme complète, avec un accent sur les petits modèles. Le projet vise plusieurs tailles (1.7B, 4B, 9B, 27B). Un effort particulier est porté sur les SLM (Small Language Models), qui représentent une part importante des téléchargements sur Hugging Face et répondent à un besoin réel de modèles légers, exécutables localement.
- Une chaîne de données propre. Les modèles Millésime ne sont entraînés que sur des données dont les conditions d'utilisation autorisent le fine-tuning. De nombreux projets s'appuient sur des corpus contenant des sorties de modèles dont les conditions d'utilisation interdisent explicitement cet usage ; les datasets du projet Millésime sont filtrés en amont pour écarter ces données.
Caractéristiques
| Modèle de base | Qwen/Qwen3.5-9B |
| Paramètres | ~9 milliards |
| Fenêtre de contexte | 262 144 tokens |
| Langue cible | Français |
| Licence | Apache 2.0 |
| Mode de génération | Sans chaîne de pensée (non-thinking) |
| Formats disponibles | Safetensors (ce dépôt) |
Pipeline d'entraînement
Le modèle est le fruit d'un pipeline en deux phases :
| Phase | Méthode | Données |
|---|---|---|
| 1 | Fine-tuning supervisé (SFT) | borekboissy/Millesime-2026-SFT |
| 2 | Optimisation par préférences (DPO) | borekboissy/Millesime-2026-comparIA-DPO |
Phase 1 — SFT. L'objectif était d'injecter un maximum de culture générale française : plus de 38 000 exemples répartis sur 14 catégories et 280 sous-catégories (histoire et culture, langue française, droit et administration, sciences, philosophie, raisonnement, écriture et style…), générés synthétiquement puis fact-checkés.
Phase 2 — DPO. Alignement sur des préférences humaines réelles issues de l'arène publique Compar:IA du ministère de la Culture, filtrées pour ne conserver que des paires exploitables (préférence nette, tour unique, français, modèles à licence permissive, ratio de longueur maîtrisé).
Le pipeline en 9B en seulement deux étapes a montré de meilleures performances en réalisant la phase 2 (DPO) avec, comme modèle de base, le modèle en sortie de phase 1 (SFT). Ce pipeline est beaucoup plus intuitif que celui de son homologue en 4B qui, lui, avait montré de meilleures performances en réalisant un model merging TIES entre le SFT et le DPO, plutôt qu'en réalisant DPO sur le SFT.
Résultats
FR-MT-Bench
Un score FR-MT-Bench dépend autant du juge que du modèle évalué : chaque juge LLM porte ses propres biais (préférences de style, sensibilité à la longueur, affinité pour les modèles de sa propre famille). Pour neutraliser ce risque, chaque modèle du panel a été évalué par quatre juges LLM issus de quatre familles différentes, tous appelés via OpenRouter : GPT-5.6-Sol, Claude Opus 5, Gemini 3.1 Pro et Grok 2.6.
| Modèle | GPT-5.6-Sol | Claude Opus 5 | Gemini 3.1 Pro | Grok 2.6 | Moyenne |
|---|---|---|---|---|---|
| Millésime 2026 9B | 7.181 | 6.900 | 7.819 | 7.356 | 7.314 |
| Chocolatine-2.0.3-14B | 7.146 | 6.831 | 7.494 | 6.963 | 7.109 |
| Ministral-3-14B | 6.338 | 6.463 | 6.769 | 6.869 | 6.610 |
| Millésime 2026 4B | 6.475 | 6.344 | 6.638 | 6.844 | 6.575 |
| Qwen3.5-9B (modèle de base) | 5.906 | 5.844 | 6.444 | 6.050 | 6.061 |
Tous les modèles ont été évalués avec la chaîne de pensée désactivée (non-thinking). Plusieurs benchmarks imposent une limite de tokens en sortie que les modèles à raisonnement explicite consommaient parfois intégralement dans leur chaîne de réflexion, sans produire de réponse finale exploitable. Désactiver le raisonnement garantit une comparaison équitable entre tous les modèles du panel.
Benchmarks académiques
Évaluations menées avec Lighteval (IFEval-fr, GPQA-fr) et lm-evaluation-harness (French Bench, Global-MMLU-fr).
Tableau 1 — Tâches génériques FR (French Bench, lm-evaluation-harness, 0-shot)
| Tâche (n) | Millésime 2026 9B |
|---|---|
| arc_challenge (acc_norm), n=1169 | 54.1% |
| boolqa, n=178 | 84.3% |
| grammar, n=119 | 75.6% |
| hellaswag (acc_norm), n=9338 | 70.1% |
| global_mmlu_fr (total), n=400 | 73.5% |
| xwinograd_fr, n=83 | 74.7% |
Tableau 2 — Global-MMLU-fr : détail par sous-domaine
| Sous-domaine (n) | Millésime 2026 9B |
|---|---|
| business, n=58 | 75.9% |
| humanities, n=102 | 75.5% |
| medical, n=36 | 66.7% |
| other, n=56 | 66.1% |
| social_sciences, n=102 | 69.6% |
| stem, n=46 | 89.1% |
Tableau 3 — GPQA-fr et IFEval-fr (Lighteval, décodage glouton)
| Métrique (n) | Millésime 2026 9B |
|---|---|
| gpqa-fr (acc), n=197 | 36.0% |
| ifeval-fr prompt (strict), n=541 | 65.4% |
| ifeval-fr instruction (strict), n=541 | 74.3% |
| ifeval-fr prompt (loose), n=541 | 68.4% |
| ifeval-fr instruction (loose), n=541 | 76.6% |
Empreinte carbone
L'empreinte de chaque phase d'entraînement a été mesurée avec la librairie Python CodeCarbon. Les relevés bruts sont disponibles dans le répertoire emissions/ de ce dépôt (phase1.csv, phase2.csv, phase3.csv).
| Phase | Durée | Énergie consommée | Émissions |
|---|---|---|---|
| Phase 1 — SFT | 5 h 12 | 8.558 kWh | 3162 g CO₂eq |
| Phase 2 — DPO | 2 h 47 | 4.341 kWh | 1604 g CO₂eq |
| Total | 7 h 59 | 12.90 kWh | 4.77 kg CO₂eq |
Matériel utilisé : 4 × NVIDIA B200, Intel Xeon Platinum 8559C (192 cœurs), 1996 Go de RAM — instance cloud localisée aux États-Unis.
Utilisation
Avec transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "borekboissy/Millesime-2026-9b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto",
)
messages = [
{"role": "user", "content": "Explique-moi l'origine de l'expression « tomber dans les pommes »."},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, temperature=0.7, top_p=0.8)
print(tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True))
Le modèle fonctionne en mode non-thinking : il répond directement, sans chaîne de raisonnement explicite.
Limitations et axes d'amélioration
Ce modèle est une première itération, et plusieurs limites sont identifiées et assumées :
- Biais de longueur du dataset SFT. Le corpus
Millesime-2026-SFTproduit des réponses de longueur comparable qu'il s'agisse d'une question simple ou d'une question complexe. Le modèle a hérité de ce biais et peut se montrer inutilement verbeux sur des questions triviales. La refonte de ce dataset est le chantier prioritaire de la prochaine itération. - Absence de raisonnement explicite. Les corpus d'entraînement ne contiennent aucune trace de chaîne de pensée (thinking) ; le modèle n'est pas conçu pour ce mode de fonctionnement.
- Absence de données de tool calling. Les corpus ne contiennent pas d'exemples d'appel d'outils ; les capacités natives du modèle de base sur ce point n'ont pas été renforcées et pourraient avoir été partiellement diluées par le fine-tuning.
- Connaissances pures. Sur les benchmarks de connaissance encyclopédique (GPQA-fr, Global-MMLU-fr), le modèle reste en retrait par rapport à des modèles deux fois plus gros — une limite structurelle liée à sa taille.
- Modèle de base. Tous les modèles « Millésime 2026 » reposent sur la famille Qwen3. Les itérations futures pourront s'appuyer sur des générations de modèles de base plus récentes.
Ces axes alimenteront un futur « Millésime 2027 ».
Licence et attributions
Ce modèle est distribué sous licence Apache 2.0, en cohérence avec la licence du modèle de base Qwen3.5-9B.
Les données de préférence utilisées en phase 2 sont dérivées du dataset Compar:IA Arena du ministère de la Culture (Etalab 2.0 / CC-BY-4.0), que nous remercions pour la mise à disposition de ce corpus de préférences francophones.
Citation
@misc{boissy2026millesime9b,
author = {Boissy, Borek},
title = {Millésime 2026 9B: A French-Specialized Small Language Model},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/borekboissy/Millesime-2026-9b}}
}
Auteur / Contact
Borek Boissy
- Hugging Face : huggingface.co/borekboissy
- LinkedIn : linkedin.com/in/borek-boissy-b15a393
- Downloads last month
- -
