Naar de inhoud
trending

Handleidingen

GGUF kwantisatie: Q4_K_M vs Q6_K vs Q8_0 gemeten

GGUF en kwantisatie bepalen hoeveel VRAM je taalmodel gebruikt en hoe snel het draait. Ik vergeleek Q4_K_M, Q6_K en Q8_0 direct op een RTX 4090.

Tekst: 10 min leestijd

👁 114 keer gelezen

Wat is GGUF kwantisatie en welk formaat moet je kiezen? Q4_K_M vormt het praktische minimum, terwijl Q5_K_M en Q6_K vrijwel niet te onderscheiden zijn van het origineel en Q8_0 vooral nuttig is wanneer VRAM geen rol speelt. In mijn overzicht over lokale AI modellen leg ik de basisprincipes uit, maar hieronder zet ik alle harde metingen op een rij.

Status per 17 oktober 2026

  • Officiële GGUF-bestanden van Bielik v3.0 worden gepubliceerd door SpeakLeash op Hugging Face (organisatie speakleash). Licentie: Apache 2.0, commercieel gebruik toegestaan.
  • De 1.5B repository bevat alleen F16 en Q8_0; de 4.5B repository alleen F16 en Q8_0; 11B biedt Q4_K_M, Q5_K_M, Q6_K, Q8_0, BF16 en F16.
  • De test voerde ik uit met llama.cpp met CUDA (build 11194 van 26 september). De recentste llama.cpp release is 0.7.0 van 15 oktober. Licentie: MIT.
  • In Ollama heeft Bielik 11B v3.0 geen standaardtag; je moet expliciet een variant kiezen, bijvoorbeeld :Q4_K_M.

Wat te kiezen: het overzicht in het kort

  • Q4_K_M: De kleinste variant waarbij tekstkwaliteit niet merkbaar instort. Een 11B-model in Q4_K_M is 6,72 GB groot en voorspelt in 94,1% van de gevallen exact hetzelfde token als Q8_0.
  • Q5_K_M en Q6_K: De beste balans als je grafische geheugen het toelaat. Het verschil in perplexity ten opzichte van Q8_0 valt binnen de meetfout.
  • Q8_0: Vrijwel identiek aan het origineel (96,7% tokengelijkheid met F16 bij het 1.5B-model), maar bijna dubbel zo zwaar als Q4_K_M en een stuk langzamer in generatie.
  • Q3_K_M en lager: Alleen geschikt als noodoplossing bij grote modellen. Een klein 1.5B-model in Q2_K stort volledig in (0 van de 12 taken succesvol).
  • Een groter model in Q4 presteert beter dan een kleiner model in Q8. Bielik 11B in Q3_K_M (5,40 GB) loste 11 van de 12 taken op, terwijl Bielik 4.5B in Q8_0 (5,06 GB) bleef steken op 5 van de 12.

Wat is GGUF?

GGUF is een binair bestandsformaat ontwikkeld door ggml-org (de makers van llama.cpp) en is in gebruik sinds augustus 2023. Één bestand bevat zowel de modelgewichten als de benodigde metadata: modelarchitectuur, tokenizer, chatsjabloon en de maximale contextlengte. Daardoor laad je hetzelfde bestand in llama.cpp, in programma’s zoals beschreven in mijn vergelijking tussen Ollama vs LM Studio, of via interfaces zoals Open WebUI.

De officiële specificatie hanteert een vaste naamstructuur: Naam-Grootte-Finewash-Versie-Codering.gguf. Bij een bestand als Bielik-11B-v3.0-Instruct.Q4_K_M.gguf geeft het laatste deel aan welke kwantisatie is toegepast.

Wat betekent GGUF kwantisatie: Q4_K_M, Q6_K, Q8_0, F16 en IQ

Kwantisatie betekent dat de gewichten van het model worden opgeslagen met minder bits per gewicht. Het ongecomprimeerde origineel bewaart elk gewicht in 16 bits (F16 of BF16). Q8_0 brengt dit terug naar ongeveer 8,5 bits, en Q4_K_M gebruikt minder dan 5 bits. Hierdoor wordt het bestand compacter, past het in minder VRAM en genereert het sneller omdat het geheugenkanaal van de videokaart minder data hoeft te verplaatsen.

Type Bits per gewicht Omschrijving
F16 / BF16 16 Zonder kwantisatie, referentiepunt
Q8_0 8,5 Blokken van 32 gewichten, lineaire schaal
Q6_K 6,56 k-quant, superblokken van 256 gewichten
Q5_K_M 5,70 Q5_K, belangrijkere tensors in Q6_K
Q4_K_M 4,89 Q4_K, helft van attn_v en ffn_down in Q6_K
Q3_K_M 4,00 Q3_K, deel van de tensors in Q4_K
IQ4_XS, IQ3, IQ2 2,4-4,5 i-quants, niet-lineaire grids, vaak met imatrix

De exacte bits per gewicht zijn afkomstig uit de officiële documentatie van llama-quantize (gemeten op Llama 3.1 8B). De letter K staat voor k-quants: gewichten worden verdeeld in superblokken van 256, waarbij ook de schaalfactoren worden gecomprimeerd. De toevoegingen _S, _M, _L slaan op gemengde precisie: bij Q4_K_M krijgen de meest gevoelige tensors een hogere resolutie (Q6_K). IQ duidt op nieuwere niet-lineaire methoden. Een imatrix (belangrijkheidsmatrix) berekent via een tekstfragment welke gewichten cruciaal zijn om afrondingsfouten te minimaliseren.

Mijn metingen op de RTX 4090

Op 17 oktober 2026 heb ik alle formaten gemeten op mijn eigen pc met een RTX 4090 24 GB, Intel i9-14900KF, 64 GB RAM en Windows 11. Ik gebruikte llama.cpp met CUDA, waarbij het volledige model op de videokaart werd geladen.

  • Bestanden: Officiële F16 en Q8_0 van Bielik 1.5B v3.0 en Q8_0 van 4.5B en 11B via speakleash op Hugging Face (met geverifieerde sha256-hashes). Overige varianten genereerde ik via llama-quantize (1.5B vanuit F16, 4.5B en 11B vanuit Q8_0 vanwege mijn downloadlimiet van 5 GB). Voor 11B testte ik ook de officiële Q4_K_M via Ollama.
  • Perplexity en tokengelijkheid: Gemeten met llama-perplexity bij een contextlengte van 2048 op een literaire prozatekst van Zofia Nałkowska (circa 7900 woorden, publiek domein). Gelijkheid toont het percentage tokens waarbij het meest waarschijnlijke token overeenkomt met de basisversie (F16 bij 1.5B, Q8_0 bij 4.5B en 11B).
  • Snelheid: Gemeten via llama-bench, generatie van 128 tokens, gemiddelde van 3 herhalingen.
  • VRAM: Toename in nvidia-smi tijdens het draaien van llama-server met context 4096.
  • Taken: Een praktijktest van 12 korte opdrachten met één exact antwoord (grammatica, correctie, rekenen, JSON, getallen voluit schrijven), temperatuur 0.

Bielik 1.5B: de volledige ladder van F16 tot Q2_K

Variant Bestandsgrootte Perplexity Gelijkheid F16
F16 3,20 GB 51,04 Basis
Q8_0 1,70 GB 51,08 96,7%
Q6_K 1,31 GB 50,86 93,2%
Q5_K_M 1,14 GB 51,64 90,1%
Q4_K_M 0,97 GB 54,27 83,6%
Q4_K_M + imatrix 0,97 GB 52,21 88,1%
IQ4_XS + imatrix 0,87 GB 53,44 85,8%
Q3_K_M 0,78 GB 68,20 67,0%
Q2_K 0,61 GB 401,80 30,9%
Bielik 1.5B: tokengelijkheid met F16, % (17.10.2026)
Q8_096,7%
Q6_K93,2%
Q5_K_M90,1%
Q4_K_M + imatrix88,1%
IQ4_XS + imatrix85,8%
Q4_K_M83,6%
Q3_K_M67,0%
Q2_K30,9%
Variant Generatie VRAM Taken
F16 216,9 tok/s 3,5 GB 5/12
Q8_0 327,4 tok/s 2,1 GB 4/12
Q6_K 368,9 tok/s 1,8 GB 6/12
Q5_K_M 365,7 tok/s 1,6 GB 7/12
Q4_K_M 422,1 tok/s 1,4 GB 6/12
Q3_K_M 376,6 tok/s 1,3 GB 3/12
Q2_K 464,0 tok/s 1,1 GB 0/12

Een model van 1.5B parameters is feitelijk te compact voor veeleisende logica, ongeacht de kwantisatie: zelfs in F16 gaf het foute antwoorden op historische feiten. In Q3_K_M werden auteursnamen verwisseld, en Q2_K herhaalde bij een jaartalvraag simpelweg continu hetzelfde getal.

Bielik 11B: van Q8_0 naar Q3_K_M

Variant Bestandsgrootte Perplexity Gelijkheid Q8_0
Q8_0 (officieel) 11,87 GB 4,74 Basis
Q6_K 9,16 GB 4,74 97,2%
Q5_K_M 7,91 GB 4,75 96,0%
Q4_K_M (officieel) 6,72 GB 4,76 94,1%
Q4_K_M (eigen van Q8_0) 6,72 GB 4,77 94,1%
Q3_K_M 5,40 GB 4,89 89,9%
Variant Generatie VRAM (4k / 32k ctx) Taken
Q8_0 67,0 tok/s 12,2 / 17,7 GB 9/12
Q6_K 84,0 tok/s 9,7 / 15,2 GB 10/12
Q5_K_M 94,9 tok/s 8,6 / 14,1 GB 10/12
Q4_K_M 108,0 tok/s 7,5 / 13,0 GB 10/12
Q3_K_M 127,3 tok/s 6,3 / 11,7 GB 11/12

De officiële Q4_K_M en mijn eigen conversie vanuit Q8_0 leverden vrijwel identieke prestaties op (108,0 vs 109,1 tok/s, beiden 10/12 op de takenlijst).

Bielik 11B: generatiesnelheid, tok/s, RTX 4090 (17.10.2026)
Q3_K_M127,3
Q4_K_M108,0
Q5_K_M94,9
Q6_K84,0
Q8_067,0

Belangrijkste inzichten uit de data

  • Tot en met Q5_K_M vallen de verschillen in perplexity binnen de meetfout (circa ±0,10 bij 11B). Pas bij Q4_K_M bij kleine modellen of Q3_K_M bij grotere modellen daalt de overeenstemming merkbaar.
  • Hoe groter het model, hoe beter het bestand is tegen kwantisatie. Q4_K_M behield bij 11B een tokengelijkheid van 94,1%, vergeleken met 83,6% bij 1.5B en 82,7% bij 4.5B.
  • Een imatrix levert gratis kwaliteitswinst: Q4_K_M met een belangmatrix steeg bij 1.5B van 83,6% naar 88,1% tokengelijkheid bij exact dezelfde bestandsgrootte.
  • Korte praktijktaken tonen weinig verschil bij 11B: scores van 9 tot 11 uit 12 weerspiegelen toevalsmarges in afzonderlijke formuleringen. Perplexity en overeenstemming van tokens geven een betrouwbaarder technisch beeld.
  • Perplexity op een bekende tekst (zoals Prus’ klassieker) kwam uit op 1,20, wat bewijst dat het model die tekst uit het hoofd kende. Vandaar dat ik een andere tekst gebruikte. Vergelijk getallen niet tussen 1.5B en 11B: door afwijkende tokenizers telt hetzelfde fragment respectievelijk 14.767 en 23.760 tokens.

Welke kwantisatie kies je per videokaart?

De getoonde VRAM-cijfers betreffen alleen het model in llama-server. Houd rekening met Windows en software op de achtergrond, die doorgaans 1 tot 2 GB VRAM opeisen.

  • 8 GB VRAM: Bielik 11B in Q3_K_M (6,3 GB bij 4096 context) of Bielik 4.5B in Q8_0 (5,3 GB). Een 11B in Q4_K_M vergt 7,5 GB en zit daarmee gevaarlijk strak op de limiet.
  • 12 GB VRAM: Bielik 11B in Q4_K_M of Q5_K_M (7,5 tot 8,6 GB), waardoor er voldoende geheugen overblijft voor langere contexten.
  • 16 GB VRAM: Bielik 11B in Q6_K (9,7 GB) of Q4_K_M met volledige 32.768 context (13,0 GB).
  • 24 GB VRAM: Bielik 11B in Q8_0 draait zelfs op 32.768 context moeiteloos (17,7 GB). Als alternatief kun je een aanzienlijk zwaarder model draaien in Q4_K_M, zoals getest in mijn analyse van Gemma 4 31B lokaal. Bekijk ook het overzicht van lokale AI vs API kosten om te zien of eigen hardware loont.

Zelf kwantisaties vergelijken: stappenplan

  1. Download llama.cpp van de officiële GitHub-pagina van ggml-org (kies voor NVIDIA de release met CUDA) en pak dit uit in bijvoorbeeld D:\llama-cuda.
  2. Download 2 of 3 kwantisaties van hetzelfde model naar één map via de Hugging Face CLI: hf download speakleash/Bielik-11B-v3.0-Instruct-GGUF Bielik-11B-v3.0-Instruct.Q4_K_M.gguf --local-dir D:\modele.
  3. Controleer de integriteit via Get-FileHash D:\modele\*.gguf en vergelijk de sha256-hash met de repository.
  4. Plaats een UTF-8 tekstbestand met enkele duizenden woorden klaar dat het model niet uit zijn trainingsdata kent.
  5. Voer het onderstaande PowerShell-script uit om snelheid en perplexity automatisch naar een tabel en CSV weg te schrijven.

PowerShell benchmarkscript: porownaj-kwantyzacje.ps1

Getest op 17 oktober met twee Bielik 1.5B-bestanden. Op de processor alleen (-Warstwy 0) gaf Q4_K_M een perplexity van 54,31 tegenover 54,27 op de GPU.

# porownaj-kwantyzacje.ps1 - porównanie kwantyzacji GGUF w llama.cpp (
# Dla każdego pliku .gguf w folderze: rozmiar, szybkość (llama-bench: prompt 512 i generowanie 128 tokenów, 3 powtórzenia)
# i opcjonalnie perplexity na Twoim pliku tekstowym (llama-perplexity, kontekst 2048). Wynik: tabela + plik CSV.
#
# Użycie (PowerShell):
#   powershell -ExecutionPolicy Bypass -File .\porownaj-kwantyzacje.ps1 -Modele D:\modele -Llama D:\llama-cuda -Tekst D:\tekst.txt
# -Modele  folder z plikami .gguf (różne kwantyzacje tego samego modelu)
# -Llama   folder z llama-bench.exe i llama-perplexity.exe (paczka llama.cpp z GitHuba ggml-org, wersja CUDA dla kart NVIDIA)
# -Tekst   (opcjonalnie) plik .txt w UTF-8, najlepiej 5-20 tysięcy słów po polsku; bez niego tylko szybkość
# -Warstwy (opcjonalnie) ile warstw na GPU, domyślnie 99 = wszystkie
param(
    [Parameter(Mandatory = $true)][string]$Modele,
    [Parameter(Mandatory = $true)][string]$Llama,
    [string]$Tekst = "",
    [int]$Warstwy = 99
)
$ErrorActionPreference = "Continue"   # llama.cpp pisze logi na stderr - "Stop" w PowerShell 5.1 przerwałby skrypt
$bench = Join-Path $Llama "llama-bench.exe"
$ppl = Join-Path $Llama "llama-perplexity.exe"
if (-not (Test-Path $bench)) { throw "Nie ma $bench - podaj folder z rozpakowanym llama.cpp w -Llama" }
$pliki = Get-ChildItem -Path $Modele -Filter *.gguf | Sort-Object Length -Descending
if ($pliki.Count -eq 0) { throw "W folderze $Modele nie ma plików .gguf" }
if ($Tekst -and -not (Test-Path $Tekst)) { throw "Nie ma pliku tekstowego $Tekst" }

$wyniki = @()
foreach ($p in $pliki) {
    Write-Host "== $($p.Name)" -ForegroundColor Cyan
    $w = [ordered]@{ Plik = $p.Name; GB = [math]::Round($p.Length / 1e9, 2); Prompt_tok_s = ""; Generowanie_tok_s = ""; Perplexity = "" }

    # 1. Szybkość: llama-bench zwraca JSON (jedna pozycja dla pp512, druga dla tg128)
    $json = & $bench -m $p.FullName -p 512 -n 128 -r 3 -ngl $Warstwy -o json 2>$null | Out-String
    $start = $json.IndexOf("[")
    if ($start -ge 0) {
        foreach ($e in ($json.Substring($start) | ConvertFrom-Json)) {
            if ($e.n_prompt -gt 0) { $w.Prompt_tok_s = [math]::Round($e.avg_ts, 1) } else { $w.Generowanie_tok_s = [math]::Round($e.avg_ts, 1) }
        }
    } else { Write-Host "llama-bench nie zwrócił wyniku (za mało VRAM? spróbuj -Warstwy 20)" -ForegroundColor Yellow }

    # 2. Perplexity (im niżej, tym lepiej; porównuj tylko pliki tego samego modelu na tym samym tekście)
    if ($Tekst) {
        $log = & $ppl -m $p.FullName -f $Tekst -c 2048 -ngl $Warstwy 2>&1 | Out-String
        $m = [regex]::Match($log, "Final estimate: PPL = ([\d.]+)")
        if ($m.Success) { $w.Perplexity = [double]::Parse($m.Groups[1].Value, [Globalization.CultureInfo]::InvariantCulture) }
        else { Write-Host "llama-perplexity: brak wyniku (tekst za krótki? potrzeba min. ok. 4100 tokenów)" -ForegroundColor Yellow }
    }
    $wyniki += [pscustomobject]$w
    Writ

Wie Ollama gebruikt, hoeft niets handmatig te converteren: het commando ollama run SpeakLeash/bielik-11b-v3.0-instruct:Q4_K_M downloadt exact dezelfde gewichten als de Hugging Face repository (gecontroleerd via de sha256-hash van de modellaag).

Veelgestelde vragen

Wat is een GGUF bestand precies?

Het is een binair bestandsformaat ontworpen voor llama.cpp en afgeleide tools zoals LM Studio en Ollama. Alle modelgewichten, tokenizers en chatsjablonen zitten in één enkel bestand samengevoegd. Daardoor zijn er geen losse configuratiebestanden nodig om direct lokaal te kunnen draaien.

Wat doet kwantisatie met een AI model?

Kwantisatie comprimeert gewichten van 16-bits floating point naar bijvoorbeeld 4 tot 8 bits. Het model neemt tot driemaal minder VRAM in beslag en genereert tekst aanzienlijk sneller door een lagere belasting op de geheugenbandbreedte. In mijn metingen versnelde Bielik 11B van 67,0 tok/s in Q8_0 naar 108,0 tok/s in Q4_K_M.

Is Q4_K_M altijd sneller dan Q8_0?

Ja, doordat er per tokengeneratie veel minder bytes over de geheugenbus van de videokaart gestuurd hoeven te worden. Bij Bielik 11B steeg de snelheid op een RTX 4090 van 67,0 tokens per seconde bij Q8_0 naar 108,0 tokens per seconde bij Q4_K_M. Het VRAM-verbruik daalde gelijktijdig van 12,2 GB naar 7,5 GB.

Moet ik kiezen voor Q4_K_M of Q8_0?

Als het model in Q8_0 inclusief je gewenste contextlengte ruim binnen je VRAM past, kies je Q6_K of Q8_0 voor maximale precisie. Zit je krap, neem dan Q4_K_M van een groter model in plaats van Q8_0 van een kleine variant. Het perplexity-verschil bij Bielik 11B was met 4,76 tegenover 4,74 nagenoeg verwaarloosbaar.

Waar download ik betrouwbare GGUF bestanden?

Download uitsluitend via officiële accounts op Hugging Face, zoals de organisatie speakleash, of via geverifieerde Ollama libraries. Er circuleren veel re-uploads van derden met onjuiste chatsjablonen of verouderde conversies. Controleer na het downloaden altijd de sha256-checksum met de repository.

Google · Jouw bronnenHoger in Google - met één klikToevoegen aan voorkeursbronnen →

Bronnen

Gecontroleerd op 17 oktober 2026.

Kinetyra

// read next

More on this from HELDER

Helder

Helder

ADMINISTRATOR
lees ookHiggsfield Canvas, Relight en Angles: gids voor 2026ai-toolsHiggsfield Canvas, Relight en Angles: gids voor 2026Higgsfield biedt meer dan alleen tekst-naar-video prompts.

Meest gelezen

  1. 1Anthropics biolab ontdekt nieuw enzym via bijna 950 Claude-agents
  2. 2Meta onthult sleutelhanger-apparaatje met AI-assistent Muse
  3. 3OpenAI richt wiskundeadviesgroep op na oplossen van meer dan 100 open problemen
// sitemap
helder in cijfers 0teksten in archief0nieuwsberichten van de afgelopen 7 dagen0videomodellen in observatorium
× ‹ vergroting ›