- Le modèle SmolLM3 est un LLM open source de 3B de paramètres qui vise à concilier efficacité et performances
- Il prend en charge 6 langues — anglais, français, espagnol, allemand, italien, portugais — et s’étend jusqu’à une fenêtre de contexte de 128k
- Grâce à un double mode (reasoning/non-reasoning), il est possible de basculer entre les modes de raisonnement avec les flags
/thinket/no_think - Il fournit l’ensemble des étapes d’entraînement — pretraining, mid-training, post-training — ainsi que les jeux de données publiés et le blueprint d’ingénierie complet
- Côté performances, il surpasse Llama-3.2-3B et Qwen2.5-3B, avec une compétitivité proche de celle des modèles 4B
Vue d’ensemble
SmolLM3 est un grand modèle de langage open source de 3B de paramètres conçu pour offrir à la fois efficacité et performances. Son principal différenciateur est d’être à la fois petit et rapide, tout en prenant en charge le long contexte, le multilingue et le raisonnement.
- 3B de paramètres entraînés sur 11 billions (11T) de tokens
- Performances de pointe (SoTA), capables de rivaliser avec des modèles 4B
- Modèle instruct à double mode : bascule entre reasoning et non-reasoning via
/thinket/no_think - Prise en charge de l’anglais, du français, de l’espagnol, de l’allemand, de l’italien et du portugais
- NoPE et YaRN pour aller jusqu’à un contexte de 128k
L’architecture, le mélange de données et les recettes de chaque étape de l’ensemble du processus d’entraînement sont entièrement publiés.
Pretraining
Architecture et configuration d’entraînement
SmolLM3 repose sur un transformer decoder et adapte l’architecture Llama pour améliorer l’efficacité et les performances sur les contextes longs.
- Grouped Query Attention (GQA) : plus efficace en mémoire que le multi-head attention, avec des performances équivalentes
- NoPE : suppression du rotary position embedding toutes les 4 couches afin d’améliorer les performances sur les longs contextes
- Masquage intra-document : les documents différents sont masqués pour ne pas s’attendre mutuellement, ce qui stabilise l’entraînement long-context
- Suppression du weight decay sur les embeddings : pour garantir un comportement d’entraînement plus stable
La configuration d’entraînement est la suivante :
- batch global de 2.36M tokens, longueur de séquence de 4096, learning rate de 2e-4, AdamW(β1:0.9, β2:0.95), weight decay de 0.1, gradient clipping à 1
- Scheduler WSD : 2000 étapes de warmup, puis décroissance linéaire sur les 10 % finaux
- Entraînement distribué avec le framework nanotron, données via datatrove, évaluation avec lighteval
- 384 GPU H100, 24 jours d’entraînement
Mélange de données et entraînement par étapes
Le pretraining se déroule en 3 phases :
- Phase 1 (0T→8T) : web (85 %, dont 12 % multilingue), code (12 %), mathématiques (3 %)
- Phase 2 (8T→10T) : web (75 %, dont 12 % multilingue), code (15 %), mathématiques (10 %) — ajout de code et de données mathématiques de meilleure qualité
- Phase 3 (10T→11.1T) : web (63 %, dont 12 % multilingue), code (24 %), mathématiques (13 %) — suréchantillonnage de code et de maths de haute qualité, introduction de données d’instruction et de raisonnement
Les proportions de mélange de données à chaque étape ont été optimisées au moyen de nombreux essais d’ablation.
Après le pretraining, une phase supplémentaire de mid-training est appliquée pour renforcer les performances en long contexte et en raisonnement.
Mid-training
Entraînement long contexte
Après le pretraining, 100B tokens supplémentaires sont utilisés pour augmenter la longueur de contexte en 2 étapes (4k→32k→64k).
- Extension de longueur via ajustement du RoPE theta
- Suréchantillonnage des données de mathématiques, de code et de raisonnement
- Optimisation des performances sur longues séquences avec NoPE et decay mixture
- Entraînement jusqu’à 64k, avec YaRN appliqué à l’inférence pour aller jusqu’à 128k
Mid-training orienté raisonnement
Pour améliorer les capacités de raisonnement, le modèle est réentraîné sur 35B tokens (OpenThoughts3-1.2M, Llama-Nemotron-Post-Training-Dataset, etc.).
- Apprentissage de capacités générales de reasoning, sans orientation vers un domaine spécifique
- Utilisation du template ChatML et du wrapped packing
- Sauvegarde de checkpoints après 4 époques (~140B tokens)
Post-training
Alors que la plupart des modèles de reasoning nécessitent des processus RL fermés ou complexes, SmolLM3 met en œuvre une structure de double instruction (raisonnement / non-raisonnement) à partir de données ouvertes et de recettes claires.
Template de chat
- Ajout des flags
/thinket/no_thinkdans le prompt système pour changer de mode de raisonnement - Sections séparées XML Tools et Python Tools pour prendre en charge le code et les appels d’outils
- Utilisation de messages système et de métadonnées (date, knowledge cut-off, mode de raisonnement), avec possibilité de les surcharger de façon flexible
Supervised Finetuning (SFT)
Après le mid-training sur 140B de données de raisonnement, un supervised finetuning est effectué sur 1.8B tokens (données SFT : raisonnement logique / non-raisonnement).
- Génération de données synthétiques de raisonnement via Qwen3-32B pour compléter les domaines rares du reasoning
- Maximisation mémoire/efficacité avec des techniques comme le best-fit decreasing packing
- Publication prévue de l’ensemble des données et scripts d’entraînement
Anchored Preference Optimization (APO)
- Après le SFT, alignement du modèle avec l’APO, une variante du DPO, à partir des préférences Tulu3 (non-reasoning) et de paires de préférences synthétiques Qwen3-32B/0.6B (reasoning)
- Construction de la loss sous forme de triplet prompt + réponse, pour une optimisation stable et de bonnes performances
- Une dégradation des performances long contexte due au mid-training de raisonnement a été observée, puis corrigée par model merging
Fusion de modèles
- Utilisation de la bibliothèque MergeKit, avec une fusion linéaire APO checkpoint model soup (0.9) + checkpoint de mid-training (0.1)
- Récupération des performances en long contexte à 128k tout en maintenant les performances globales
- Publication du modèle final à partir du meilleur checkpoint
Évaluation
Modèle de base
Sur 12 benchmarks majeurs, il domine les autres modèles 3B et affiche des performances proches de modèles 4B.
- Forces équilibrées en compréhension de documents, raisonnement, mathématiques et code
- Capacité d’extension de longueur clairement démontrée sur RULER 64k, entre autres
- Capacités multilingues validées sur Global MMLU, MLMM HellaSwag, Flores-200, Belebele, etc.
- Performances constantes dans 5 langues européennes en plus de l’anglais
Modèle Dual Instruct / Reasoning
Évaluation non-reasoning
SmolLM3 surpasse Llama3.2-3B Instruct et Qwen2.5 3B Instruct, tout en offrant un bon équilibre entre efficacité et performances au niveau de modèles de reasoning 4B.
Évaluation reasoning
Quand /think est activé, les performances bondissent sur la plupart des benchmarks
- AIME 2025 (36.7% vs 9.3%), LiveCodeBench (30.0% vs 15.2%), GPQA Diamond (41.7% vs 35.7%) : il résout aussi des problèmes difficiles
- Raisonnement 3B comparable à Qwen3 4B, avec de solides capacités en reasoning mathématique et en résolution de problèmes complexes
Le double mode permet donc de choisir entre rapidité et analyse approfondie.
Guide d’utilisation
SmolLM3 est officiellement pris en charge à partir de transformers v4.53.0
- Chargement du modèle, rédaction du prompt et inférence avec un code simple
- Bascule entre reasoning et non-reasoning via les flags
/thinket/no_thinkdans le prompt système
Prise en charge des paramètres xml_tools et python_tools pour les appels d’outils (Agentic)
Conclusion
SmolLM3 est un modèle fully open de taille 3B qui prend en charge à la fois le long contexte, le multilingue et le reasoning.
- Publication complète du blueprint d’ingénierie : recettes d’entraînement pour chaque étape, jeux de données, logs d’entraînement, etc.
- De quoi maximiser la participation de la communauté aux améliorations et à la validation
Ressources
- Modèle, scripts, jeux de données, etc. : HuggingFaceTB/SmolLM3-3B
- Pour l’article, les évaluations, l’allègement et les outils de fusion, voir les liens GitHub, Hugging Face et les liens vers le papier correspondants
1 commentaires
Commentaires sur Hacker News
llama.cpp). En dehors de Microsoft, presque aucune entreprise ne semble encore prendre l’IA locale au sérieux dans la durée. D’habitude je garde ça pour moi, mais même si HF est vraiment un excellent citoyen, mettre en avant la supériorité d’autres modèles sans mentionner la superstar revient, à mon sens, à ignorer l’ancienne SoTA locale de ce domaine ; c’est pour ça que j’ai jugé utile d’intervenir cette foisllama.cppet d’autres moteurs d’inférence ; pour l’exécuter, utilisez la commande suivante./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99