Quality-first GGUF quants of OrionLLM/GRM-2.6-Plus-0628
Source model: https://huggingface.co/OrionLLM/GRM-2.6-Plus-0628
These quants were produced by my experimental tool, niki-allocator. The main difference of my method is per-tensor type allocation (not per tensor groups, layers, community lore etc.) Each tensor gets what is predicted to be best for it.
The tool is under active development and testing, and has not been published yet.
Quantization quality comparison
To prove my method I've performed comparison with quants from other providers:
Quants for comparison were downloaded on August 4, 2026.
Lower is better
Sizes
My quant sizes were chosen to fill 8500-23000 MiB with geometric progression and rounded to 100 MiB.
No special size choosing was performed (there may be exact sizes that are better, but they are left on the table due to hardware constraints).
niki-allocator is able to produce allocation with ~1 MiB precision.
Which one to choose?
The bigger - the better. So it is always a compromise of what you can afford considering context size and other constraints. Choose the biggest you can fit.
Quant names
Hugging Face requires quant type in the filename to properly show it. But all my quants are mixed by design. I decided to include dominating quant type (by size, not by tensor count) to the name therefore. It may easily be less than 50% of the model though. So choose by size, ignore listed quant type. For my quants: bigger --> better. Always.
Methodology
niki-allocator
It is quality-first per-tensor quantization allocator for llama.cpp quantize.
Allocator decides, per tensor, which quant type to use so that the resulting GGUF hits an exact target file size with the best estimated quality. It is not direct measurement of KLD-metrics, it is only estimation. But as you can see from real KLD evaluations estimation is good enough. Raw results are already good. But I added some calibration levers on top to make it better (for Qwen3.5-0.8B I used uncalibrated estimation). These levers need series of KLD evaluations to move estimation closer to reality.
niki-allocator is work in progress. Not published yet.
Corpora
- imatrix: niki-small corpus - ~330K tokens from my own agentic sessions (English, Russian, code, reasoning). Deduped, cleaned, filtered by simhash similarity to include only really different turns, short turns (less than 16K chars) dropped. Used for imatrix only.
- Calibration of niki-allocator and evaluation: niki-small-plus corpus - ~405K tokens from my own agentic sessions (English, Russian, code, reasoning). Deduped, cleaned, filtered by simhash similarity to include only really different turns, short turns (less than 12K chars) dropped. Does not include any exact or similar (by simhash) agentic turns from niki-small.
- Independent evaluation: wikitext-2 test corpus - ~290 K tokens standard corpus. It wasn't seen during calibration or imatrix at all. Only for final evaluation before publishing. So my quants are not anyhow tuned for this dataset.
Chunk sizes
- imatrix (niki-small): 8064 tokens (384 x 21). To catch reasoning and long turn traces, not just basic chat.
- niki-small-plus evaluation: 6144 tokens (384 x 16). 66 chunks total. To catch reasoning and long turns, but to keep chunks amount somewhat reasonable (that's why lower than for imatrix).
- wikitext-2 test evaluation: 768 tokens (384 x 2). 386 chunks total. It is not directly comparable with popular 512 tokens chunks! Why 384 magic number? My hardware is fastest with ubatch 384, so I use it.
Metrics
All metrics were evaluated with llama-perplexity against Q8_0 standard quant (without imatrix) due to hardware constraints.
Quantization was performed with patched llama-quantize from BF_16 source. Fully compatible with original llama.cpp.
All my and foreign quants were evaluated against the same base.
llama.cpp commit 876a4321163249c43ca4e986818fab5ab081f282.
The main metric during calibration of niki-allocator was mean KLD. Also I used p95 KLD, PPL and same top p as secondary metrics.
Better PPL doesn't always mean better other more important metrics. So it can't be used as a main metric (some people still use). It is just fast indicator (no need for logits base) to check for big problems.
Why not p99 KLD, p99.9 KLD, max KLD?
With such a small corpus (well, almost everybody seems to use wikitext-2 test with only 290K tokens) these metrics are not very robust. While p99 KLD can give some plausible comparison for the allocation method as a whole (that's why I include graphs of it), p99.9 is essentially a corpus-driven noise (too little data), max KLD is just random at any corpus size (one hardest token of the whole dataset, saying nothing about other hard tokens). Please correct me if I am wrong.
Evaluation results
niki-small-plus corpus
| Source | Label | Size, MiB | Mean KLD | KLD p95 | KLD p99 | Same top p, % | RMS Δp | PPL |
|---|---|---|---|---|---|---|---|---|
| NikiKrutan | 8500 | 8500 | 0.16336 ± 0.00156 | 0.4630 | 1.0342 | 84.84 | 11.246 | 3.962 ± 0.018 |
| bartowski | IQ2_XXS | 8958 | 0.24023 ± 0.00166 | 0.7365 | 1.5244 | 81.40 | 13.941 | 4.166 ± 0.020 |
| NikiKrutan | 9100 | 9100 | 0.13620 ± 0.00150 | 0.3760 | 0.8315 | 86.48 | 9.991 | 3.872 ± 0.018 |
| bartowski | IQ2_XS | 9524 | 0.18367 ± 0.00158 | 0.5390 | 1.1492 | 83.73 | 11.947 | 3.993 ± 0.018 |
| NikiKrutan | 9700 | 9700 | 0.10862 ± 0.00152 | 0.2716 | 0.6234 | 88.28 | 8.772 | 3.815 ± 0.018 |
| bartowski | IQ2_S | 9818 | 0.16738 ± 0.00153 | 0.4837 | 1.0371 | 84.44 | 11.354 | 3.963 ± 0.018 |
| bartowski | IQ2_M | 10370 | 0.13203 ± 0.00150 | 0.3586 | 0.7848 | 86.44 | 9.988 | 3.854 ± 0.018 |
| DAXZEIT | IQ2_M | 10381 | 0.13898 ± 0.00152 | 0.3768 | 0.8570 | 86.17 | 10.255 | 3.918 ± 0.018 |
| NikiKrutan | 10400 | 10400 | 0.08689 ± 0.00137 | 0.2031 | 0.4496 | 89.61 | 7.912 | 3.727 ± 0.017 |
| NikiKrutan | 11100 | 11100 | 0.07554 ± 0.00131 | 0.1663 | 0.3754 | 90.47 | 7.409 | 3.717 ± 0.017 |
| bartowski | Q2_K | 11291 | 0.12250 ± 0.00149 | 0.3356 | 0.7328 | 87.30 | 9.467 | 3.782 ± 0.018 |
| DAXZEIT | IQ3_XXS | 11416 | 0.09122 ± 0.00144 | 0.2152 | 0.5115 | 89.47 | 7.981 | 3.764 ± 0.017 |
| NikiKrutan | 11800 | 11800 | 0.07330 ± 0.00136 | 0.1472 | 0.3718 | 91.26 | 7.352 | 3.745 ± 0.017 |
| bartowski | IQ3_XXS | 12042 | 0.07901 ± 0.00130 | 0.1853 | 0.4289 | 90.23 | 7.435 | 3.727 ± 0.017 |
| bartowski | Q2_K_L | 12475 | 0.12040 ± 0.00143 | 0.3327 | 0.7324 | 87.38 | 9.422 | 3.788 ± 0.018 |
| NikiKrutan | 12700 | 12700 | 0.05371 ± 0.00129 | 0.1004 | 0.2493 | 92.81 | 5.887 | 3.647 ± 0.017 |
| bartowski | IQ3_XS | 12713 | 0.07555 ± 0.00140 | 0.1490 | 0.3727 | 91.13 | 7.416 | 3.757 ± 0.017 |
| bartowski | Q3_K_S | 13085 | 0.08678 ± 0.00142 | 0.2045 | 0.4748 | 89.79 | 7.777 | 3.722 ± 0.017 |
| bartowski | IQ3_M | 13259 | 0.07114 ± 0.00137 | 0.1356 | 0.3354 | 91.52 | 7.173 | 3.758 ± 0.017 |
| NikiKrutan | 13500 | 13500 | 0.04232 ± 0.00119 | 0.0646 | 0.1636 | 94.14 | 5.148 | 3.639 ± 0.017 |
| DAXZEIT | Q3_K_M | 13518 | 0.06439 ± 0.00134 | 0.1343 | 0.3171 | 91.72 | 6.502 | 3.654 ± 0.017 |
| bartowski | Q3_K_M | 13929 | 0.06442 ± 0.00134 | 0.1337 | 0.3187 | 91.69 | 6.528 | 3.654 ± 0.017 |
| NikiKrutan | 14500 | 14500 | 0.03408 ± 0.00110 | 0.0472 | 0.1187 | 94.89 | 4.555 | 3.603 ± 0.016 |
| bartowski | Q3_K_L | 14572 | 0.06228 ± 0.00134 | 0.1271 | 0.3014 | 91.86 | 6.313 | 3.649 ± 0.017 |
| bartowski | IQ4_XS | 14847 | 0.03282 ± 0.00104 | 0.0475 | 0.1179 | 94.89 | 4.520 | 3.606 ± 0.016 |
| NikiKrutan | 15400 | 15400 | 0.02997 ± 0.00104 | 0.0367 | 0.0956 | 95.44 | 4.205 | 3.604 ± 0.016 |
| DAXZEIT | IQ4_XS | 15455 | 0.03052 ± 0.00098 | 0.0429 | 0.1089 | 95.09 | 4.381 | 3.612 ± 0.016 |
| bartowski | IQ4_NL | 15570 | 0.03263 ± 0.00105 | 0.0464 | 0.1165 | 94.99 | 4.462 | 3.603 ± 0.016 |
| bartowski | Q3_K_XL | 15633 | 0.06151 ± 0.00133 | 0.1262 | 0.2978 | 91.99 | 6.312 | 3.649 ± 0.017 |
| bartowski | Q4_K_S | 15939 | 0.03116 ± 0.00103 | 0.0421 | 0.1047 | 95.07 | 4.341 | 3.621 ± 0.016 |
| NikiKrutan | 16500 | 16500 | 0.02805 ± 0.00106 | 0.0282 | 0.0763 | 95.99 | 4.035 | 3.597 ± 0.016 |
| DAXZEIT | Q4_K_M | 16829 | 0.02861 ± 0.00099 | 0.0384 | 0.0954 | 95.36 | 4.114 | 3.606 ± 0.016 |
| bartowski | Q4_K_M | 16949 | 0.02837 ± 0.00101 | 0.0340 | 0.0856 | 95.64 | 4.113 | 3.610 ± 0.016 |
| DAXZEIT | Q4_K_XL | 17053 | 0.02986 ± 0.00107 | 0.0347 | 0.0895 | 95.65 | 4.059 | 3.606 ± 0.016 |
| NikiKrutan | 17600 | 17600 | 0.02436 ± 0.00096 | 0.0234 | 0.0629 | 96.36 | 3.806 | 3.596 ± 0.016 |
| bartowski | Q4_K_L | 17849 | 0.02803 ± 0.00103 | 0.0329 | 0.0841 | 95.80 | 4.061 | 3.607 ± 0.016 |
| bartowski | Q5_K_S | 18769 | 0.02240 ± 0.00096 | 0.0186 | 0.0499 | 96.62 | 3.668 | 3.593 ± 0.016 |
| NikiKrutan | 18800 | 18800 | 0.01780 ± 0.00082 | 0.0150 | 0.0378 | 96.72 | 3.293 | 3.599 ± 0.016 |
| DAXZEIT | Q5_K_M | 19245 | 0.02194 ± 0.00095 | 0.0180 | 0.0485 | 96.68 | 3.511 | 3.588 ± 0.016 |
| bartowski | Q5_K_M | 19791 | 0.02078 ± 0.00093 | 0.0154 | 0.0426 | 96.92 | 3.522 | 3.595 ± 0.016 |
| NikiKrutan | 20100 | 20099 | 0.01558 ± 0.00080 | 0.0100 | 0.0281 | 97.45 | 3.019 | 3.592 ± 0.016 |
| bartowski | Q5_K_L | 20540 | 0.02061 ± 0.00094 | 0.0146 | 0.0404 | 97.08 | 3.393 | 3.596 ± 0.016 |
| NikiKrutan | 21500 | 21500 | 0.01127 ± 0.00064 | 0.0062 | 0.0169 | 97.85 | 2.647 | 3.597 ± 0.016 |
| DAXZEIT | Q6_K | 21812 | 0.01276 ± 0.00072 | 0.0073 | 0.0204 | 97.73 | 2.777 | 3.600 ± 0.016 |
| bartowski | Q6_K | 22376 | 0.01046 ± 0.00064 | 0.0056 | 0.0150 | 97.95 | 2.539 | 3.596 ± 0.016 |
| bartowski | Q6_K_L | 22963 | 0.01108 ± 0.00068 | 0.0049 | 0.0140 | 98.22 | 2.553 | 3.599 ± 0.016 |
| NikiKrutan | 23000 | 22999 | 0.00859 ± 0.00058 | 0.0042 | 0.0110 | 98.17 | 2.393 | 3.600 ± 0.016 |
wikitext-2 test corpus
| Source | Label | Size, MiB | Mean KLD | KLD p95 | KLD p99 | Same top p, % | RMS Δp | PPL |
|---|---|---|---|---|---|---|---|---|
| NikiKrutan | 8500 | 8500 | 0.19706 ± 0.00114 | 0.6827 | 1.9161 | 81.27 | 13.283 | 7.430 ± 0.048 |
| bartowski | IQ2_XXS | 8958 | 0.27865 ± 0.00146 | 0.9610 | 2.6711 | 77.74 | 16.218 | 7.890 ± 0.051 |
| NikiKrutan | 9100 | 9100 | 0.14709 ± 0.00097 | 0.5025 | 1.5054 | 84.07 | 11.255 | 7.088 ± 0.045 |
| bartowski | IQ2_XS | 9524 | 0.20801 ± 0.00118 | 0.7090 | 2.0402 | 80.91 | 13.953 | 7.485 ± 0.048 |
| NikiKrutan | 9700 | 9700 | 0.10924 ± 0.00080 | 0.3696 | 1.0950 | 86.14 | 9.676 | 6.864 ± 0.044 |
| bartowski | IQ2_S | 9818 | 0.19327 ± 0.00116 | 0.6561 | 1.9591 | 81.48 | 13.436 | 7.404 ± 0.047 |
| bartowski | IQ2_M | 10370 | 0.14089 ± 0.00095 | 0.4626 | 1.4424 | 84.05 | 11.256 | 7.062 ± 0.045 |
| DAXZEIT | IQ2_M | 10381 | 0.14538 ± 0.00099 | 0.4820 | 1.5021 | 83.88 | 11.429 | 7.151 ± 0.046 |
| NikiKrutan | 10400 | 10400 | 0.08755 ± 0.00070 | 0.2788 | 0.8767 | 87.80 | 8.687 | 6.785 ± 0.042 |
| NikiKrutan | 11100 | 11100 | 0.06856 ± 0.00063 | 0.2145 | 0.6350 | 89.13 | 7.563 | 6.709 ± 0.042 |
| bartowski | Q2_K | 11291 | 0.12709 ± 0.00093 | 0.4192 | 1.3087 | 84.83 | 10.543 | 6.979 ± 0.045 |
| DAXZEIT | IQ3_XXS | 11416 | 0.08374 ± 0.00075 | 0.2708 | 0.8688 | 87.98 | 8.489 | 6.786 ± 0.043 |
| NikiKrutan | 11800 | 11800 | 0.06066 ± 0.00064 | 0.1909 | 0.5991 | 90.15 | 7.068 | 6.723 ± 0.042 |
| bartowski | IQ3_XXS | 12042 | 0.07802 ± 0.00075 | 0.2506 | 0.8267 | 88.39 | 8.151 | 6.769 ± 0.043 |
| bartowski | Q2_K_L | 12475 | 0.12366 ± 0.00089 | 0.4080 | 1.2562 | 85.06 | 10.383 | 6.967 ± 0.045 |
| NikiKrutan | 12700 | 12700 | 0.04015 ± 0.00049 | 0.1288 | 0.3911 | 91.76 | 5.595 | 6.607 ± 0.042 |
| bartowski | IQ3_XS | 12713 | 0.05798 ± 0.00057 | 0.1824 | 0.5622 | 90.22 | 6.925 | 6.598 ± 0.041 |
| bartowski | Q3_K_S | 13085 | 0.06524 ± 0.00062 | 0.2084 | 0.6422 | 89.03 | 7.309 | 6.702 ± 0.043 |
| bartowski | IQ3_M | 13259 | 0.05359 ± 0.00056 | 0.1660 | 0.5276 | 90.67 | 6.711 | 6.658 ± 0.042 |
| NikiKrutan | 13500 | 13500 | 0.02801 ± 0.00047 | 0.0846 | 0.2696 | 93.18 | 4.619 | 6.563 ± 0.042 |
| DAXZEIT | Q3_K_M | 13518 | 0.04490 ± 0.00052 | 0.1413 | 0.4390 | 91.15 | 6.034 | 6.554 ± 0.042 |
| bartowski | Q3_K_M | 13929 | 0.04566 ± 0.00055 | 0.1431 | 0.4462 | 91.01 | 6.040 | 6.552 ± 0.042 |
| NikiKrutan | 14500 | 14500 | 0.01944 ± 0.00033 | 0.0580 | 0.1849 | 94.31 | 3.864 | 6.493 ± 0.041 |
| bartowski | Q3_K_L | 14572 | 0.04309 ± 0.00052 | 0.1340 | 0.4157 | 91.25 | 5.864 | 6.554 ± 0.042 |
| bartowski | IQ4_XS | 14847 | 0.01921 ± 0.00039 | 0.0559 | 0.1826 | 94.34 | 3.835 | 6.487 ± 0.041 |
| NikiKrutan | 15400 | 15400 | 0.01605 ± 0.00040 | 0.0454 | 0.1486 | 95.02 | 3.474 | 6.454 ± 0.041 |
| DAXZEIT | IQ4_XS | 15455 | 0.01785 ± 0.00043 | 0.0512 | 0.1667 | 94.55 | 3.646 | 6.456 ± 0.041 |
| bartowski | IQ4_NL | 15570 | 0.01821 ± 0.00034 | 0.0540 | 0.1758 | 94.43 | 3.733 | 6.466 ± 0.041 |
| bartowski | Q3_K_XL | 15633 | 0.04185 ± 0.00051 | 0.1308 | 0.4029 | 91.46 | 5.752 | 6.548 ± 0.042 |
| bartowski | Q4_K_S | 15939 | 0.01723 ± 0.00038 | 0.0486 | 0.1626 | 94.62 | 3.656 | 6.468 ± 0.041 |
| NikiKrutan | 16500 | 16500 | 0.01271 ± 0.00040 | 0.0335 | 0.1101 | 95.61 | 2.981 | 6.419 ± 0.041 |
| DAXZEIT | Q4_K_M | 16829 | 0.01500 ± 0.00038 | 0.0419 | 0.1357 | 95.01 | 3.405 | 6.455 ± 0.041 |
| bartowski | Q4_K_M | 16949 | 0.01407 ± 0.00034 | 0.0391 | 0.1268 | 95.12 | 3.295 | 6.455 ± 0.041 |
| DAXZEIT | Q4_K_XL | 17053 | 0.01406 ± 0.00036 | 0.0398 | 0.1308 | 95.32 | 3.308 | 6.465 ± 0.041 |
| NikiKrutan | 17600 | 17600 | 0.01036 ± 0.00034 | 0.0259 | 0.0867 | 96.08 | 2.735 | 6.421 ± 0.041 |
| bartowski | Q4_K_L | 17849 | 0.01398 ± 0.00040 | 0.0380 | 0.1259 | 95.31 | 3.268 | 6.451 ± 0.041 |
| bartowski | Q5_K_S | 18769 | 0.00801 ± 0.00028 | 0.0195 | 0.0649 | 96.46 | 2.531 | 6.429 ± 0.041 |
| NikiKrutan | 18800 | 18800 | 0.00683 ± 0.00021 | 0.0172 | 0.0535 | 96.42 | 2.266 | 6.418 ± 0.041 |
| DAXZEIT | Q5_K_M | 19245 | 0.00753 ± 0.00030 | 0.0178 | 0.0586 | 96.60 | 2.364 | 6.424 ± 0.041 |
| bartowski | Q5_K_M | 19791 | 0.00717 ± 0.00032 | 0.0162 | 0.0544 | 96.73 | 2.311 | 6.432 ± 0.041 |
| NikiKrutan | 20100 | 20099 | 0.00464 ± 0.00022 | 0.0105 | 0.0340 | 97.41 | 1.834 | 6.408 ± 0.040 |
| bartowski | Q5_K_L | 20540 | 0.00639 ± 0.00025 | 0.0152 | 0.0521 | 97.03 | 2.189 | 6.429 ± 0.041 |
| NikiKrutan | 21500 | 21500 | 0.00287 ± 0.00024 | 0.0062 | 0.0201 | 97.82 | 1.512 | 6.405 ± 0.040 |
| DAXZEIT | Q6_K | 21812 | 0.00326 ± 0.00020 | 0.0066 | 0.0211 | 97.70 | 1.582 | 6.408 ± 0.041 |
| bartowski | Q6_K | 22376 | 0.00258 ± 0.00013 | 0.0056 | 0.0174 | 97.87 | 1.415 | 6.404 ± 0.040 |
| bartowski | Q6_K_L | 22963 | 0.00232 ± 0.00024 | 0.0049 | 0.0168 | 98.21 | 1.255 | 6.401 ± 0.040 |
| NikiKrutan | 23000 | 22999 | 0.00223 ± 0.00021 | 0.0047 | 0.0150 | 98.04 | 1.271 | 6.399 ± 0.040 |
MTP
I've tested MTP performance and discovered that there is no point to keep MTP head higher than IQ4_XS. Q3_K is near but slightly worse (used for lower quants). Exact allocation of IQ4_XS/Q3_K is chosen by allocator (not pinned). Lower than that there is considerable quality drop, so not used in my quants.
| MTP type | MTP size, MiB | pred_t/s | accept rate | mean len |
|---|---|---|---|---|
| — (no MTP) | — | 28.71 | n/a | 1.0 |
| IQ3_S | 172.2 | 48.61 | 0.9584 | 3.69 |
| Q3_K | 172.2 | 50.37 | 0.9597 | 3.95 |
| IQ4_XS | 216.8 | 52.63 | 0.9640 | 4.04 |
| Q4_0 | 227.9 | 51.47 | 0.9715 | 4.00 |
| Q4_K | 227.9 | 51.68 | 0.9569 | 4.07 |
| Q5_K | 279.2 | 51.46 | 0.9732 | 4.00 |
| Q6_K | 332.4 | 51.56 | 0.9743 | 4.03 |
| Q8_0 | 430.5 | 50.55 | 0.9755 | 4.02 |
Speculation parameters: --spec-draft-n-max 5 --spec-draft-p-min 0.8.
Standard llama.cpp speed-bench with all 11 categories x 5 samples, osl 128, concurrency 1, temperature 0.
GPUs: 2 x 5060Ti
Chat template
Chat template included with gguf's is v16 from here: https://huggingface.co/Moore2877/Qwen-Fixed-Chat-Templates-llamacpp
I believe it is good.
Multimodality
It works fine with original Qwen mmproj. I use this one: https://huggingface.co/DAXZEIT/Qwen3.6-27B-mmproj-hybrid-Q8_0-F16-gguf