RedditPP Mascot

RedditPP

r/unsloth • … • u/danielhanchen

Q8_K_XL vs MXFP4 naming for DeepSeek V4 Flash 0731

Hey folks - for folks asking:

1. Why did we name the MXFP4 quant "Q8\_K\_XL" and not MXFP4 2. Why other folks' "lossless" quants are 155GB vs our Q8\_K\_XL at 162GB 3. Is FP8 and Q8\_0 equivalent?

**FP8 and Q8\_0 are NOT bitwise equivalent** \- we checked the RMSE and it's not 0 at all. We did KLD on Q4\_K\_XL (the 155GB one other folks ship), and it's **96% top-1% agreement**, so it's NOT lossless. llama.cpp does not have a native FP8 data-type, so BF16 is a must.

We could have named it MXFP4, but Q8\_K\_XL is the correct naming convention - we thought of BF16, but that's wrong. Also it's not all MXFP4, but MXFP4 + FP8

So when you see other people's quants at 155GB - this is **not lossless** and if they communicate that it's lossless - this is wrong. Converting FP8 to Q8\_0 is not a lossless operation but lossy.

Quants at [https://huggingface.co/unsloth/DeepSeek-V4-Flash-0731-GGUF](https://huggingface.co/unsloth/DeepSeek-V4-Flash-0731-GGUF) Full KLD table:

|Quant|size GB|mean KLD|KLD 99%|KLD 99.9%|PPL|top-1 %| |:-|:-|:-|:-|:-|:-|:-| |UD-IQ1\_S|82.5|0.66155|6.5134|11.3667|8.0932|72.30| |UD-IQ1\_M|86.9|0.58962|6.0813|10.4555|7.7384|74.08| |UD-IQ2\_XXS|90.9|0.48487|5.3472|9.7837|7.0909|76.60| |UD-IQ2\_M|90.9|0.48388|5.3461|9.7245|7.0894|76.56| |UD-Q2\_K\_XL|96.8|0.40766|4.7839|9.0557|6.6782|78.57| |UD-IQ3\_XXS|104.2|0.30789|3.8147|7.7732|6.1972|81.93| |UD-IQ3\_S|116.1|0.26895|3.4845|7.3190|6.0266|83.06| |UD-Q3\_K\_M|128.1|0.15734|2.1807|4.9571|5.7028|87.06| |UD-Q3\_K\_XL|128.2|0.15751|2.1456|4.9708|5.7085|87.05| |UD-IQ4\_XS|136.7|0.11525|1.5929|3.9121|5.5522|88.79| |UD-IQ4\_NL|136.7|0.11525|1.5929|3.9121|5.5522|88.79| |UD-Q4\_K\_XL|155.1|0.01324|0.1675|0.5512|5.3380|96.04| |UD-Q8\_K\_XL|161.9|\-0.00000|0.0000|0.0001|5.3322|100.00|

**Note** UD-IQ3\_XXS has been updated to reduce max KLD, and also some 3-bit quants are smaller in size now. This is an actually rare problem, but the IQ2\_S grid used in IQ3\_XXS was much worse than even IQ1\_S for quantization, hence the high max KLD yet lower median KLD. We swapped out IQ2\_S for a smaller IQ2\_XS grid and it works well now

— 0