Aller au contenu

Training SLMs (1) - Small Language Models et objectifs.

Elle a tout d'une grande !
Rocco S, MLOps Engineer(ou le mec de la pub Renault, je ne sais plus)

Le gros des discussions IA aujourd’hui s’articule autour de deux ou trois énormes LLMs américains (Anthropic, OpenAI, Google) et des modèles chinois tels que Kimi K3 ou GLM 5.2, qui s’approchent de leurs performances pour un coût nettement plus attractif. Et accessoirement autour de la question de savoir quel LLM est allé hacker quelle société, nouvelle métrique de performance officieuse. Ces modèles brillent par leurs capacités, mais aussi par leur facture et par les contraintes de confidentialité qu’ils traînent derrière eux.

Je souhaite aborder ici l’approche exactement inverse : utiliser ces modèles sur de petites tâches répétitives revient à casser un œuf avec un missile balistique. Pourquoi ne pas plutôt estimer ce que valent de tout petits modèles sur ce genre de tâches, une fois spécialisés ?

Les Small Language Models

Les Large Language Models (LLMs, donc ChatGPT et sa bande) s’appuient aujourd’hui sur des centaines de milliards de paramètres, quelques-uns dépassant même les milliers de milliards. À ne pas confondre avec les milliers de milliards de tokens qu’on leur fait avaler pendant leur pré-entraînement : ce sont deux compteurs différents, et seul le premier décide de ce qu’il faudra de matériel pour les faire tourner. Ce sont donc de véritables monstres à héberger, surtout si l’on veut les garder en interne pour des histoires de souveraineté des données.

Les Small Language Models (SLMs) jouent dans une tout autre catégorie : quelques centaines de millions de paramètres, et disons moins d’un milliard pour la définition que je retiendrai ici. Il n’existe pas de frontière officielle, certains poussent l’étiquette SLM jusqu’à 7 milliards de paramètres, mais plus c’est petit, plus l’expérience est intéressante. Ils sont donc beaucoup plus simples à mettre en place et à héberger, mais ils ont une intelligence proche d’une pelle.

Par contre, leur capacité d’apprentissage, elle, est bien là, et c’est précisément ce qui les rend intéressants : avec un bon jeu de données, pas forcément gigantesque mais très qualitatif, peut-on leur faire atteindre des performances acceptables sur une tâche précise face aux mastodontes ?

Précisons tout de suite pour éviter le malentendu : il ne s’agira jamais d’entraîner un modèle depuis zéro. On part d’un modèle déjà pré-entraîné, on gèle ses poids, et on lui greffe un adaptateur de quelques mégaoctets (la fameuse technique LoRA, sujet du 3e article de la série). C’est exactement ce qui rend l’exercice faisable sur une machine de particulier.

J’ai sélectionné pour cela plusieurs modèles de conceptions et de tailles diverses, créés par des tauliers de l’IA : Alibaba, Google, Hugging Face. Ces petits modèles existent pour la plupart en des dizaines de variantes et d’optimisations proposées par la communauté, mais je me suis contenté des versions stock. Voici donc nos concurrents :

  • Hugging Face - SmolLM2-135M : un SLM de seulement 135 millions de paramètres, qui peut très largement tourner sur un objet connecté. Bonus non négligeable, SmolLM2 est le seul de la bande dont les données et la recette d’entraînement sont entièrement publiques,
  • Google - Gemma 3 270M : le plus petit modèle proposé par Google, conçu explicitement pour être spécialisé sur des tâches précises. Suite à de précédentes expérimentations, sa grande sœur en 4 milliards de paramètres offre déjà des performances remarquables pour sa taille,
  • Hugging Face - SmolLM2-360M : la variante à 360 millions de paramètres du précédent,
  • Alibaba - Qwen 3.5-0.8B : la version miniature de Qwen, le LLM qui vient de plus en plus souvent chatouiller Anthropic et OpenAI,
  • Hugging Face - SmolLM2-1.7B : on quitte ici les SLMs pour les petits LLMs. Même famille et même recette que les deux autres SmolLM2, ce qui en fait un contrôle propre pour mesurer l’effet de la taille seule,
  • Alibaba - Qwen 3.5-4B : idem côté Alibaba, face à sa version 0.8B.

Pour situer tout ce petit monde face à un LLM généraliste, je ferai appel à Claude Opus 5 d’Anthropic. Non pas comme professeur, mais comme instrument de mesure : aucun de nos modèles ne sera entraîné sur ses réponses. Il sert uniquement à donner un plafond auquel comparer les petits modèles.

Petits modèles entraînés localement

L’autre avantage de ces SLMs est leur facilité d’entraînement. J’ai décidé de les entraîner chez moi, en local, avec mon PC haut de gamme de… 2016, remis à niveau en 2020 par l’adjonction d’une RTX 2060 Super. Bref, quasiment un datacenter (de nuit, de loin, les yeux bandés). C’est un Intel i7 6700K overclocké avec 32 Go de RAM qui tourne sous Windows 10. Mais nous travaillerons sous WSL2 avec Ubuntu 26.04 pour tenter de rester sains d’esprit : je fais encore des cauchemars après avoir tenté d’installer CUDA sous Windows.

Le chiffre qui compte dans cette liste n’est d’ailleurs ni le CPU ni les 32 Go de RAM, mais les gargantuesques 8 Go de mémoire vidéo de la carte. C’est ce plafond-là qui décide de ce qu’on peut entraîner ou pas, et il nous réservera quelques surprises : la limite ne se manifeste pas du tout là où on l’attend, ni de la manière dont on l’attend.

J’ai donc voulu pousser l’expérimentation jusqu’au bout : arriver à entraîner ces petits modèles pour un coût quasi nul sur un potato PC. Mais nous verrons aussi comment les entraîner gratuitement dans le cloud, et le résultat de cette comparaison vaut à lui seul le détour.

Mais entraîner pour faire quoi ?

Il faut bien sûr rester réaliste : de si petits modèles ne rivaliseront jamais avec les LLMs sur des tâches génériques. Un prompt du type “Build GTA6, make no mistake” ne produira que de l’hallucination. Par contre, un générateur de messages de commit au format Conventional Commits ? Ou un validateur qui relit le message que vous venez d’écrire avant qu’il ne parte polluer l’historique ? C’est bien plus dans leurs cordes, et ça apporte une vraie valeur ajoutée pour garantir l’homogénéité des commits au sein d’une équipe ou d’une entreprise.

Les prochains articles couvriront entre autres la méthode d’entraînement sélectionnée, la construction des jeux de données d’entraînement et de validation, les résultats des modèles avant puis après entraînement, les pistes d’optimisation et la comparaison avec les LLMs. Je ne prétends pas à une rigueur scientifique complète et ne compte pas produire une solution ready for production : il s’agit avant tout d’un proof of concept permettant d’apprécier le potentiel des SLMs dans un workflow de développement logiciel.

Un indice pour patienter : le meilleur score de ce projet n’est pas allé au plus gros modèle testé.

TL;DR

  • Sortir un LLM généraliste pour écrire un message de commit, c’est casser un œuf avec un missile balistique : un modèle de moins d’un milliard de paramètres suffit, à condition de le spécialiser.
  • On n’entraîne jamais depuis zéro : on gèle les poids d’un modèle pré-entraîné et on lui greffe un adaptateur LoRA de quelques mégaoctets.
  • Six concurrents au programme, de SmolLM2-135M à Qwen 3.5-4B, avec Claude Opus 5 en instrument de mesure et surtout pas en professeur.
  • Tout tourne sur un PC de 2016 avec une RTX 2060 Super : ce sont les 8 Go de mémoire vidéo, et rien d’autre, qui fixent le plafond.
  • L’objectif est un générateur et un validateur de messages de commit, pas une IA générale, et le meilleur score du projet n’ira pas au plus gros modèle.