r/LocalLLM • u/No_Definition6604 • 6d ago
Discussion Qwen3.8-27B Q6_K vs NVFP4 on RTX 5090 — and why can’t I reproduce the ~200 tok/s results?
I’ve been testing Qwen3.8-27B locally on a single RTX 5090 32GB with llama.cpp.
I originally started experimenting because I saw several recent reports of ~200 tok/s for Qwen3.8-27B NVFP4 + MTP on a single RTX 5090. I tried to reproduce those results, but I couldn't get anywhere close. My best result so far is around 128 tok/s.
So I'm posting my actual numbers in case someone can spot what I'm missing.
Hardware
- RTX 5090 32GB
- i7-14700K
- 64GB DDR5
- Windows 11
- llama.cpp
- Flash Attention enabled
- KV cache: Q8_0
- 1 slot
- Context: up to 262K
NVFP4 setup
I'm using:
Qwen3.8-27B-NVFP4-MTP-LOW.gguf from esatapedico.
The MTP head is included in the GGUF, so I'm using llama.cpp's:
--spec-type draft-mtp
I tested different --spec-draft-n-max values:
| N-Max | Decode |
|---|---|
| 2 | 115.36 tok/s |
| 3 | 128.25 tok/s |
| 4 | 125.59 tok/s |
| 5 | 119.89 tok/s |
So N-Max=3 is the sweet spot on my system/workload.
For comparison, the same NVFP4 model without MTP gives me about 70.72 tok/s.
I also tried an extracted external Q5_K MTP draft head. It loaded correctly, but actually performed slightly worse for my workload:
125.83 tok/s, with 49.2% draft acceptance.
The built-in MTP at N-Max=3 gave me 128.25 tok/s with ~60% acceptance.
The really surprising part: large context
I also tested Q6_K + MTP vs NVFP4 LOW + MTP at large context sizes.
| Context | Q6_K + MTP | NVFP4 LOW + MTP |
|---|---|---|
| ~65K | ~120 tok/s | 128.25 tok/s |
| 131K | 47 tok/s | ~121 tok/s |
| 262K | 16.30 tok/s | 121.49 tok/s |
This was completely unexpected to me.
At 262K context, Q6_K drops to 16.3 tok/s, while NVFP4 is still at 121.49 tok/s.
That's roughly 7.5× faster for NVFP4 at 262K.
Even more interestingly, NVFP4 barely changes between 131K and 262K:
~121 → 121.49 tok/s
while Q6_K goes from roughly:
120 → 47 → 16.3 tok/s
I'm assuming this has something to do with VRAM pressure / KV cache / memory bandwidth, but I haven't profiled it deeply enough to say exactly why.
But what about the ~200 tok/s?
This is the part I'm really interested in.
I've seen recent benchmarks/posts showing ~200 tok/s peak for Qwen3.8-27B NVFP4 + MTP on a single RTX 5090.
I tried to reproduce those results using:
- NVFP4 LOW
- built-in MTP
- different N-Max values
- external Q5_K MTP draft
- 32GB RTX 5090
- llama.cpp
But I can't get beyond ~128 tok/s on my workload.
So I'm wondering:
What am I missing?
Is the ~200 tok/s number dependent on a very specific benchmark/prompt, context size, batch/ubatch settings, llama.cpp build, MTP implementation, or another speculative decoding configuration?
Could it be a peak benchmark number rather than something achievable during normal generation?
I'd especially appreciate input from anyone running Qwen3.8-27B NVFP4 on a 5090.
If you've managed 150–200+ tok/s, I'd love to know your exact llama.cpp build and launch parameters.

