GGUF dynamiques Unsloth sur Aider Polyglot
Performances des GGUF dynamiques Unsloth sur les benchmarks Aider Polyglot
Nous sommes ravis de montrer comment Unsloth Dynamic GGUFs permet de quantifier des LLM comme DeepSeek-V3.1 (671B) jusqu’à seulement 1-bit ou 3 bits, tout en restant capable de surpasser des modèles SOTA comme GPT-4.5, GPT-4.1 (avril 2025) et Claude-4-Opus (mai 2025).
Auparavant, nous avons démontré comment Unsloth Dynamic GGUFs surpasse d’autres méthodes de quantification sur 5-shot MMLU et la divergence KL. Maintenant, nous montrons leurs performances sur des évaluations tierces indépendantes en utilisant le Aider Polyglot benchmark.


⭐Résultats clés
Notre 1-bit Unsloth Dynamic GGUF réduit DeepSeek-V3.1 de 671GB → 192GB (-75 % de taille) et le mode sans réflexion surpasse largement GPT-4.1 (avr. 2025), GPT-4.5 et DeepSeek-V3-0324.
3 bits Unsloth DeepSeek-V3.1 (réflexion) GGUF : surpasse Claude-4-Opus-20250514 (réflexion).
5 bits Unsloth DeepSeek-V3.1 (sans réflexion) GGUF : égalise les performances de Claude-4-Opus-20250514 (sans réflexion).
Unsloth Dynamic GGUFs offre systématiquement de meilleures performances que les autres GGUFs imatrix dynamiques non-Unisloth
Les autres quantifications DeepSeek-V3.1 non-Unisloth en 1 bit et 2 bits, ainsi que la quantification standard en 1 bit sans quantification sélective des couches, n’ont soit pas pu être chargées, soit ont produit du charabia et des sorties en boucle. Cela montre que les Unsloth Dynamic GGUFs parviennent à conserver largement la précision, alors que d’autres méthodes ne fonctionnent même pas.
Pourquoi le Aider Polyglot benchmark ? Aider est l’une des mesures les plus complètes de la capacité des LLM à écrire, coder, suivre des instructions et appliquer des modifications sans intervention humaine, ce qui en fait l’un des benchmarks les plus difficiles et les plus utiles pour un usage réel.
Le avantage clé de l’utilisation du package et des modèles Unsloth est notre rôle actif dans la correction de bugs critiques dans de grands modèles. Nous avons collaboré directement avec les équipes derrière Qwen3, Meta (Llama 4), Mistral (Devstral), Google (Gemma 1–3) et Microsoft (Phi-3/4), en contribuant à des correctifs essentiels qui améliorent considérablement la précision.
🦥Quantification dynamique Unsloth
Le 1 bit dynamique met les couches importantes en 8 ou 16 bits et les couches peu importantes en 1,2,3,4,5 ou 6 bits.
En nov. 2024, nos Quants dynamiques 4 bits ont montré comment on pouvait en grande partie restaurer le fine-tuning QLoRA et la précision du modèle simplement en quantifiant sélectivement les couches. Nous avons ensuite étudié DeepSeek-R1l’architecture et appliqué cette méthodologie similaire, où nous avons quantifié certaines couches jusqu’à 1 bit et les couches importantes à des bits plus élevés (6, 8 bits). Cette approche a rapidement gagné en popularité et s’est révélée particulièrement efficace pour les modèles MoE, faisant de la quantification dynamique la norme de facto pour la quantification MoE.
Nos Dynamic GGUFs sont encore plus efficaces lorsqu’ils sont associés à notre jeu de données de calibration imatrix, conçu pour les performances en chat et en codage. Tout cela a permis une compression extrême des LLM sans perte catastrophique de qualité.
Par exemple, dans Qwen2-VL-2B-Instruct, quantifier naïvement toutes les couches en 4 bits fait que le modèle ne comprend pas l’image ci-dessous. C’est un train, pas une scène côtière !


Nous avons également montré des benchmarks dynamiques dans https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufs pour Gemma 3 et Llama 4 Scout, montrant à quel point notre méthodologie est efficace :


⚙️Configuration du benchmark
Pour nos expériences DeepSeek-V3.1, nous avons comparé différents bits de Unsloth Dynamic GGUFs avec :
LLM en précision complète, non quantifiés y compris GPT 4.5, 4.1, Claude-4-Opus, DeepSeek-V3-0324, etc.
Autres GGUFs imatrix V3.1 dynamiques
Semi-dynamiques GGUFs imatrix V3.1 (avec certaine quantification sélective des couches) pour des fins d’ablation.
Les expériences de benchmark ont principalement été menées par David Sluys (neolithic5452 sur le Discord d’Aider), un contributeur communautaire de confiance pour les évaluations Aider Polyglot. Les tests ont été exécutés ~3 fois puis moyennés pour obtenir un score médian, et la précision Pass-2 est rapportée comme le veut la convention. Il existe quelques extraits de code de benchmark reproductibles dans le Discord d’Aider.
Développer pour les benchmarks Aider des modèles de raisonnement
GPT-5
86.7
Gemini 2.5 Pro (juin)
83.1
o3
76.9
DeepSeek V3.1
76.1
DeepSeek V3.1 Unsloth (3 bits)
75.6
Claude-4-Opus (mai)
72
o4-mini (élevé)
72
DeepSeek R1 0528
71.4
DeepSeek V3.1 Unsloth (2 bits)
66.7
Claude-3.7-Sonnet (févr.)
64.9
DeepSeek V3.1 Unsloth (1 bit)
57.8
DeepSeek R1
56.9
Développer pour les benchmarks Aider des modèles sans raisonnement
DeepSeek V3.1
71.6
Claude-4-Opus (mai)
70.7
DeepSeek V3.1 Unsloth (5 bits)
70.7
DeepSeek V3.1 Unsloth (4 bits)
69.7
DeepSeek V3.1 Unsloth (3 bits)
68.4
DeepSeek V3.1 Unsloth (2 bits)
65.8
Qwen3 235B A22B
59.6
Kimi K2
59.1
DeepSeek V3.1 Unsloth (1 bit)
55.7
DeepSeek V3-0324
55.1
GPT-4.1 (avril 2025)
52.4
ChatGPT 4o (mars 2025)
45.3
GPT-4.5
44.9
DeepSeek V3.1 possède à la fois un mode de raisonnement et un mode sans raisonnement, et nous testons les deux. Pour le mode sans raisonnement, nous observons ci-dessous une tendance claire des performances de nos quantifications dynamiques. Le 5 bits dynamique atteint 70,7 % sur Aider Pass-2, tandis que le 1 bit dynamique atteint 55,7 %. En termes de taille et de précision, les versions 3 et 4 bits sont extrêmement puissantes !

🎇Comparaison avec d’autres quants
Nous exécutons également le benchmark Aider Polyglot sur d’autres GGUFs imatrix dynamiques issus de la communauté et les comparons aux nôtres. Pour garantir une comparaison équitable, nous faisons ce qui suit :
Nous sélectionnons des fichiers et des types de bits de taille similaire pour chaque quantification Unsloth.
Nous utilisons notre modèle de chat corrigé si la quantification communautaire ne parvient pas à exécuter le benchmark. Nous avons trouvé certaines quantifications communautaires
{"code":500,"message":"split method must have between 1 and 1 positional arguments and between 0 and 0 keyword arguments at row 3, column 1908"}, et cela est corrigé en utilisant notre modèle de chat corrigé.
Nous constatons que les quants dynamiques Unsloth fonctionnent remarquablement bien par rapport à d’autres quantifications communautaires pour la même taille de modèle et le même type de quantification !

Développer pour la comparaison des données numériques brutes avec d’autres quants
IQ2_XXS
164
43.6
TQ1_0
170
50.7
IQ1_M
206
55.7
IQ2_M
215
56.6
IQ2_XXS
225
61.2
IQ2_M
235
64.3
Q2_K_L
239
64.0
Q2_K_XL
255
65.8
IQ3_XXS
268
65.6
65.6
IQ3_XXS
279
66.8
Q3_K_S
293
65.2
Q3_K_XL
300
68.4
IQ4_XS
357
69.2
IQ4_XS
360
66.3
Q4_K_XL
387
69.7
Q4_K_M
405
69.7
Q4_K_M
409
67.7
Q5_K_M
478
68.9
Q5_K_XL
484
70.7
🍰Ablations de la quantification dynamique
Nous avons également effectué quelques ablations pour confirmer si notre jeu de données de calibration et notre méthodologie de quantification dynamique fonctionnent réellement. L’astuce de la méthode dynamique d’Unsloth consiste à quantifier les couches importantes à des bits plus élevés par exemple 8 bits, tandis que les couches peu importantes sont laissées à des bits plus faibles comme 2 bits.
Pour tester notre méthode, nous laissons des tenseurs spécifiques en précision plus faible, comme 4 bits, versus précision plus élevée. Par exemple ci-dessous, nous laissons attn_k_b les tenseurs en 4 bits (semi-dynamique) vs 8 bits (Unsloth actuel), et en augmentant la taille du quant de seulement ~100 Mo environ (<0,1 %), la précision grimpe de façon spectaculaire !
attn_k_b et d’autres tenseurs dans DeepSeek V3.1 sont très importants / sensibles à la quantification et devraient être laissés en précision plus élevée pour conserver la précision !

🐛Correctifs du bug du modèle de chat
Lors des tests des quantifications DeepSeek-V3.1, nous avons trouvé certaines quantifications à plus faible nombre de bits ne fermant pas <think> </think> correctement ou produisant un formatage étrange. Cela a conduit certaines quantifications communautaires à ne pas fonctionner à plus faible nombre de bits, ce qui a entraîné des comparaisons injustes. Nous avons découvert que l’utilisation de minja par llama.cpp (une version plus simple de jinja) n’accepte pas d’argument positionnel dans .split. Nous avons dû changer :
vers la version ci-dessous :
Voir ici pour notre modèle de chat corrigé ou ici pour un fichier jinja brut.
📊Taux de réussite 1
Aider est principalement rapporté sur le taux de réussite 2. Nous rapportons également le taux de réussite 1 pour comparer les quantifications communautaires de même taille. Nous constatons que nos quantifications dynamiques font bien mieux que les autres quantifications communautaires de tailles similaires, en particulier en dessous de 2 bits et au-dessus de 4 bits. Les versions 3 et 4 bits ont des performances tout aussi bonnes.

💻Exécuter les quants dynamiques DeepSeek V3.1
Rendez-vous sur notre guide DeepSeek V3.1 ou, pour obtenir rapidement la version dynamique 2 bits, faites :
puis utilisez llama.cpp pour télécharger directement les poids. Nous avons déjà défini les paramètres suggérés optimaux comme la température, le modèle de chat, etc. :
Mis à jour
Ce contenu vous a-t-il été utile ?

