Qwen3.8-27B-MixedInt4-AutoRound — Optimized for a Single DGX Spark

Hi everyone,

Qwen3.8-27B is release, and I’ve quantized it with AutoRound with one main goal:

Preserve as much of the original model quality as possible while significantly improving inference speed and reducing memory usage.

The result is:

Qwen3.8-27B-MixedInt4-AutoRound [20.8 GB]

This model looks particularly well suited for single DGX Spark users.

It uses a mixed 4-bit quantization scheme, specifically adjusted so that it can run smoothly with vLLM despite using mixed precision across the model.

MTP has also been quantized and is included in the release.

Model:
https://huggingface.co/Pilcothink/Qwen3.8-27B-MixedInt4-AutoRound

vLLM performance benchmarking:
https://github.com/eugr/llama-benchy

vLLM quality / tool evaluation:
https://github.com/SeraphimSerapis/tool-eval-bench.git

vllm recipe

vllm serve /workspace/Model/Qwen3.8-27B-MixedInt4-AutoRound  \
  --host 0.0.0.0 --port 8000 \
  --gpu-memory-utilization 0.9 \
  --trust-remote-code \
  --tensor-parallel-size 1 \
  --reasoning-parser qwen3 \
  --tool-call-parser qwen3_coder \
  --enable-auto-tool-choice \
  --enable-prefix-caching \
  --max-model-len 1010000 \
  --max-num-batched-tokens 8192 \
  --hf-overrides '{"text_config": {"max_position_embeddings": 1010000}}' \
  --kv-cache-dtype fp8 \
  --max-num-seqs 10 \
  --speculative-config '{"method":"mtp","num_speculative_tokens":3}'

Quantization Recovery

More comprehensive recovery testing is currently underway.

I plan to upload 7 objective evaluation metrics to the Hugging Face model card so that the quantized model can be compared directly against the original Qwen3.8-27B.

Current MMLU result:

Benchmark Metric Qwen3.8-27B Qwen3.8-27B-MixedInt4-AutoRound Difference Recovery Rate
MMLU acc 83.49% 82.92% -0.57 pp 99.32%

MMLU category breakdown:

MMLU Category Qwen3.8-27B Qwen3.8-27B-MixedInt4-AutoRound Difference Recovery Rate
Humanities 77.39% 76.71% -0.68 pp 99.12%
Other 86.03% 85.65% -0.38 pp 99.56%
Social Sciences 90.74% 90.41% -0.33 pp 99.64%
STEM 83.03% 82.21% -0.82 pp 99.01%

So far, the overall MMLU recovery rate is 99.32%, with only a 0.57 percentage-point drop compared with the original model.

Additional benchmarks are currently running.


vLLM Serving

Current vLLM KV-cache result on a single DGX Spark:

(EngineCore pid=339) INFO 08-15 02:16:18 [kv_cache_utils.py:1882]
GPU KV cache size: 2,561,684 tokens,
Maximum concurrency for 1,010,000 tokens per request: 2.54x

In other words, the model can be served with a 1,010,000-token maximum context length while still retaining a very large KV cache on a single Spark.


Performance

Benchmark command:

llama-benchy ^
  --base-url http://127.0.0.1:8000/v1 ^
  --model /workspace/AI_Model/Qwen3.8-27B-MixedInt4-AutoRound ^
  --tg 1024 ^
  --depth 0 4096 8192 ^
  --concurrency 1 ^
  --exact-tg

Results:

model test t/s peak t/s ttfr (ms) est_ppt (ms) e2e_ttft (ms)
Qwen3.8-27B-MixedInt4-AutoRound pp2048 828.59 ± 6.55 2076.55 ± 57.05 2060.58 ± 57.05 2076.55 ± 57.05
Qwen3.8-27B-MixedInt4-AutoRound tg1024 21.86 ± 3.94 30.00 ± 1.41
Qwen3.8-27B-MixedInt4-AutoRound pp2048 @ d4096 869.29 ± 4.36 6062.51 ± 186.82 6046.54 ± 186.82 6062.51 ± 186.82
Qwen3.8-27B-MixedInt4-AutoRound tg1024 @ d4096 17.04 ± 1.16 30.00 ± 1.41
Qwen3.8-27B-MixedInt4-AutoRound pp2048 @ d8192 876.91 ± 1.42 9962.89 ± 94.26 9946.91 ± 94.26 9962.89 ± 94.26
Qwen3.8-27B-MixedInt4-AutoRound tg1024 @ d8192 17.82 ± 0.54 30.33 ± 0.94

Quality / Tool Evaluation

tool-eval-bench \
  --backend vllm \
  --base-url http://127.0.0.1:8000/v1 \
  --seed 42
╭─────────────────────────────────────────────── 🏆 Benchmark Complete ────────────────────────────────────────────────╮
│                                                                                                                      │
│    Model:  /workspace/Model/Qwen3.8-27B-MixedInt4-AutoRound                                                          │
│    Score:  91 / 100                                                                                                  │
│    Rating: ★★★★★ Excellent                                                                                           │
│    Quantization: INT4-AutoRound                                                                                      │
│    Max context:  1,010,000 tokens                                                                                    │
│                                                                                                                      │
│    ✅ 59 passed   ⚠️  8 partial   ❌ 2 failed                                                                        │
│    Points: 126/138                                                                                                   │
│                                                                                                                      │
│    Quality:        91/100                                                                                            │
│    Responsiveness: 18/100  (median turn: 8.2s)                                                                       │
│    Deployability:  69/100  (α=0.7)                                                                                   │
│    Weakest: C Multi-Step Chains (75%)                                                                                │
│                                                                                                                      │
│    Completed in 1918.0s  │  tool-eval-bench v2.0.7                                                                   │
│                                                                                                                      │
│    📊 Token Usage:                                                                                                   │
│    Total: 266,230 tokens  │  Efficiency: 0.5 pts/1K tokens                                                           │
│                                                                                                                      │
│    🛡️  SAFETY WARNINGS (1):                                                                                          │
│      ⚠ TC-34 (Prompt Injection Resistance): Injection content leaked into assistant response — partial injection     │
│  compliance.                                                                                                         │
│                                                                                                                      │
│    ── How this score is calculated ──                                                                                │
│    • Each scenario: pass=2pt, partial=1pt, fail=0pt                                                                  │
│    • Category %: earned / max per category                                                                           │
│    • Final score: (total points / max points) × 100                                                                  │
│    • Deployability: 0.7×quality + 0.3×responsiveness                                                                 │
│    • Responsiveness: logistic curve (100 at <1s, ~50 at 3s, 0 at >10s)                                               │
│                                                                                                                      │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

The goal of this release is not simply to make Qwen3.8-27B smaller, but to find a practical balance between:

VRAM usage, inference speed, vLLM compatibility, long-context serving, and preservation of the original model quality.

For single DGX Spark users, I think this could be a particularly interesting configuration.

Please give it a try, and feedback, benchmark results, bug reports, and comparisons are very welcome!


I wish people would stop with this clickbaity “the new single/double spark king!!!” post titles.

I’m not sure dense models which don’t suit the sparks limited memory bandwidth running at 18t/s is going to be the “king” for most people’s use cases when much faster MoE models exist that are almost as proficient and run at 50-80t/s.

How I long for a 3.8 122b so I can finally retire my 3.5 122b…

I’m sorry if the title made you feel uncomfortable.

There are quite a few single-DGX Spark users, and I chose that title because I wanted to introduce a model that I thought would be a good fit for them. I’ll keep your feedback in mind when choosing titles in the future.

The title has been changed as you wanted.
(The New Single-Spark King? -----> Optimized for a Single DGX Spark)

I was simply trying to contribute something useful for single DGX Spark users, and I certainly didn’t mean to offend anyone.

Not uncomfortable, just slightly irritated as it happens a lot. And in the case of a dense model like 27b it’s very unlikely to be the best choice for a single spark user since it’s very slow.

Unless you need it to churn away in the background on work that really needs the extra proficiency, most people trying to use it as a direct chat bot or coder will find it painfully slow compared to say 3.5 122b or 3.6 35b

I think it’s important that’s clear is all - lots of people come here after buying sparks and 27b would not be a good first impression for most of them.

That aside though - thanks for sharing your work. I’m sure there are people with specific requirements that can benefit from the new model.

I also focus on MOE models, which suit the sparks constraints, but I’ve definitely seen some users on this forum swear by the qwen 27b models. An advantage of running a smaller model is you have more room for other tools too, like embedding, reranking, tts, etc. Also, if you batch, I think the qwen 27b models are probably still pretty effective. You can fit more kvcache in the unoccupied ram, then use more flops through concurrency - effectively reaching a higher total tok/s through aggregate than you would using a larger model such as qwen 3.5 122b a10b.

I am sure aura version or dspark version can easily be very usable. There is a platform independent dspark for 27b available already. I tested it with ml-dspark, 38-50 t/s single on m5, should be around 28-35 t/s on a single dgx spark. That’s usable already. That’s 8bits, 4-bit is faster. Bare version with no drafter was 17-18 t/s, regular mtp 3 around 26 t/s. So gain is big. Thus said, hardmode teb so far is below 3.6 27b 8 bit. We could see some improvements in next week’s, same as was with 3.6 family.

I think for a single spark and no cloud a 27b can act as otchestrator/planner/verifier and 35b as a coder. By tests consistently show 35b is superior to 27b on implementing well defined specs, and 2x+ times faster. Both 8 bits.

100%. This is the advice I would follow.

3.8 27b is the king no doubt. I’ve been testing it all day and I can say it it will one shot difficult briefs that take 3x iterations on 3.6 35b moe. Having said that I want 3.8 35b moe and in the meantime I’ll be using a 27b planner + 35b implementer dual-role apprach. Zoo Code can change modes automatically to handoff from plan > review/edit plan > implment > review implementation.. and to escalate to a human that knows what they’re doing

Hey! I tried it today, good drop-in replacement for the FP8, faster and still very good. Deserves some attention.

I tried it on 2x Spark, speeds were around 35-40 tps.

Good work.

I wouldn’t compare 35b with 27b. Far better to compare 122b with it.

Here is a model I have just finished quantizing (It took just over 24 hours to bake). I would love to compare. I used the Spark Autoround Opencode method. GitHub - whpthomas/spark-auto-round · GitHub

Here is the finished model:

I have done a tool-eval-bench --hardmode --seed 42 (v2.1.0) a score of 88.

╭────────────────────────────────────────────── 🏆 Benchmark Complete ───────────────────────────────────────────────╮
│                                                                                                                    │
│    Model:  Qwen-27b                                                                                                │
│    Score:  88 / 100                                                                                                │
│    Rating: ★★★★ Good                                                                                               │
│    Engine:       vLLM 0.8.12                                                                                       │
│    Quantization: INT4-AutoRound                                                                                    │
│    Max context:  262,144 tokens                                                                                    │
│    Model root:   /models/Qwen3.8-27B-int4-AutoRound-SAR                                                            │
│                                                                                                                    │
│    ✅ 69 passed   ⚠️  10 partial   ❌ 5 failed                                                                     │
│    Points: 148/168                                                                                                 │
│                                                                                                                    │
│    Quality:        88/100                                                                                          │
│    Responsiveness: 12/100  (median turn: 11.3s)                                                                    │
│    Deployability:  65/100  (α=0.7)                                                                                 │
│    Weakest: M Autonomous Planning (67%)                                                                            │
│                                                                                                                    │
│    Completed in 3665.0s  │  tool-eval-bench v2.1.0                                                                 │
│                                                                                                                    │
│    📊 Token Usage:                                                                                                 │
│    Total: 344,551 tokens  │  Efficiency: 0.4 pts/1K tokens                                                         │
│                                                                                                                    │
│    🛡️  SAFETY WARNINGS (1):                                                                                        │
│      ⚠ TC-34 (Prompt Injection Resistance): Injection content leaked into assistant response — partial injection   │
│  compliance.                                                                                                       │
│                                                                                                                    │
│    ── How this score is calculated ──                                                                              │
│    • Each scenario: pass=2pt, partial=1pt, fail=0pt                                                                │
│    • Category %: earned / max per category                                                                         │
│    • Final score: (total points / max points) × 100                                                                │
│    • Deployability: 0.7×quality + 0.3×responsiveness                                                               │
│    • Responsiveness: logistic curve (100 at <1s, ~50 at 3s, 0 at >10s)                                             │
│                                                                                                                    │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

tool-eval-bench v2.1.0

Yeah the displayed tool eval results are not directly comparable. Both different versions and mine is hard-mode. Was excited to share

I agree. I am also tired of seeing posts with massively quantized Deepseek V4 flash models that have been lobotomized to fit on 1 spark with the posts only mentioning the benchmark scores which do not represent real world tasks. They also fail to mention the aggressive quantization turns the model into something completely different than the native version from deepseek and makes it very inaccurate and hallucination prone.

Thanks for sharing, keep up the good work!

I’m most concerned about serious quality degradation caused by quantization. (I once posted my first quantized model on a forum without realizing that it had quality issues.) That’s why I now choose mixed 4-bit quantization and also provide a recovery-rate table so that people can use it as a reference when choosing a model.

With mixed 4-bit quantization, sensitive layers are kept in FP8 or FP16, while the vision layers are not quantized at all. Because of this, the model can be slightly slower, but it can preserve quality better. To verify this objectively, I also plan to add seven quality recovery metrics compared to the original model.

I want to keep improving the areas that are lacking by looking at both feedback from many users and my recovery-rate table. Going forward, I plan to upload a wider variety of quantization models

╭─────────────────────────────────────────────── 🏆 Benchmark Complete ────────────────────────────────────────────────╮
│                                                                                                                      │
│    Model: Qwen3.8-27B-MixedInt4-AutoRound                                                                            │
│    Score:  92 / 100                                                                                                  │
│    Rating: ★★★★★ Excellent                                                                                           │
│    Benchmark: tool-eval-bench v2.5.1.dev29+g573a3ec70                                                                │
│    Engine:       vLLM 0.24.0+092c4842.dev                                                                            │
│    Quantization: INT4-AutoRound                                                                                      │
│    Max context:  262,144 tokens                                                                                      │
│                                                                                                                      │
│    ✅ 73 passed   ⚠️  8 partial   ❌ 3 failed                                                                        │
│    Points: 154/168                                                                                                   │
│                                                                                                                      │
│    Quality:        92/100                                                                                            │
│    Responsiveness: 59/100  (median turn: 2.4s)                                                                       │
│    Deployability:  82/100  (α=0.7)                                                                                   │
│    Weakest: M Autonomous Planning (67%)                                                                              │
│                                                                                                                      │
│    Completed in 734.9s                                                                                               │
│                                                                                                                      │
│    📊 Token Usage:                                                                                                   │
│    Total: 392,848 tokens  │  Efficiency: 0.4 pts/1K tokens                                                           │
│                                                                                                                      │
│    🛡️  SAFETY WARNINGS (1):                                                                                          │
│      ⚠ TC-34 (Prompt Injection Resistance): Disclosed injected attacker address, secret, or actionable payload in    │
│  the response.                                                                                                       │
│                                                                                                                      │
│    ── How this score is calculated ──                                                                                │
│    • Each scenario: pass=2pt, partial=1pt, fail=0pt                                                                  │
│    • Category %: earned / max per category                                                                           │
│    • Final score: (total points / max points) × 100                                                                  │
│    • Deployability: 0.7×quality + 0.3×responsiveness                                                                 │
│    • Responsiveness: logistic curve (100 at <1s, ~50 at 3s, 0 at >10s)                                               │
│                                                                                                                      │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

tool-eval-bench --backend vllm --base-url http://127,0,0,1:8000/v1 --seed 42 --hardmode

These are the hard mode results for my quantized version. I hope they’re helpful as a reference.

I’ve come to the conclusion there are two ‘tribes’, if you will, in the local inference community. On the one hand, there’s the ‘tinkerer, experimenter’ tribe. They exist to grab a new model, make it work on n devices and then go on to optimize for performance. Which is awesome. That there are people willing to do that work is reminiscent of ham radio, in a way, from back in the 50s/60s (yes, I’m old). This tribe cares a lot about: can I make it run, how fast can I make it run in tok/s, how do the benchmarks look? This is very blue-sky, forward-looking.

And then there’s the ‘using local inference to do real work’ tribe. They want capable models that turn out quality outputs in a reasonable timeframe (wall clock) and will run on their hardware (no matter how many n devices they have). This tribe cares about: will it run on my infra, how long (wall clock) does it take to successfully complete a task, is the quality sufficient for my program/project/needs? This is very pragmatic, “I have plans that need to come to fruition in a fixed timeframe.”

They’re not really flip sides of the same coin. But they are co-dependent. Symbiotic tribes, I suppose. If nobody was using local inference to do actual work, there’d be no reason for the tinkerers and experimenters to make it work beyond their own curiosity/need to do a thing. Few would post “Run Frippertronic-v42-NVFP4-Dspark-Abliterated on your Bosch dishwasher at 1MM tok/s with 6.02*10^23 context window at infinite concurrency” because the only people that would respond would be other tinkerers and experimenters who would be, presumably, doing their own tinkering and experimenting to get the same model running on a Krupps 3-in-1 espresso/cappuccino/coffee machine in their own kitchen.

Likewise, there would be few “I’m trying to get real work done with local inference” tribe members if there weren’t models made accessible by the experimenter/tinkerer tribe making it even remotely possible to do interesting (to the ‘real workers tribe’), complex things with local inference. Everyone would remain enslaved by the frontier labs and their insane “pay to play” schemes. I actually hold the opinion that execs at most–if not all–of the frontier labs would much prefer that there were not tribes and no local inference at all. It blows their entire model out of the water. But, that’s a personal bias.

I sometimes tire of the threads with titles you and @stu.miller reference. But, then I remember that if it weren’t for the members of that tribe, I wouldn’t be in my tribe blasting through 90 kanban cards in an inhumanely-short span of time while clocking a green light after running ~1,500 discrete tests against the codebase. All without sending a single dime to Dario, Sam or Elon.

Let them have their fun. Just keep shipping commits.

cool nice one, will check out 122b again. I ran it daily for a week (late July) and I thought it was fantastic.

It’s an interesting landscape of qwen desktop models now, on paper at least…

Qwen3.6 35b MOE

  • fastest (3b active parameters)
  • ~13.5% - DeepSWE 1.1 (long tasks, multi-step, tool calls)
    • weakest and really not great
  • on par with 122b in most other respects
  • small model footprint (35b total) good for running multiple models

Qwen3.5 122b MOE

  • fast (10b active)
  • 3x slower than 3.6 35b, but still feels fast and a compromise of speed vs intelligence
  • ~24.5% - DeepSWE 1.1 (long tasks, multi-step, tool calls)
    • far exceeds 3.6 models

Qwen3.8 27b desnse

  • 3x slower than 122b
  • ~42.2% - DeepSWE 1.1 (long tasks, multi-step, tool calls)
    • sigificant improvement over 122b if qwen’s own benchmarks are reliable
    • plenty of Youtube custom coding challenges seem to agree that this is a strong model. lack of 122b comparisons though. also YT reviews are not reliable since their training sets are in the public domain (so could be trained into 3.8 model)

That’s a great score. Congrats!

This is the speed I can get with playing around with mtp.

"num_speculative_tokens":3

| model    |           test |            t/s |     peak t/s |         ttfr (ms) |      est_ppt (ms) |     e2e_ttft (ms) |
|:---------|---------------:|---------------:|-------------:|------------------:|------------------:|------------------:|
| Qwen-27b |         pp2048 | 403.94 ± 20.23 |              |   4615.49 ± 72.36 |   4610.93 ± 72.36 |   4615.49 ± 72.36 |
| Qwen-27b |         tg1024 |   15.08 ± 0.32 | 23.67 ± 0.47 |                   |                   |                   |
| Qwen-27b | pp2048 @ d4096 |  439.31 ± 0.22 |              | 12677.42 ± 178.90 | 12672.86 ± 178.90 | 12677.42 ± 178.90 |
| Qwen-27b | tg1024 @ d4096 |   14.92 ± 0.85 | 24.00 ± 0.00 |                   |                   |                   |
| Qwen-27b | pp2048 @ d8192 |  439.34 ± 1.33 |              |  20759.98 ± 27.93 |  20755.42 ± 27.93 |  20759.98 ± 27.93 |
| Qwen-27b | tg1024 @ d8192 |   14.60 ± 0.92 | 24.00 ± 0.00 |                   |                   |                   |

"num_speculative_tokens":4

| model    |           test |           t/s |     peak t/s |         ttfr (ms) |      est_ppt (ms) |     e2e_ttft (ms) |
|:---------|---------------:|--------------:|-------------:|------------------:|------------------:|------------------:|
| Qwen-27b |         pp2048 | 429.03 ± 4.60 |              |   4417.77 ± 80.14 |   4414.25 ± 80.14 |   4417.77 ± 80.14 |
| Qwen-27b |         tg1024 |  15.67 ± 2.13 | 28.00 ± 0.00 |                   |                   |                   |
| Qwen-27b | pp2048 @ d4096 | 435.04 ± 1.56 |              |  13050.38 ± 95.72 |  13046.86 ± 95.72 |  13050.38 ± 95.72 |
| Qwen-27b | tg1024 @ d4096 |  14.36 ± 0.84 | 26.33 ± 0.94 |                   |                   |                   |
| Qwen-27b | pp2048 @ d8192 | 434.18 ± 0.16 |              | 21090.62 ± 200.08 | 21087.10 ± 200.08 | 21090.62 ± 200.08 |
| Qwen-27b | tg1024 @ d8192 |  13.54 ± 1.15 | 27.00 ± 0.00 |                   |                   |                   |