Zum Inhalt
Bytearium

Keine Werbung und keine Partnerlinks aktiv

KI & Automatisierung

Quantisierung (GGUF, Q4_K_M)

Quantisierung speichert die Gewichte eines Sprachmodells mit weniger Bits. Was Q4_K_M und GGUF bedeuten und was jeder Typ an Speicher und Qualität kostet.

Dieser Eintrag liegt noch unter unserer Mindestlatte für den Suchindex (Umfang und Zahl der Quellen) und wird überarbeitet. Er ist deshalb nicht in Suchmaschinen gelistet.

Die Downloadseite listet zwanzig Fassungen desselben Modells, benannt wie Nummernschilder: Q4_K_M, Q5_K_S, Q8_0. Die Buchstaben verraten, wie stark das Modell zusammengepresst wurde, damit es auf deine Hardware passt.

Kurz gesagt

Quantisierung speichert die Gewichte eines Sprachmodells mit weniger Bits, etwa als 4-Bit-Ganzzahlen statt als 32-Bit-Gleitkommazahlen; die Datei schrumpft, und die Berechnung kann schneller werden [1]. GGUF ist das Dateiformat, das llama.cpp und andere Werkzeuge auf Basis von GGML laden; neben den Tensoren enthält es einen festgelegten Satz an Metadaten [2][3]. Und was ist Q4_K_M? Ein Quantisierungstyp von llama.cpp, der den Großteil des Modells als 4-Bit-„K-Quants“ speichert und ausgewählte Tensoren mit 6 Bit [1][5]. Unsere Einschätzung: Q4_K_M ist ein vernünftiger Standard, wenn der Speicher knapp ist, denn laut den Zahlen von llama.cpp verliert es deutlich weniger Qualität als das ältere Q4_0 bei kaum größerer Datei [4]. Ist mehr Speicher frei, verliert ein 5- oder 6-Bit-Typ noch weniger.

So funktioniert’s

  1. Weniger Bits pro Gewicht. Das Werkzeug llama-quantize liest eine GGUF-Datei in hoher Genauigkeit wie F32 oder BF16 und schreibt eine quantisierte Kopie [1]. Für Llama-3.1-8B nennt llama.cpp bei F16 16,0005 Bit pro Gewicht und 14,96 GiB, bei Q8_0 8,5008 Bit und 7,95 GiB und bei Q4_K_M 4,8944 Bit und 4,58 GiB [1].
  2. Blöcke mit eigener Skala. Quantisierte Gewichte liegen in Blöcken, die sich Skalierungsfaktoren teilen. Hugging Face beschreibt Q4_K als Superblöcke aus 8 Blöcken mit je 32 Gewichten, mit 6-Bit-Skala und 6-Bit-Minimum je Block; das ergibt 4,5 Bit pro Gewicht, bei Q6_K sind es 6,5625 Bit [2].
  3. Das K und das M. „K“ steht für die Familie der K-Quants, die Endung für eine Mischung. Im Code von llama.cpp bleibt bei Q4_K_M der Großteil der Tensoren bei Q4_K, die Ausgabeschicht und Teile der Attention- und Feed-Forward-Schichten bekommen aber den 6-Bit-Typ Q6_K. Auch Q4_K_S speichert die Ausgabeschicht mit Q6_K, wertet aber weniger Attention- und Feed-Forward-Schichten auf, und nur auf das 5-Bit-Format Q5_K [5]. Deshalb liegt Q4_K_M im Schnitt über 4,5 Bit pro Gewicht [1][2].
  4. Der Preis in Qualität. llama.cpp gibt je Typ an, wie stark die Perplexität steigt, ein Maß dafür, wie überrascht ein Modell von Testtext ist. Gemessen an Llama-3-8B sind es +0,4685 beim älteren Q4_0, +0,1754 bei Q4_K_M, +0,0569 bei Q5_K_M und +0,0026 bei Q8_0 [4]. Kleiner heißt näher am Original. Eine Importance-Matrix-Datei (imatrix) kann den Verlust weiter senken [1].
  5. Eine Datei, alles drin. GGUF ist auf den Betrieb als Einzeldatei und auf mmap ausgelegt; eine Datei beginnt mit den Bytes „GGUF“, und die aktuelle Spezifikation beschreibt Version 3 [3]. Hugging Face nennt llama.cpp, LM Studio, GPT4All und Ollama unter den Werkzeugen, die GGUF nutzen [2].
  6. Vor dem Download wählen. Ollama übernimmt eine GGUF-Datei so, wie sie ist, und quantisiert GGUF-Modelle beim Import nicht; den Typ wählst du also beim Herunterladen oder Umwandeln [6].

Ein Praxisbeispiel

Du willst ein 8B-Modell auf einer Grafikkarte mit 8 GiB VRAM betreiben. Die Q8_0-Datei von Llama-3.1-8B belegt 7,95 GiB und ließe kaum Platz für den Kontext, Q4_K_M belegt 4,58 GiB [1]. Hast du nur eine BF16-Datei, wandelt llama.cpp sie um:

./build/bin/llama-quantize model-bf16.gguf model-Q4_K_M.gguf Q4_K_M

Für Ollama schreibst du ein Modelfile mit der einzigen Zeile FROM ./model-Q4_K_M.gguf und startest ollama create my-model [6]. Danach beobachtest du den tatsächlichen Speicherbedarf, während das Modell auf eine lange Eingabe antwortet. Das sind die veröffentlichten Zahlen von llama.cpp und keine Messung auf unserer Hardware.

Prüfliste

  • Prüfe den Quantisierungstyp im Dateinamen, bevor du ein Modell herunterlädst [1].
  • Vergleiche die Dateigröße mit deinem freien VRAM oder RAM und lass Luft für den Kontext.
  • Nimm K-Quants wie Q4_K_M statt des alten Q4_0, das Hugging Face als kaum noch verbreitet beschreibt [2][4].
  • Starte beim eigenen Quantisieren von einer Datei in hoher Genauigkeit wie F32 oder BF16 [1].
  • Notiere Modell, Quantisierungstyp und Ausgangsdatei, damit sich ein Ergebnis nach dem nächsten Update nachstellen lässt.

Primärquellen

Diese Quellen sind die Grundlage der Seite. Das heißt nicht, dass jede Aussage einzeln nachgeprüft wurde; ob ein Prüfbeleg vorliegt, steht oben unter „Stand“. Einordnung und Prüfliste sind unsere eigene Arbeit.

Für diese Fassung liegt noch kein dokumentierter Prüfbeleg vor. Der Text stützt sich auf die genannten Quellen.

Entstehung: Bytearium erstellt diese Seiten mit Unterstützung von KI und verantwortet die Veröffentlichung. KI kann sich irren, deshalb nennen wir Quellen und Prüfstand offen.

  1. ggml-orgllama.cpp – quantize (README)
  2. Hugging FaceGGUF
  3. ggml-orgGGUF
  4. ggml-orgllama.cpp – quantize.cpp
  5. ggml-orgllama.cpp – llama-quant.cpp
  6. OllamaImporting a model

Auf dieser Seite gibt es keine Werbung und keine Partnerlinks.