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
- Weniger Bits pro Gewicht. Das Werkzeug
llama-quantizeliest 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]. - 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].
- 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].
- 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].
- 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].
- 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_MFü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.