Quand on déploie un assistant IA local chez une PME, le choix du modèle conditionne tout : la qualité des réponses que verront les utilisateurs, la mémoire GPU nécessaire, la vitesse d'inférence, et les obligations juridiques vis-à-vis du client. Ce n'est pas un choix qu'on peut déléguer aux benchmarks académiques : HumanEval et MMLU ne mesurent pas la capacité d'un modèle à rédiger une réponse à un client mécontent ou à analyser une clause contractuelle ambiguë.

Nous avons donc monté notre propre protocole de test et comparé 6 modèles sur des tâches tirées du quotidien d'une PME. Voici ce que nous avons trouvé, et pourquoi le résultat nous a surpris.

Les critères qui comptent pour une PME

Avant de lancer les tests, nous avons fixé nos contraintes. Ce que nous cherchions :

  • Licence Apache 2.0 irrévocable. Une fois un modèle Apache 2.0 publié, son éditeur ne peut plus modifier les conditions pour cette version. Un client déployé aujourd'hui a une garantie juridique permanente. Les licences propriétaires ou "Community License" exposent à des révocations futures, ce qui, pour un déploiement on-premise chez un client, est inacceptable.
  • Tenir sur le tier d'entrée de gamme. Notre configuration TPE embarque 32GB de VRAM. Le modèle doit s'y charger entièrement et laisser suffisamment de mémoire pour les conversations simultanées.
  • Un modèle de référence à recommander. Le client reste libre de son choix, mais disposer d'un modèle bien qualifié sur l'ensemble de la gamme hardware simplifie nos déploiements et nos tests. C'est aussi un repère clair pour comparer les tiers : même qualité de réponse, vitesse et capacité de charge différentes.

Les 6 modèles testés

Modèle Taille Architecture Params actifs Licence
mistral-nemo 7.1 GB Dense 12B 12B Apache 2.0
mistral-small3.1 15 GB Dense 24B 24B MRL (révocable)
qwen3:14b 9.3 GB Dense 14B 14B Apache 2.0
qwen3:32b 20 GB Dense 32B 32B Apache 2.0
gemma4:12b 7.6 GB Dense 4.5B (modèle E4B) 4.5B Apache 2.0
gemma4:26b 17 GB MoE (3.8B actifs) 3.8B Apache 2.0

Les tests ont été conduits sur CPU (Intel Raptor Lake-P, 32GB RAM), ce qui amplifie les écarts de vitesse mais permet de comparer la qualité dans des conditions identiques pour tous les modèles. Sur GPU en production, les vitesses sont significativement supérieures.

La méthodologie : 4 prompts PME, pas des benchmarks académiques

Nous avons rédigé 4 prompts représentatifs des tâches qu'un assistant IA rencontre chez une PME.

Prompt A : Email client mécontent. Un responsable de parc informatique doit répondre à un client dont l'imprimante réseau est en panne depuis 48h et qui menace de résilier son contrat. Le modèle doit trouver le bon ton : ferme mais empathique, avec un engagement calendaire précis et un geste commercial approprié. Trop servile, c'est suspect. Trop technique, ça aggrave.

Prompt B : Cas RH. Un salarié avec 6 ans d'ancienneté cumule des retards chroniques. L'entretien informel n'a rien changé. Que faire ? Ce prompt teste la maîtrise de la procédure disciplinaire française : l'ordre des étapes compte légalement, une erreur expose l'entreprise.

Prompt C : Analyse de contrat. Trois clauses d'un contrat de prestation doivent être analysées pour risque. Le modèle doit identifier les pièges et proposer des reformulations équilibrées, pas juste pointer des problèmes sans solution.

Prompt D : Génération de code. Un script Python qui lit un CSV de clients et génère un rapport HTML mensuel, sans dépendance externe. Ce qui distingue une bonne réponse d'une mauvaise : la gestion des cas dégénérés, la lisibilité, et la cohérence entre le code et les spécifications.

Notre grille d'évaluation

Pour chaque prompt, nous avons évalué les réponses selon quatre critères, notés de 1 à 5. Chaque modèle a été lu indépendamment par deux personnes, les désaccords tranchés en relecture commune.

Critère Ce qu'on mesure Poids
Exactitude Absence d'erreurs factuelles, juridiques ou techniques 40 %
Exhaustivité Couverture des points clés du prompt, sans omission importante 30 %
Clarté Structure, lisibilité, utilisabilité directe sans reformulation 20 %
Hallucinations Identifiants, articles de loi ou références inexistants inventés 10 %

Résultats : gemma4:26b premier sur tout

Le classement général est sans ambiguïté.

Rang Modèle Vitesse CPU A : Email B : RH C : Contrat D : Code
1 gemma4:26b 1er 1er 1er 1er 1er
2 gemma4:12b 4e 3e 2e 2e 2e
3 qwen3:32b 6e 2e 4e 3e 3e
4 qwen3:14b 3e 4e 3e 4e 4e
5 mistral-small3.1 5e 5e 5e 5e 5e
6 mistral-nemo 2e 6e 6e 6e 6e

gemma4:26b est non seulement le meilleur en qualité sur les 4 prompts, mais aussi le plus rapide en inférence CPU. Ce résultat contre-intuitif s'explique par son architecture.

Pourquoi un modèle de 17 Go tourne plus vite qu'un de 7 Go

gemma4:26b utilise une architecture appelée Mixture-of-Experts (MoE). L'idée est simple : plutôt qu'un seul réseau de neurones monolithique qui traite chaque token, le modèle est découpé en plusieurs "experts" spécialisés. À chaque token généré, un mécanisme de routage sélectionne automatiquement les 2 ou 3 experts les plus pertinents parmi la vingtaine disponibles. Les autres restent inactifs.

En pratique : gemma4:26b contient 25.2 milliards de paramètres au total, mais seulement 3.8 milliards sont activés à chaque token. Le modèle charge 17 Go en mémoire (tous les experts doivent être disponibles), mais ne calcule que l'équivalent d'un modèle de 4B à l'inférence.

mistral-nemo, lui, est un modèle "dense" : ses 12 milliards de paramètres travaillent tous à chaque token. gemma4:26b n'en active que 3.8. C'est pourquoi, malgré un fichier 2.5× plus lourd, il tourne plus vite sur CPU, et a fortiori sur GPU, où la bande passante mémoire est le facteur limitant.

Ce n'est pas qu'une curiosité technique. C'est ce qui permet à gemma4:26b de tenir sur 32 Go de VRAM (notre tier TPE) tout en offrant une qualité de réponse proche d'un modèle dense de 25B.

Quelques résultats qui illustrent les écarts de qualité

Les chiffres résument, mais quelques exemples concrets montrent mieux ce qui distingue les modèles.

Sur le cas RH (Prompt B), gemma4:26b est le seul modèle à mentionner spontanément que les "discussions informelles" ne comptent pas juridiquement comme avertissements, une nuance critique pour une PME qui penserait avoir déjà averti le salarié. Il calcule également le coût de remplacement versus le coût d'une gestion disciplinaire, ce qu'aucun autre modèle n'a fait.

Contre-exemple : mistral-small3.1 passe directement à la convocation en entretien préalable au licenciement sans gradation des sanctions préalable : pour des retards répétés sans faute grave caractérisée, les juges attendent une progressivité dans les sanctions, faute de quoi la requalification en licenciement sans cause réelle et sérieuse est probable. Le modèle ignore également les 6 ans d'ancienneté du salarié. qwen3:14b qualifie pour sa part les retards répétés de "faute lourde", notion juridique qui implique une intention de nuire, inapplicable ici.

Sur l'analyse de contrat (Prompt C), gemma4:26b est le seul à identifier explicitement que "responsabilité de plein droit" signifie une responsabilité sans faute prouvée, notion précise qui change radicalement le niveau de risque d'une clause. Il détecte également un problème d'enrichissement injustifié dans un article que les autres modèles ont ignoré.

Contre-exemple : mistral-nemo classe la cession des outils et méthodes au client (article 8) comme un risque "Faible". C'est en réalité l'une des clauses les plus dangereuses d'un contrat de prestation : elle peut entraîner la perte de propriété intellectuelle sur les méthodes de travail du prestataire. Ce type d'erreur est indétectable pour un non-juriste : c'est exactement le scénario où un assistant IA mal choisi fait plus de mal que bien.

Sur la génération de code (Prompt D), mistral-nemo refuse d'écrire le code. Le modèle répond avec une description textuelle de ce qu'il faudrait faire et recommande d'utiliser pandas, alors que le prompt impose explicitement "sans dépendance externe". Sur un outil destiné à des utilisateurs non-développeurs, c'est rédhibitoire.

La question qu'on nous pose : "Gemma, c'est Google : ça ne casse pas la souveraineté ?"

C'est une objection légitime, et elle mérite une réponse précise.

Gemma 4 est un modèle open-source publié par Google DeepMind sous licence Apache 2.0. Une fois les poids téléchargés et déployés dans votre infrastructure, Google n'a aucun accès à vos conversations.

Utiliser ChatGPT, c'est taper vos documents dans Google Docs : l'éditeur voit tout. Gemma chez vous, c'est Word sur votre PC : Microsoft ne lit pas vos fichiers.

La provenance du modèle ne détermine pas la souveraineté des données. Ce qui compte, c'est où tourne le modèle et qui y a accès. Un modèle Google déployé dans vos locaux est souverain. Un modèle "européen" exposé via une API cloud ne l'est pas.

Par ailleurs, la licence Apache 2.0 comporte une garantie supplémentaire : une fois publiée, elle est irrévocable. Google ne peut pas revenir en arrière sur cette version du modèle. C'est une protection juridique concrète pour un déploiement long terme.

Un modèle validé sur toute la gamme

Un résultat qui nous a particulièrement satisfaits : gemma4:26b (17 Go en Q4) tient sur l'ensemble de notre gamme hardware, de la configuration d'entrée de gamme à 32 Go de VRAM jusqu'aux configurations haute capacité à 96 et 192 Go. Ce n'était pas acquis d'avance : un modèle de cette qualité aurait pu nécessiter des configurations plus larges pour tenir correctement.

En pratique, cela simplifie nos déploiements : un seul modèle à qualifier, à mettre à jour, à documenter. Et pour le client, le message est simple : la qualité des réponses ne dépend pas de la configuration choisie. Ce qui évolue entre les tiers, c'est le nombre d'utilisateurs servis simultanément et la vitesse de réponse.

C'est notre recommandation de base. Nos clients restent libres de déployer un autre modèle selon leurs besoins spécifiques : la stack accepte tout modèle au format GGUF ou HuggingFace, sous réserve qu'il rentre dans la VRAM disponible.

Ce que nous avons appris sur le code généré par les LLM

Nous avons également conduit un second benchmark focalisé sur la génération de code : 6 prompts en Python, SQL, Bash, JavaScript et TypeScript, incluant un exercice de débogage. Le résultat confirme une limite commune à tous les LLM actuels.

gemma4:26b produit une architecture solide, une logique correcte, des gestions d'erreurs appropriées. Mais sur chaque prompt, on trouve au moins un identifiant halluciné : un nom de variable, de méthode ou d'exception qui n'existe pas dans l'API réelle. Ce type d'erreur passe silencieusement jusqu'au premier lancement du code.

Exemple concret : sur un prompt Python de client HTTP avec retry exponentiel, le modèle génère une exception nommée ERPSynclementError. L'architecture du code est impeccable, sauf que cette exception n'existe dans aucune bibliothèque. Le code ne tourne pas tel quel.

Ce n'est pas une critique spécifique à Gemma : c'est une limite actuelle de tous les LLM sur la génération de code. L'IA suggère, le développeur valide. Pour les clients qui utilisent l'assistant pour des tâches de code, cela doit être dit explicitement lors de l'onboarding.

Pour les PME avec une équipe de développement, nous évaluons également Qwen2.5-Coder, un modèle Apache 2.0 spécialisé sur 92 langages de programmation, qui surpasse Gemma sur les benchmarks code publics. Les tests sur GPU réel sont prévus dans les prochains jours.

Ce que nous écartons, et pourquoi

mistral-nemo : rapide sur les tâches simples, insuffisant dès qu'une tâche exige du raisonnement. Le refus de générer du code et les erreurs d'analyse contractuelle le rendent inadapté à un usage PME généraliste.

mistral-small3.1 : licence MRL, révocable par Mistral à tout moment pour cette version. Les erreurs d'appréciation sur le prompt RH (saut direct au licenciement sans gradation des sanctions) posent un problème de fiabilité sur des tâches à fort enjeu.

Mistral Small 4 et Mistral Medium 3.5 : d'excellents modèles, mais leur hardware minimum officiel est 4× H100. Incompatibles avec une installation on-premise chez une PME.

Notre recommandation

Ce retour d'expérience n'est pas un benchmark au sens scientifique du terme : c'est le compte-rendu d'un choix opérationnel, documenté avec le plus de rigueur possible dans nos contraintes. Les résultats reflètent nos cas d'usage spécifiques, sur notre matériel de test, à un instant donné. D'autres contextes pourraient mener à d'autres conclusions.

Sur la base de ces tests, notre modèle de référence est gemma4:26b (Q4) : meilleure qualité sur les 4 prompts métier, le plus rapide malgré sa taille grâce à l'architecture MoE, compatible avec l'ensemble de notre gamme hardware, sous licence Apache 2.0 irrévocable. Nos clients restent libres de déployer un autre modèle selon leurs besoins.

Nous prévoyons de reproduire cette évaluation à chaque génération de modèles significative. Le paysage des LLM open-source évolue vite, la recommandation d'aujourd'hui ne sera pas forcément celle de l'année prochaine. C'est pour ça que nous maintenons notre propre protocole de test plutôt que de nous fier uniquement aux classements académiques.

Si vous voulez savoir quel modèle correspond à votre situation, nous faisons ce point gratuitement lors d'un premier échange.

Annexe : les prompts et extraits de réponses

Voici les 4 prompts utilisés, ainsi que des extraits des meilleures et moins bonnes réponses sur les cas les plus illustratifs.

Prompt A : Email client mécontent

Un client envoie cet email à la direction : "Bonjour, je suis absolument furieux. Votre technicien est venu il y a 3 semaines et depuis mon imprimante réseau ne fonctionne plus. J'ai appelé 4 fois votre support, j'ai laissé des messages, personne ne m'a rappelé. Ça commence à me coûter de l'argent car mes équipes impriment chez le voisin. Si ça continue je résilie le contrat et je vous fais une mauvaise note sur Google. Cordialement, M. Renard, Gérant Boucherie Renard."

Tu es l'assistant de direction de l'entreprise. Rédige une réponse email professionnelle qui reconnaît le problème et s'excuse sincèrement, prend en charge le dossier avec un engagement concret (délai de rappel, intervention), propose un geste commercial adapté, préserve la relation client sans être servile. Réponds directement avec l'email, sans explication autour.

Prompt B : Cas RH

Tu es l'assistant RH d'une PME française de 38 salariés. Un manager te soumet la situation suivante : "Jean-Pierre, opérateur de ligne depuis 6 ans, arrive en retard 2 à 3 fois par semaine depuis 2 mois. J'ai eu deux entretiens informels avec lui, il promet de faire des efforts mais rien ne change. Il est par ailleurs compétent et apprécié de l'équipe. Que dois-je faire ?"

Analyse la situation et réponds avec : 1. Les étapes procédurales à suivre selon le droit du travail français (dans l'ordre), 2. Les risques pour l'entreprise à chaque étape, 3. Une recommandation concrète avec justification, en tenant compte de l'ancienneté et du profil du salarié.

Extrait gemma4:26b :

"Il est crucial de passer de l'informel au formel. En droit français, les paroles s'envolent, seuls les écrits comptent en cas de contentieux. [...] L'entretien 'vérité' : le manager convoque Jean-Pierre. L'objectif n'est pas seulement de reprocher les retards, mais de comprendre la cause (problème de garde d'enfant ? problème de transport ? fatigue liée à un changement de rythme ?). [...] Le coût du remplacement (recrutement + formation + perte de productivité) est bien supérieur au coût de la gestion de ce problème."

Extrait mistral-nemo :

"Si les retards persistent, convocation du salarié à un entretien préalable à une sanction (avertissement ou sanction plus lourde) dans lequel il sera informé de la possibilité de licenciement pour faute répétés. [...] Il peut être opportun de proposer des mesures alternatives telles que des horaires aménagés ou des astreintes pour permettre au salarié de mieux gérer son temps."

Proposer des astreintes pour régler des retards chroniques est hors sujet. Le modèle saute par ailleurs directement à l'entretien préalable au licenciement sans gradation des sanctions : pour ce type de faits, l'absence d'avertissements documentés affaiblit considérablement la justification aux yeux du juge.

Prompt C : Analyse de contrat

Voici un extrait d'un contrat de prestation de services informatiques. Identifie les risques pour le prestataire et propose des reformulations équilibrées.

Article 7 : Responsabilité : "Le prestataire est responsable de plein droit de tout dommage direct ou indirect causé au client dans le cadre de l'exécution du présent contrat. En cas de manquement, le prestataire s'engage à indemniser le client à hauteur du préjudice réel subi, sans limitation de montant."

Article 8 : PI : "Toutes les créations réalisées par le prestataire dans le cadre du présent contrat deviennent la propriété exclusive du client dès leur livraison, y compris les outils, méthodes et librairies utilisés pour leur développement."

Article 9 : Sous-traitance : "Le prestataire ne peut recourir à la sous-traitance sans accord écrit préalable du client. En cas de sous-traitance non autorisée, le contrat sera résilié de plein droit et le prestataire devra restituer l'intégralité des sommes perçues."

Extrait gemma4:26b, Article 8 :

"Niveau de risque : Élevé. Perte du savoir-faire : En cédant la propriété des outils, méthodes et librairies, vous cédez votre propre patrimoine intellectuel (votre know-how). Vous pourriez vous retrouver légalement interdit d'utiliser vos propres outils pour de futurs clients."

Extrait mistral-nemo, Article 8 :

"Niveau de risque : Faible. Les créations réalisées par le prestataire deviennent la propriété exclusive du client dès leur livraison. Cela peut limiter les possibilités pour le prestataire d'exploiter ou de réutiliser ses propres créations."

Classer la cession des outils et méthodes en risque "Faible" est une erreur grave. C'est l'une des clauses les plus dangereuses d'un contrat de prestation : elle peut légalement interdire au prestataire de réutiliser ses propres méthodes de travail pour d'autres clients.

Prompt D : Génération de code Python

Écris un script Python complet et fonctionnel qui lit un fichier CSV "clients.csv" (colonnes : nom, email, secteur, chiffre_affaires_annuel), calcule des statistiques par secteur, identifie les 5 meilleurs clients, et génère un fichier "rapport.html" autonome (CSS inline, sans dépendance externe) incluant la date de génération, les 5 meilleurs clients et les statistiques par secteur. Gère proprement les cas d'erreur : fichier manquant, colonnes absentes, valeurs non numériques.

gemma4:26b a fourni un code structuré en classe avec gestion d'erreurs ligne par ligne. mistral-nemo a refusé d'écrire le code et a recommandé d'utiliser la bibliothèque pandas, alors que le prompt imposait explicitement l'absence de dépendance externe.