1 points par GN⁺ 2025-07-09 | 1 commentaires | Partager sur WhatsApp
  • 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 languesanglais, 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 /think et /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 /think et /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 /think et /no_think dans 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 /think et /no_think dans 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

 
GN⁺ 2025-07-09
Commentaires sur Hacker News
  • L’impression générale est que la plupart des performances SOTA ont été atteintes avec une taille de 3B, et que le modèle rejoint fièrement le club rare des modèles entièrement ouverts, avec code et recette de reproduction publiés. Pour l’entraîner soi-même, il faudrait sans doute l’équivalent d’environ un million de dollars de temps GPU (sur la base de 4000 GPU pendant 24 jours), et la richesse de la documentation partagée est également impressionnante ; c’est vu comme une contribution positive et solide pour l’industrie
    • En réalité, il faut faire tourner 384 H100 pendant 24 jours, donc le coût est même inférieur à la moitié d’un million de dollars
    • J’ai croisé les benchmarks de Phi-4-mini pendant une dizaine de minutes ce matin ; j’ai trouvé étrange que ce modèle en soit absent, et globalement il apparaît toujours derrière. Pour situer, je développe un client LLM, et mon objectif principal est de réduire au maximum l’écart entre le local et le cloud (avec 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 fois
  • Ce modèle est petit (3B) et affiche d’excellentes performances sur les benchmarks. Il convient bien au déploiement edge/mobile, ce qui lui donne un avantage important face à gemma3-4b. Il prend en charge un double mode raisonnement / non-raisonnement et publie intégralement sa méthode d’entraînement > Nous publions SmolLM3 avec son blueprint d’ingénierie. Cela inclut l’architecture détaillée, une stratégie de préentraînement en 3 étapes pour améliorer progressivement les performances par domaine, ainsi qu’une méthodologie pour construire un modèle de raisonnement hybride. Obtenir ce type de résultats demande habituellement des mois de rétro-ingénierie, mais nous publions l’ensemble de la méthodologie
  • J’ai moi-même corrigé le problème de chat template pour llama.cpp et 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
  • Les performances se rapprochent presque de Qwen3 distill alors que le modèle ne fait que 75 % de sa taille, ce qui est remarquable. Le modèle de base smollm était déjà de haute qualité, donc je l’ai utilisé régulièrement aussi pour du fine-tuning, et je compte l’employer bientôt pour des agents locaux ou de la complétion de code. L’algorithme de RL a aussi l’air intéressant. Jusqu’ici je travaillais surtout autour des algorithmes d’OpenAI, mais il est peut-être temps de refaire un point sur la SOTA récente (la vitesse dans ce domaine est vraiment folle, difficile de suivre)
  • Je serais curieux d’avoir des recommandations de petits modèles adaptés au fine-tuning sur divers jeux de données d’entreprise ; dans notre business unit, on cherche un petit modèle qui puisse tourner dans le navigateur et sur mobile, afin d’éviter les galères de RAG et de ressources cloud
    • Les petits modèles sont faibles pour accumuler des connaissances. Je recommanderais peu une approche consistant à leur injecter du savoir via le fine-tuning. À la place, il me semblerait préférable d’implémenter en wasm un système de RAG embarqué déployable hors ligne ; il existe déjà des cas de réussite avec cette approche
    • Il est important d’essayer soi-même plusieurs modèles et d’avoir de vrais benchmarks. Le machine learning n’est pas mon domaine d’expertise, mais même en utilisant le guide officiel et les outils de Mistral 7B pour le fine-tuning, les résultats n’ont pas été à la hauteur de mes attentes. J’ai inséré dans le dataset des questions très spécifiques, et malgré toutes les variations de fine-tuning, le modèle n’a jamais su y répondre correctement. Plutôt que d’espérer qu’il apprenne l’information, une combinaison de recherche vectorielle et de recherche par mots-clés est bien plus efficace pour extraire le bon contexte. J’ai utilisé une approche de dataset de préentraînement, et entraîner à partir de Q&R synthétisées depuis les données pourrait peut-être mieux fonctionner, mais je n’ai pas eu le temps d’aller jusque-là
    • J’ai essayé de faire du fine-tuning sur Gemma 3N 2B et les performances sont bonnes, mais le chargement est lent sur un S23U. Une fois lancé, ça tourne bien. J’ai aussi testé SmolVLM 256M et 500M : ça démarre bien plus vite et on peut les embarquer dans l’application comme des assets ; avec un peu de savoir-faire, c’est exploitable. Cela dit, les petits modèles restent limités en performances par leurs paramètres. Et sur Android, les fichiers de plus de 2 Go ne peuvent pas être distribués à cause de problèmes de compression, donc il faut télécharger le modèle séparément ; en plus, il ne peut pas être chargé directement depuis le dossier de téléchargement, il faut le copier dans un dossier dédié à l’application. Gemma 3N 2B fait 3,14 Go, mais il faut au moins 7 Go d’espace libre
    • Je serais curieux de savoir quel objectif vous cherchez à atteindre avec ce type de fine-tuning
  • On dirait un passage tout droit sorti d’un sketch comique britannique : "Quoi, vous dites que c’est un grand modèle de langage, mais il est petit ?" "Oui, vraiment petit." "Mais comment peut-il être à la fois grand et petit ?" "Si on le compare aux grands modèles de langage… il est petit." "Donc il est grand, en fait ?" "Oui, assez grand." "Grand par rapport à quoi ?" "Aux petits modèles de langage." "Alors ChatGPT, c’est quoi ? Grand parmi les grands ?" "Exactement. C’est un LLLM."
    • Ça donne une ambiance de comédie australienne, style Clarke and Dawe / Utopia
    • Le référentiel change en permanence. GPT-2 était autrefois « grand », mais aujourd’hui il fait à peine la moitié de ce modèle. En plus, Sam Altman disait à l’époque que même GPT-2 était trop dangereux pour être publié. Pour moi, si ça ne tourne pas sur un appareil grand public, c’est « grand », mais débattre de la définition n’a pas beaucoup d’intérêt
    • Je ne toucherai pas au hamster spatial géant miniature (blague issue des jeux BG)
    • Je ne sais plus s’il faut dire big little planet ou small big planet
  • J’ai entendu dire que les modèles llama3 étaient plutôt faciles à fine-tuner (corrigez-moi si je me trompe, ou s’il existe un meilleur modèle ici). Je serais curieux de savoir à quel point le fine-tuning de smollm3 est difficile ; les LLM MoE ont tendance à être particulièrement capricieux sur ce point
  • Ce qui est intéressant, c’est qu’ils n’ont pas appliqué directement du RL eux-mêmes, mais ont fait du fine-tuning uniquement à partir de reasoning traces sur un grand dataset
    • En pratique, ils utilisent une méthode hors ligne comme Anchored Preference Optimization ; comme on l’a vu avec le projet Open R1, appliquer du RL multitâche à de petits modèles n’a rien de trivial. Les méthodes hors ligne permettent d’itérer bien plus vite, car le point crucial est la curation / génération du dataset. C’est une approche adaptée à l’échelle des modèles avec lesquels nous travaillons
  • Beau travail, respect à anton et aux personnes impliquées. J’espère qu’il y aura aussi une continuité sur les modèles de 50 à 100M de paramètres. Je pense que des modèles qui se terminent rapidement sur CPU, comme dans les cas de test Solve by LLM, ont tout à fait leur intérêt