🦥Unsloth Dynamic GGUFs auf Aider Polyglot

Leistung der Unsloth Dynamic GGUFs auf Aider Polyglot-Benchmarks

Wir freuen uns, zu zeigen, wie Unsloth Dynamic GGUFs es ermöglichen, LLMs wie DeepSeek-V3.1 (671B) auf nur 1-Bit oder 3-Bitherunter zu quantisieren, und dennoch SOTA-Modelle wie GPT-4.5, GPT-4.1 (April 2025) und Claude-4-Opus (Mai 2025).

Zuvor haben wir demonstriert wie Unsloth Dynamic GGUFs andere Quantisierungsmethoden bei 5-shot MMLU und KL-Divergenz übertreffen. Jetzt zeigen wir ihre Leistung in unabhängigen Drittanbieter-Bewertungen mithilfe des Aider Polyglot Benchmarks.

Thinking Aider Benchmarks
No Thinking Aider Benchmarks

Wichtige Ergebnisse

  • Unser 1-Bit Unsloth Dynamic GGUF verkleinert DeepSeek-V3.1 von 671GB → 192GB (-75% Größe) und der No-Thinking-Modus übertrifft deutlich GPT-4.1 (Apr 2025), GPT-4.5 und DeepSeek-V3-0324.

  • 3-Bit Unsloth DeepSeek-V3.1 (Thinking) GGUF: Übertrifft Claude-4-Opus-20250514 (Thinking).

  • 5-Bit Unsloth DeepSeek-V3.1 (Non-Thinking) GGUF: Entspricht der Leistung von Claude-4-Opus-20250514 (Non-Thinking).

  • Unsloth Dynamic GGUFs schneiden durchgängig besser ab als andere nicht-Unsloth Dynamic imatrix GGUFs

  • Andere nicht-Unsloth 1-Bit- und 2-Bit-DeepSeek-V3.1-Quantisierungen sowie Standard-1-Bit-Quantisierung ohne selektive Layer-Quantisierung schlugen entweder fehl beim Laden oder erzeugten Kauderwelsch und wiederholte Ausgaben. Dies hebt hervor, wie Unsloth Dynamic GGUFs die Genauigkeit weitgehend erhalten können, während andere Methoden nicht einmal funktionieren.

Warum der Aider Polyglotarrow-up-right Benchmark? Aider ist eines der umfassendsten Maßstäbe dafür, wie gut LLMs schreiben, programmieren, Anweisungen befolgen und Änderungen ohne menschliches Eingreifen anwenden können, und damit einer der anspruchsvollsten und wertvollsten Benchmarks für den realen Einsatz.

circle-check

🦥Unsloth Dynamic Quantisierung

circle-check

Im Nov 2024 haben unsere 4-Bit Dynamicarrow-up-right Quants gezeigt, wie man die QLoRA-Feinabstimmung & Modellgenauigkeit weitgehend wiederherstellen kann, indem man einfach selektiv Layer quantisiert. Später haben wir DeepSeek-R1die Architektur von untersucht und diese ähnliche Methodik angewandt, wobei wir einige Layer bis auf 1-Bit und wichtige Layer auf höhere Bits (6, 8-Bit) quantisierten. Dieser Ansatz gewann schnell an Popularität und hat sich insbesondere für MoE-Modelle als besonders effektiv erwiesen, wodurch dynamische Quantisierung zum De-facto-Standard für MoE-Quantisierung wurde.

Unsere Dynamic GGUFs sind noch effektiver, wenn sie mit unserem imatrix Kalibrationsdatensatzkombiniert werden, der für Chat- und Coding-Performance entwickelt wurde. All dies ermöglichte extreme LLM-Kompression ohne katastrophalen Qualitätsverlust.

Zum Beispiel bewirkt bei Qwen2-VL-2B-Instruct das naive Quantisieren aller Layer auf 4bit, dass das Modell das untenstehende Bild nicht mehr korrekt versteht. Es ist ein Zug, keine Küstenszene!

Wir haben auch dynamische Benchmarks gezeigt in https://docs.unsloth.ai/basics/unsloth-dynamic-2.0-ggufsarrow-up-right für Gemma 3 und Llama 4 Scout, und gezeigt, wie effektiv unsere Methodik ist:

⚙️Benchmark-Setup

Für unsere DeepSeek-V3.1-Experimente verglichen wir verschiedene Bitstufen von Unsloth Dynamic GGUFs mit:

  • Vollpräzisen, unquantisierten LLMs einschließlich GPT 4.5, 4.1, Claude-4-Opus, DeepSeek-V3-0324 usw.

  • Andere dynamic imatrix V3.1 GGUFs

  • Semi-dynamische (einige selektive Layer-Quantisierung) imatrix V3.1 GGUFs für Ablationszwecke.

Benchmark-Experimente wurden hauptsächlich durchgeführt von David Sluysarrow-up-right (neolithic5452 auf Aider Discordarrow-up-right), einem vertrauenswürdigen Community-Beitragenden zu Aider Polyglot-Bewertungen. Tests wurden etwa 3 Mal durchgeführt und für eine Medianbewertung gemittelt, und die Pass-2-Genauigkeit wird wie üblich berichtet. Es gibt einige reproduzierbare Benchmark-Code-Snippets im Aider-Discord.

chevron-rightErweitern für Reasoning-Modell Aider-Benchmarkshashtag
Modell
Genauigkeit

GPT-5

86.7

Gemini 2.5 Pro (Juni)

83.1

o3

76.9

DeepSeek V3.1

76.1

(3 Bit) DeepSeek V3.1 Unsloth

75.6

Claude-4-Opus (Mai)

72

o4-mini (High)

72

DeepSeek R1 0528

71.4

(2 Bit) DeepSeek V3.1 Unsloth

66.7

Claude-3.7-Sonnet (Feb)

64.9

(1 Bit) DeepSeek V3.1 Unsloth

57.8

DeepSeek R1

56.9

chevron-rightErweitern für Non-Reasoning-Modell Aider-Benchmarkshashtag
Modell
Genauigkeit

DeepSeek V3.1

71.6

Claude-4-Opus (Mai)

70.7

(5 Bit) DeepSeek V3.1 Unsloth

70.7

(4 Bit) DeepSeek V3.1 Unsloth

69.7

(3 Bit) DeepSeek V3.1 Unsloth

68.4

(2 Bit) DeepSeek V3.1 Unsloth

65.8

Qwen3 235B A22B

59.6

Kimi K2

59.1

(1 Bit) DeepSeek V3.1 Unsloth

55.7

DeepSeek V3-0324

55.1

GPT-4.1 (April, 2025)

52.4

ChatGPT 4o (März, 2025)

45.3

GPT-4.5

44.9

DeepSeek V3.1 hat sowohl einen Reasoning- als auch einen Non-Reasoning-Modus, und wir testen beide. Für Non-Reasoning sehen wir einen klaren Trend, wie unsere dynamischen Quantisierungen unten abschneiden. Dynamic 5-Bit erreicht 70,7% bei Aider Pass-2, während Dynamic 1-Bit 55,7% erreicht. In Bezug auf Größe und Genauigkeit sind 3 und 4 Bit extrem leistungsstark!

🎇Vergleich zu anderen Quants

Wir führen den Aider Polyglot-Benchmark auch auf anderen dynamic imatrix GGUFs aus der Community durch und vergleichen ihn mit unserem. Um einen fairen Vergleichzu gewährleisten, tun wir Folgendes:

  1. Wir wählen ähnlich große Dateien und Bit-Typen wie bei jedem Unsloth-Quant aus.

  2. Wir verwenden unsere fixierte Chat-Vorlage falls das Community-Quant den Benchmark nicht ausführen kann. Wir fanden einige Community-Quants {"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"}, und dies wird behoben, indem wir unsere fixierte Chat-Vorlage verwenden.

Wir sehen, dass Unsloth Dynamic Quants im Vergleich zu anderen Community-Quantisierungen für dieselbe Modellgröße und Quant-Art bemerkenswert gut abschneiden!

chevron-rightErweitern für rohe numerische Daten zum Vergleich mit anderen Quantshashtag
Quant
Quant-Größe (GB)
Unsloth Genauigkeit %
Vergleichsgenauigkeit %

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

🍰Ablationen der dynamischen Quantisierung

Wir haben auch einige Ablationen durchgeführt, um zu bestätigen, ob unser Kalibrationsdatensatz und unsere Methodik der dynamischen Quantisierung tatsächlich funktionieren. Der Trick der Unsloth-Dynamik besteht darin, wichtige Layer auf höhere Bits zu quantisieren z. B. 8 Bit, während unwichtige Layer in niedrigeren Bits wie 2 Bit belassen werden.

Um unsere Methode zu testen, lassen wir bestimmte Tensoren in niedrigerer Präzision wie 4 Bit vs. höherer Präzision. Zum Beispiel lassen wir unten attn_k_b Tensoren in 4 Bit (semi-dynamisch) vs. 8 Bit (aktuell Unsloth), und indem wir die Quantgröße nur um ~100 MB oder so erhöhen (<0,1%), schießt die Genauigkeit dramatisch in die Höhe!

circle-check

🐛Chat-Vorlagen Bugfixes

Während der Tests der DeepSeek-V3.1-Quants stellten wir fest, dass einige niedrigere Bit-Quants nicht <think> </think> richtig umschlossen waren oder eine seltsame Formatierung aufwiesen. Dies führte dazu, dass einige Community-Quants bei niedrigeren Bits nicht funktionierten und somit zu unfairen Vergleichen führten. Wir stellten fest, dass llama.cpps Verwendung von minja (einer vereinfachten Version von jinja) keine Positionsargumente in .split akzeptiert. Wir mussten ändern:

zu folgendem:

Siehe hierarrow-up-right für unsere fixierte Chat-Vorlage oder hierarrow-up-right für eine rohe jinja-Datei.

📊Pass-Rate 1

Aider wird hauptsächlich mit Pass-Rate 2 berichtet. Wir berichten auch Pass-Rate 1, um Community-Quants derselben Größe zu vergleichen. Wir sehen, dass unsere dynamischen Quants wesentlich besser abschneiden als andere Community-Quants ähnlicher Größe, insbesondere bei weniger als 2 Bit und mehr als 4 Bit. 3 und 4 Bit schneiden ähnlich gut ab.

💻DeepSeek V3.1 Dynamic Quants ausführen

Gehe zu unserem DeepSeek V3.1 Leitfaden oder um schnell die dynamische 2-Bit-Version zu erhalten, mache:

verwende dann llama.cpp um die Gewichte direkt herunterzuladen. Wir haben bereits die optimal vorgeschlagenen Parameter wie Temperatur, die Chat-Vorlage usw. gesetzt:

Zuletzt aktualisiert

War das hilfreich?