{"id":1246,"date":"2026-10-27T19:29:58","date_gmt":"2026-10-27T18:29:58","guid":{"rendered":"https:\/\/remivernier.com\/?p=1246"},"modified":"2026-10-27T21:54:41","modified_gmt":"2026-10-27T20:54:41","slug":"qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion","status":"publish","type":"post","link":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/","title":{"rendered":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion"},"content":{"rendered":"<p>Les mod\u00e8les locaux r\u00e9cents activent souvent la r\u00e9flexion par d\u00e9faut. Nous allons voir ce qu&rsquo;elle apporte, sur un Mac mini M4 32 Go, quand on confie \u00e0 un mod\u00e8le un diagnostic Kerberos ou l&rsquo;extraction d&rsquo;un \u00e9v\u00e9nement du journal de s\u00e9curit\u00e9. Sur nos essais, la r\u00e9flexion multiplie le temps de r\u00e9ponse par 4 \u00e0 7. Sur le diagnostic, elle n&rsquo;am\u00e9liore nettement la r\u00e9ponse que pour l&rsquo;un des deux mod\u00e8les. Et pour l&rsquo;extraction JSON, les vrais probl\u00e8mes viennent d&rsquo;ailleurs: de la fa\u00e7on dont le contenu est rang\u00e9 dans la r\u00e9ponse de l&rsquo;API.<\/p>\n<p>Les deux mod\u00e8les test\u00e9s sont des MoE qui tiennent dans 32 Go de m\u00e9moire unifi\u00e9e: Qwen 3.6 35B-A3B et Gemma 4 26B-A4B.<\/p>\n<h2>Les deux mod\u00e8les et leur taille r\u00e9elle<\/h2>\n<p>Qwen 3.6 35B-A3B est sorti en avril 2026. D&rsquo;apr\u00e8s sa fiche, c&rsquo;est un mod\u00e8le de 35B param\u00e8tres au total dont 3B activ\u00e9s, et les mod\u00e8les Qwen3.6 fonctionnent par d\u00e9faut en mode r\u00e9flexion. Gemma 4 26B-A4B est la variante MoE de la famille Gemma 4: 25,2B param\u00e8tres au total, 3,8B actifs, avec 8 experts actifs sur 128, plus un expert partag\u00e9.<\/p>\n<p>Sur la maquette, les deux mod\u00e8les sont charg\u00e9s en MLX, quantifi\u00e9s en 4 bits:<\/p>\n<ul>\n<li>qwen\/qwen3.6-35b-a3b: 20.4 Go de poids, contexte charg\u00e9 8192 tokens (d\u00e9j\u00e0 en m\u00e9moire au moment du labo);<\/li>\n<li>google\/gemma-4-26b-a4b-qat: 15.6 Go de poids (version QAT, entra\u00een\u00e9e en tenant compte de la quantification), contexte charg\u00e9 8192 tokens, chargement mesur\u00e9: 15.5 s.<\/li>\n<\/ul>\n<p>Les deux ensemble p\u00e8sent 36 Go: il n&rsquo;est donc pas question de les garder charg\u00e9s en m\u00eame temps sur une machine de 32 Go. Avec 20.4 Go de poids, Qwen laisse aussi assez peu de marge pour le contexte. Ce point a son importance, car la fiche Qwen recommande de garder un contexte d&rsquo;au moins 128K tokens pour pr\u00e9server les capacit\u00e9s de r\u00e9flexion. Avec nos 8192 tokens, nous sommes tr\u00e8s loin de cette recommandation.<\/p>\n<h2>Protocole<\/h2>\n<p>Le labo a \u00e9t\u00e9 ex\u00e9cut\u00e9 automatiquement le 27 octobre 2026 sur le Mac mini M4 32 Go, via l&rsquo;API locale de LM Studio (moteur mlx-llm-mac-arm64-apple-metal-advsimd 1.13.1). Chaque essai commence par un appel de chauffe, non compt\u00e9. Les mesures sont la m\u00e9diane des r\u00e9p\u00e9titions suivantes. La m\u00e9thode est la m\u00eame que celle d\u00e9crite dans l&rsquo;article <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/mlx-gguf-lm-studio-mac-mini-m4-methode-comparaison\/\">MLX ou GGUF dans LM Studio sur Mac mini M4<\/a>.<\/p>\n<p>Deux t\u00e2ches:<\/p>\n<ol>\n<li>Un diagnostic Kerberos. Un utilisateur prend une erreur 401 sur https:\/\/intranet.corp.local. IIS tourne sous CORP\\svc-intranet et journalise <code>KRB_AP_ERR_MODIFIED<\/code>. C\u00f4t\u00e9 contr\u00f4leur de domaine, un 4769 passe en succ\u00e8s avec le type de chiffrement 0x12 (AES256). Un coll\u00e8gue a r\u00e9initialis\u00e9 le mot de passe de svc-intranet et cr\u00e9\u00e9 un compte svc-intranet-test qui porte le m\u00eame SPN <code>HTTP\/intranet.corp.local<\/code>. Nous demandons la cause, les commandes setspn et PowerShell, et les risques, en 3 parties et 250 mots maximum. Temp\u00e9rature 0.2. R\u00e9flexion on: max_tokens 3500, 1 r\u00e9p\u00e9tition. R\u00e9flexion off: max_tokens 1200, 2 r\u00e9p\u00e9titions.<\/li>\n<li>Une extraction JSON contrainte depuis un \u00e9v\u00e9nement 4625 (\u00e9chec NTLM de m.durand depuis WKS-0457, statut 0xC000006D, sous-statut 0xC000006A). Le sch\u00e9ma JSON est pass\u00e9 par l&rsquo;API: il n&rsquo;appara\u00eet pas dans le prompt, mais les deux mod\u00e8les produisent exactement les m\u00eames cl\u00e9s. Temp\u00e9rature 0, max_tokens 800, 2 r\u00e9p\u00e9titions. La r\u00e9flexion n&rsquo;a pas \u00e9t\u00e9 d\u00e9sactiv\u00e9e sur cette t\u00e2che: avec un sch\u00e9ma JSON impos\u00e9, l&rsquo;appel passe par l&rsquo;API compatible OpenAI de LM Studio, sur laquelle notre labo n&rsquo;applique pas ce r\u00e9glage. Les deux mod\u00e8les tournaient donc avec leur r\u00e9glage par d\u00e9faut, r\u00e9flexion active.<\/li>\n<\/ol>\n<p>Nous ne comparons donc r\u00e9flexion on et off que sur le diagnostic.<\/p>\n<h2>R\u00e9sultats<\/h2>\n<table>\n<thead>\n<tr>\n<th>Essai<\/th>\n<th>Mod\u00e8le<\/th>\n<th>R\u00e9flexion<\/th>\n<th>max_tokens<\/th>\n<th>Sortie (dont r\u00e9flexion)<\/th>\n<th>Vitesse<\/th>\n<th>1er token<\/th>\n<th>Dur\u00e9e totale<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>e1 Kerberos<\/td>\n<td>Qwen 3.6<\/td>\n<td>on<\/td>\n<td>3500<\/td>\n<td>3499 (3347)<\/td>\n<td>37.4 tok\/s<\/td>\n<td>0.69 s<\/td>\n<td>92.6 s<\/td>\n<\/tr>\n<tr>\n<td>e2 Kerberos<\/td>\n<td>Qwen 3.6<\/td>\n<td>off<\/td>\n<td>1200<\/td>\n<td>502 (0)<\/td>\n<td>39.2 tok\/s<\/td>\n<td>0.69 s<\/td>\n<td>13.5 s<\/td>\n<\/tr>\n<tr>\n<td>e3 Kerberos<\/td>\n<td>Gemma 4<\/td>\n<td>on<\/td>\n<td>3500<\/td>\n<td>1667 (1276)<\/td>\n<td>29 tok\/s<\/td>\n<td>0.65 s<\/td>\n<td>58.1 s<\/td>\n<\/tr>\n<tr>\n<td>e4 Kerberos<\/td>\n<td>Gemma 4<\/td>\n<td>off<\/td>\n<td>1200<\/td>\n<td>448 (0)<\/td>\n<td>29.6 tok\/s<\/td>\n<td>0.08 s<\/td>\n<td>15.6 s<\/td>\n<\/tr>\n<tr>\n<td>e5 JSON 4625<\/td>\n<td>Qwen 3.6<\/td>\n<td>d\u00e9faut (on)<\/td>\n<td>800<\/td>\n<td>149 (148)<\/td>\n<td>39.1 tok\/s<\/td>\n<td>0.76 s<\/td>\n<td>4.6 s<\/td>\n<\/tr>\n<tr>\n<td>e6 JSON 4625<\/td>\n<td>Gemma 4<\/td>\n<td>d\u00e9faut (on)<\/td>\n<td>800<\/td>\n<td>126 (0)<\/td>\n<td>30 tok\/s<\/td>\n<td>0.08 s<\/td>\n<td>4.8 s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Quatre choses ressortent de ce tableau.<\/p>\n<p>-> La vitesse de g\u00e9n\u00e9ration ne d\u00e9pend presque pas de la r\u00e9flexion: 37.4 contre 39.2 tok\/s pour Qwen, 29 contre 29.6 pour Gemma. La r\u00e9flexion ne ralentit pas la g\u00e9n\u00e9ration, elle ajoute simplement des tokens \u00e0 produire. Toute la diff\u00e9rence de dur\u00e9e vient donc du volume.<\/p>\n<p>-> Qwen est plus rapide que Gemma (environ 37 \u00e0 39 tok\/s contre 29 \u00e0 30), alors que ses poids sont plus lourds (20.4 Go contre 15.6 Go). Cela va \u00e0 l&rsquo;encontre de l&rsquo;intuition \u00ab plus gros fichier, plus lent \u00bb. En revanche, c&rsquo;est coh\u00e9rent avec le nombre de param\u00e8tres actifs par token: 3B pour Qwen, 3,8B pour Gemma.<\/p>\n<p>-> Le temps jusqu&rsquo;au premier token est trompeur d\u00e8s que la r\u00e9flexion est activ\u00e9e. Les 0.69 s de Qwen en mode on correspondent au premier token de r\u00e9flexion, pas au premier mot de la r\u00e9ponse. En divisant les tokens de r\u00e9flexion par la vitesse, nous obtenons un ordre de grandeur (calcul\u00e9, non mesur\u00e9) du d\u00e9lai avant le premier token utile: environ 90 s pour Qwen (3347 \/ 37.4) et 44 s pour Gemma (1276 \/ 29).<\/p>\n<p>-> Gemma r\u00e9pond en 0.08 s au premier token en mode off, contre 0.65 s en mode on et 0.69 \u00e0 0.76 s pour Qwen dans tous les cas. Le prompt est identique d&rsquo;une r\u00e9p\u00e9tition \u00e0 l&rsquo;autre, donc la r\u00e9utilisation du cache de prompt est une explication plausible c\u00f4t\u00e9 Gemma. Pourquoi Qwen n&rsquo;en profiterait pas, je ne sais pas le dire avec certitude \u00e0 partir de ces seules mesures.<\/p>\n<figure class=\"wp-block-image\">\n<svg viewBox=\"0 0 720 300\" width=\"100%\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" font-family=\"sans-serif\" font-size=\"13\">\n<defs>\n<marker id=\"fl\" markerWidth=\"10\" markerHeight=\"10\" refX=\"9\" refY=\"5\" orient=\"auto\"><path d=\"M0,0 L10,5 L0,10 z\" fill=\"#333\"\/><\/marker>\n<\/defs>\n<text x=\"10\" y=\"24\" font-size=\"14\" fill=\"#333\">Tokens g\u00e9n\u00e9r\u00e9s sur le diagnostic Kerberos<\/text>\n<text x=\"10\" y=\"62\" fill=\"#333\">Qwen 3.6, r\u00e9flexion on<\/text>\n<rect x=\"180\" y=\"45\" width=\"497\" height=\"26\" fill=\"#fdf3e1\" stroke=\"#333\"\/>\n<rect x=\"677\" y=\"45\" width=\"23\" height=\"26\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"190\" y=\"63\" fill=\"#333\">3347 r\u00e9flexion<\/text>\n<text x=\"10\" y=\"112\" fill=\"#333\">Gemma 4, r\u00e9flexion on<\/text>\n<rect x=\"180\" y=\"95\" width=\"190\" height=\"26\" fill=\"#fdf3e1\" stroke=\"#333\"\/>\n<rect x=\"370\" y=\"95\" width=\"58\" height=\"26\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"190\" y=\"113\" fill=\"#333\">1276 r\u00e9flexion<\/text>\n<text x=\"436\" y=\"113\" fill=\"#333\">391 r\u00e9ponse<\/text>\n<text x=\"10\" y=\"162\" fill=\"#333\">Qwen 3.6, r\u00e9flexion off<\/text>\n<rect x=\"180\" y=\"145\" width=\"75\" height=\"26\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"263\" y=\"163\" fill=\"#333\">502 r\u00e9ponse<\/text>\n<text x=\"10\" y=\"212\" fill=\"#333\">Gemma 4, r\u00e9flexion off<\/text>\n<rect x=\"180\" y=\"195\" width=\"67\" height=\"26\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"255\" y=\"213\" fill=\"#333\">448 r\u00e9ponse<\/text>\n<line x1=\"700\" y1=\"38\" x2=\"700\" y2=\"230\" stroke=\"#333\" stroke-dasharray=\"4,3\"\/>\n<text x=\"520\" y=\"262\" fill=\"#333\">max_tokens = 3500<\/text>\n<line x1=\"640\" y1=\"252\" x2=\"696\" y2=\"80\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"560\" y=\"140\" fill=\"#333\">152 r\u00e9ponse,<\/text>\n<text x=\"560\" y=\"156\" fill=\"#333\">tronqu\u00e9e<\/text>\n<rect x=\"180\" y=\"270\" width=\"16\" height=\"12\" fill=\"#fdf3e1\" stroke=\"#333\"\/>\n<text x=\"202\" y=\"281\" fill=\"#333\">r\u00e9flexion<\/text>\n<rect x=\"290\" y=\"270\" width=\"16\" height=\"12\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"312\" y=\"281\" fill=\"#333\">r\u00e9ponse visible<\/text>\n<\/svg><figcaption>R\u00e9partition des tokens de sortie: Qwen consomme presque tout le budget en r\u00e9flexion.<\/figcaption><\/figure>\n<h2>Qwen en mode r\u00e9flexion bute sur max_tokens<\/h2>\n<p>L&rsquo;essai e1 est le r\u00e9sultat le plus instructif du labo. Qwen produit 3499 tokens pour un plafond de 3500. 3347 d&rsquo;entre eux (96 %) partent dans la r\u00e9flexion, ce qui laisse 152 tokens pour une r\u00e9ponse limit\u00e9e \u00e0 250 mots. La g\u00e9n\u00e9ration s&rsquo;arr\u00eate au milieu de la deuxi\u00e8me partie:<\/p>\n<pre class=\"wp-block-code\"><code>**Partie 2 : V\u00e9rification &amp; Correction**\nV\u00e9rifiez les SPN avec :<\/code><\/pre>\n<p>Apr\u00e8s 92.6 secondes d&rsquo;attente, nous n&rsquo;avons donc aucune commande. Gemma s&rsquo;en sort mieux avec le m\u00eame plafond: 1276 tokens de r\u00e9flexion (77 % de la sortie) et une r\u00e9ponse compl\u00e8te en 58.1 s. Le rapport on\/off est de 6.9 en dur\u00e9e pour Qwen (92.6 \/ 13.5) et de 3.7 pour Gemma (58.1 \/ 15.6).<\/p>\n<p>Sur un poste interactif, 3500 tokens paraissent d\u00e9j\u00e0 g\u00e9n\u00e9reux pour une r\u00e9ponse de 250 mots. Avec Qwen 3.6, ce n&rsquo;est pas le cas. Un plafond trop bas en mode r\u00e9flexion ne donne pas une r\u00e9ponse plus courte: il donne une r\u00e9ponse coup\u00e9e, ou vide.<\/p>\n<h2>Lecture de la qualit\u00e9 des r\u00e9ponses<\/h2>\n<p>Rappelons d&rsquo;abord la bonne lecture du cas. Le 4769 en succ\u00e8s montre que le KDC a bien d\u00e9livr\u00e9 un ticket pour <code>HTTP\/intranet.corp.local<\/code>. Avec un SPN en double, ce ticket peut \u00eatre chiffr\u00e9 avec la cl\u00e9 de svc-intranet-test, alors que IIS cherche \u00e0 le d\u00e9chiffrer avec celle de svc-intranet. D&rsquo;o\u00f9 <code>KRB_AP_ERR_MODIFIED<\/code>. En pratique, cette erreur se lit d&rsquo;ailleurs en g\u00e9n\u00e9ral c\u00f4t\u00e9 client, dans le journal Syst\u00e8me. La r\u00e9initialisation du mot de passe n&rsquo;est pas la cause en soi. Pour v\u00e9rifier, nous recherchons les doublons et nous comparons le num\u00e9ro de version de cl\u00e9 (kvno) du ticket pr\u00e9sent dans le cache du client avec l&rsquo;attribut <code>msDS-KeyVersionNumber<\/code> des deux comptes. Cette m\u00e9thode est d\u00e9taill\u00e9e dans <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/kerberos-lire-ticket-service-klist-wireshark-tgs-req-pac\/\">Kerberos: lire un ticket de service avec klist et Wireshark<\/a>.<\/p>\n<pre class=\"wp-block-code\"><code>setspn -Q HTTP\/intranet.corp.local\nsetspn -X\nklist get HTTP\/intranet.corp.local\nGet-ADUser svc-intranet -Properties msDS-KeyVersionNumber,ServicePrincipalName\nGet-ADUser svc-intranet-test -Properties msDS-KeyVersionNumber,ServicePrincipalName\nsetspn -D HTTP\/intranet.corp.local CORP\\svc-intranet-test<\/code><\/pre>\n<p>Comparons maintenant les quatre r\u00e9ponses avec cette lecture.<\/p>\n<p>Gemma, r\u00e9flexion on (e3): c&rsquo;est la meilleure r\u00e9ponse du lot. La cause est juste (doublon de SPN, ambigu\u00eft\u00e9 sur le compte qui doit d\u00e9chiffrer). Les commandes sont les bonnes: <code>setspn -Q<\/code>, un <code>Get-ADObject<\/code> filtr\u00e9 sur <code>ServicePrincipalName<\/code>, puis <code>setspn -D<\/code> sur le compte de test. Gemma signale aussi le vrai risque (retirer le SPN du mauvais compte) et pense au <code>klist purge<\/code> sur les postes.<\/p>\n<p>Gemma, r\u00e9flexion off (e4): les commandes sont les m\u00eames, l&rsquo;analyse un peu plus floue (\u00ab le contr\u00f4leur de domaine ne peut pas garantir l&rsquo;identit\u00e9 unique du service \u00bb), mais l&rsquo;id\u00e9e que le KDC peut choisir le mauvais compte est bien l\u00e0. Le gain apport\u00e9 par la r\u00e9flexion est r\u00e9el mais faible, pour 42 secondes de plus.<\/p>\n<p>Qwen, r\u00e9flexion off (e2): c&rsquo;est la r\u00e9ponse la plus fragile. Le mod\u00e8le invente une \u00ab collision de hachage \u00bb. Il propose <code>Get-ADServiceAccount<\/code>, qui ne renvoie que des comptes de service manag\u00e9s (MSA, gMSA) et ne trouvera jamais un compte utilisateur comme svc-intranet. Son filtre <code>-like<\/code> n&rsquo;a d&rsquo;ailleurs pas de caract\u00e8re g\u00e9n\u00e9rique. Les <code>setspn -L<\/code> par compte et le <code>setspn -D<\/code> final restent corrects.<\/p>\n<p>Qwen, r\u00e9flexion on (e1): la cause est mieux formul\u00e9e qu&rsquo;en mode off. Le mod\u00e8le voit bien le ticket chiffr\u00e9 avec la cl\u00e9 d&rsquo;un compte et d\u00e9chiffr\u00e9 avec celle de l&rsquo;autre. Il y ajoute pourtant une \u00ab d\u00e9synchronisation des cl\u00e9s AES256 \u00bb due \u00e0 la r\u00e9initialisation, qui est discutable. Et la r\u00e9ponse s&rsquo;arr\u00eate avant les commandes.<\/p>\n<p>Aucun des quatre ne propose <code>setspn -X<\/code>, ni ne s&rsquo;\u00e9tonne que le doublon ait pu \u00eatre cr\u00e9\u00e9. Les contr\u00f4leurs de domaine r\u00e9cents v\u00e9rifient normalement l&rsquo;unicit\u00e9 des SPN \u00e0 l&rsquo;\u00e9criture. C&rsquo;est exactement le type de remarque qu&rsquo;un administrateur senior ferait.<\/p>\n<h2>Extraction JSON: deux pi\u00e8ges<\/h2>\n<p>Sur l&rsquo;\u00e9v\u00e9nement 4625, les deux mod\u00e8les r\u00e9pondent en moins de 5 secondes. Aucun des deux n&rsquo;est utilisable tel quel.<\/p>\n<p>Qwen (e5): la r\u00e9ponse finale est vide. Les 149 tokens de sortie sont compt\u00e9s comme de la r\u00e9flexion, et c&rsquo;est l\u00e0 que se trouve le JSON, d&rsquo;ailleurs correct:<\/p>\n<pre class=\"wp-block-code\"><code>{\"event_id\": 4625, \"heure\": \"2026-10-24T02:13:47Z\", \"ordinateur\": \"SRV-FIC01.corp.local\",\n \"compte\": \"m.durand\", \"domaine\": \"CORP\", \"type_ouverture_session\": 3,\n \"statut\": \"0xC000006D\", \"sous_statut\": \"0xC000006A\", \"ip_source\": \"10.20.30.45\",\n \"station_source\": \"WKS-0457\", \"package_authentification\": \"NTLM\"}<\/code><\/pre>\n<p>Un workflow qui lit uniquement le contenu de la r\u00e9ponse re\u00e7oit une cha\u00eene vide. Le mod\u00e8le a bien travaill\u00e9, mais c&rsquo;est l&rsquo;analyse de la sortie (ce qui est class\u00e9 r\u00e9flexion ou r\u00e9ponse) qui a d\u00e9rap\u00e9.<\/p>\n<p>Gemma (e6) remplit bien le champ de r\u00e9ponse avec un JSON syntaxiquement valide, conforme au sch\u00e9ma&#8230; et faux:<\/p>\n<pre class=\"wp-block-code\"><code>{\"event_id\": 0, \"heure\": \"2thought\", \"ordinateur\": \"SRV-FIC01.corp.local\", \"compte\": \"m.durand\",\n \"domaine\": \"CORP\", \"type_ouverture_session\": 3, \"statut\": \"0xC000006D\", \"sous_statut\": \"0xC000006A\",\n \"ip_source\": \": \", \"station_source\": \"WKS-0457\", \"package_authentification\": \"NTLM\"}<\/code><\/pre>\n<p>Le \u00ab thought \u00bb qui appara\u00eet dans le champ <code>heure<\/code> \u00e9voque le marqueur de canal de r\u00e9flexion de Gemma 4. Dans LM Studio, des utilisateurs ont d\u00fb r\u00e9gler \u00e0 la main le d\u00e9coupage de la r\u00e9flexion, avec les cha\u00eenes de d\u00e9but et de fin &lt;|channel&gt; et &lt;channel|&gt;. Notre hypoth\u00e8se est donc un conflit entre le d\u00e9codage contraint par le sch\u00e9ma et ce marqueur, mais elle reste \u00e0 confirmer. Ce qui est s\u00fbr: un JSON valide n&rsquo;est pas un JSON juste. Un <code>event_id<\/code> \u00e0 0 sur un 4625 doit \u00eatre rejet\u00e9 par une validation m\u00e9tier, pas seulement par la validation du sch\u00e9ma.<\/p>\n<h2>Limites de ces mesures<\/h2>\n<ul>\n<li>Un seul prompt par t\u00e2che, une seule r\u00e9p\u00e9tition en mode on et deux en mode off. Ce sont des tendances, pas une statistique.<\/li>\n<li>Temp\u00e9rature 0.2 en mode r\u00e9flexion, alors que Qwen recommande temperature=1.0, top_p=0.95, top_k=20, presence_penalty=1.5 pour les t\u00e2ches g\u00e9n\u00e9rales en mode r\u00e9flexion. Ces r\u00e9glages peuvent changer la longueur de la r\u00e9flexion, dans un sens que nous n&rsquo;avons pas mesur\u00e9.<\/li>\n<li>Contexte charg\u00e9 \u00e0 8192 tokens, tr\u00e8s en dessous des 128K recommand\u00e9s pour Qwen.<\/li>\n<li>Pas de comparaison r\u00e9flexion on et off sur l&rsquo;extraction JSON, puisque le r\u00e9glage n&rsquo;a pas pu \u00eatre appliqu\u00e9 avec un sch\u00e9ma impos\u00e9. Et un plafond de 3500 tokens qui p\u00e9nalise directement Qwen sur e1.<\/li>\n<\/ul>\n<h2>R\u00e9glages recommand\u00e9s dans LM Studio et dans un workflow<\/h2>\n<p>Pour Qwen 3.6, la r\u00e9flexion est active par d\u00e9faut. Avec llama.cpp, Unsloth indique qu&rsquo;il faut passer &#8211;chat-template-kwargs &lsquo;{\u00ab\u00a0enable_thinking\u00a0\u00bb:false}&rsquo; pour la d\u00e9sactiver. Pour Gemma 4, c&rsquo;est l&rsquo;inverse: la r\u00e9flexion s&rsquo;active en ajoutant &lt;|think|&gt; au prompt syst\u00e8me, comme l&rsquo;indique la documentation. Dans LM Studio, le d\u00e9coupage de la r\u00e9flexion se r\u00e8gle mod\u00e8le par mod\u00e8le: il faut ouvrir le mod\u00e8le depuis l&rsquo;onglet My Models pour trouver Reasoning Parsing.<\/p>\n<p>Pour v\u00e9rifier le comportement sur votre propre machine, le plus simple est d&rsquo;interroger l&rsquo;API compatible OpenAI et de regarder la r\u00e9ponse brute, contenu et r\u00e9flexion s\u00e9par\u00e9s:<\/p>\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:1234\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"model\": \"google\/gemma-4-26b-a4b-qat\",\n    \"temperature\": 0,\n    \"max_tokens\": 800,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Extrais les champs de cet \u00e9v\u00e9nement Windows en JSON...\"}],\n    \"response_format\": {\"type\": \"json_schema\", \"json_schema\": {\"name\": \"evt4625\", \"strict\": true,\n      \"schema\": {\"type\": \"object\", \"properties\": {\"event_id\": {\"type\": \"integer\"}}, \"required\": [\"event_id\"]}}}\n  }' | jq '.usage, .choices[0].message'<\/code><\/pre>\n<p>\u00c0 partir de ces essais, voici ce que je retiens pour la maquette:<\/p>\n<ol>\n<li>Extraction, classification, normalisation de journaux: r\u00e9flexion off quand le moteur permet de la couper (v\u00e9rifiez-le dans la r\u00e9ponse brute), temp\u00e9rature 0, et une validation m\u00e9tier apr\u00e8s la validation du sch\u00e9ma (plages de valeurs, format ISO 8601 de l&rsquo;heure, adresse IP valide).<\/li>\n<li>Dans un workflow n8n, tester le cas \u00ab contenu vide, r\u00e9flexion non vide \u00bb et le traiter comme une erreur. Nous retrouvons la m\u00eame logique de contr\u00f4le dans l&rsquo;article sur le <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/rag-local-lm-studio-n8n-embeddings-decoupage\/\">RAG local avec LM Studio et n8n<\/a>.<\/li>\n<li>Diagnostic interactif: Gemma 4 avec r\u00e9flexion si l&rsquo;on accepte une minute d&rsquo;attente, sinon Gemma ou Qwen sans r\u00e9flexion, en relisant les commandes PowerShell propos\u00e9es.<\/li>\n<li>Si la r\u00e9flexion de Qwen 3.6 est activ\u00e9e, pr\u00e9voir un max_tokens bien au del\u00e0 de 3500. Sur ce prompt, 3500 n&rsquo;a pas suffi. Il faut aussi surveiller le temps r\u00e9el avant le premier token de r\u00e9ponse, pas le temps jusqu&rsquo;au premier token affich\u00e9 par l&rsquo;API.<\/li>\n<\/ol>\n<p>Derni\u00e8re remarque, c\u00f4t\u00e9 s\u00e9curit\u00e9: les deux mod\u00e8les ont propos\u00e9 des commandes qui modifient l&rsquo;annuaire (<code>setspn -D<\/code>) sans demander quel compte \u00e9tait r\u00e9ellement utilis\u00e9 par le pool d&rsquo;applications. Sur ce cas, c&rsquo;est le bon compte. Mais dans un workflow o\u00f9 un agent ex\u00e9cute lui-m\u00eame ses commandes, c&rsquo;est exactement la ligne qui doit rester soumise \u00e0 validation humaine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,58],"tags":[74,76,5,60,64,61,73,75],"class_list":["post-1246","post","type-post","status-publish","format-standard","hentry","category-intelligence-artificielle","category-llm-en-local","tag-gemma-4","tag-json","tag-kerberos","tag-lm-studio","tag-mac-mini-m4","tag-mlx","tag-qwen-3-6","tag-raisonnement"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER<\/title>\n<meta name=\"description\" content=\"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER\" \/>\n<meta property=\"og:description\" content=\"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/\" \/>\n<meta property=\"og:site_name\" content=\"R\u00e9mi VERNIER\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-27T18:29:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-27T20:54:41+00:00\" \/>\n<meta name=\"author\" content=\"R\u00e9mi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"R\u00e9mi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/\"},\"author\":{\"name\":\"R\u00e9mi\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"headline\":\"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion\",\"datePublished\":\"2026-10-27T18:29:58+00:00\",\"dateModified\":\"2026-10-27T20:54:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/\"},\"wordCount\":2393,\"commentCount\":0,\"keywords\":[\"gemma 4\",\"json\",\"kerberos\",\"lm studio\",\"mac mini m4\",\"mlx\",\"qwen 3.6\",\"raisonnement\"],\"articleSection\":[\"Intelligence artificielle\",\"LLM en local\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/\",\"url\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/\",\"name\":\"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\"},\"datePublished\":\"2026-10-27T18:29:58+00:00\",\"dateModified\":\"2026-10-27T20:54:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"description\":\"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/10\\\/27\\\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/remivernier.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\",\"url\":\"https:\\\/\\\/remivernier.com\\\/\",\"name\":\"R\u00e9mi VERNIER\",\"description\":\"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/remivernier.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\",\"name\":\"R\u00e9mi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"caption\":\"R\u00e9mi\"},\"sameAs\":[\"http:\\\/\\\/www.linkedin.com\\\/in\\\/remi-vernier\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER","description":"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/","og_locale":"fr_FR","og_type":"article","og_title":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER","og_description":"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.","og_url":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/","og_site_name":"R\u00e9mi VERNIER","article_published_time":"2026-10-27T18:29:58+00:00","article_modified_time":"2026-10-27T20:54:41+00:00","author":"R\u00e9mi","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"R\u00e9mi","Dur\u00e9e de lecture estim\u00e9e":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/#article","isPartOf":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/"},"author":{"name":"R\u00e9mi","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"headline":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion","datePublished":"2026-10-27T18:29:58+00:00","dateModified":"2026-10-27T20:54:41+00:00","mainEntityOfPage":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/"},"wordCount":2393,"commentCount":0,"keywords":["gemma 4","json","kerberos","lm studio","mac mini m4","mlx","qwen 3.6","raisonnement"],"articleSection":["Intelligence artificielle","LLM en local"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/","url":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/","name":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion - R\u00e9mi VERNIER","isPartOf":{"@id":"https:\/\/remivernier.com\/#website"},"datePublished":"2026-10-27T18:29:58+00:00","dateModified":"2026-10-27T20:54:41+00:00","author":{"@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"description":"Qwen 3.6 35B-A3B et Gemma 4 26B-A4B sur Mac mini M4 32 Go: diagnostic Kerberos et extraction JSON, r\u00e9flexion activ\u00e9e puis d\u00e9sactiv\u00e9e. Temps, tokens et qualit\u00e9.","breadcrumb":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/qwen-3-6-gemma-4-mac-mini-m4-cout-reflexion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/remivernier.com\/"},{"@type":"ListItem","position":2,"name":"Qwen 3.6 ou Gemma 4 sur Mac mini M4: ce que co\u00fbte la r\u00e9flexion"}]},{"@type":"WebSite","@id":"https:\/\/remivernier.com\/#website","url":"https:\/\/remivernier.com\/","name":"R\u00e9mi VERNIER","description":"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/remivernier.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906","name":"R\u00e9mi","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","caption":"R\u00e9mi"},"sameAs":["http:\/\/www.linkedin.com\/in\/remi-vernier"]}]}},"_links":{"self":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1246"}],"version-history":[{"count":2,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1246\/revisions"}],"predecessor-version":[{"id":1252,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1246\/revisions\/1252"}],"wp:attachment":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}