Qwen 3.8 27B vs Qwen 3.6 27B vs Qwen 3.5 27B Teardown

We read the GGUF headers of Qwen 3.8 27B, Qwen 3.6 27B, and Qwen 3.5 27B and ran 397 measured generations on one RTX 5090 to find where the gains between the three releases really come from.

Aug 19, 2026Updated Aug 19, 202619 min readFollow

Topics You Will Master

Reading GGUF headers to compare two model releases tensor by tensor
What Qwen's own model cards claim across 3.5, 3.6, and 3.8, and which scores barely moved
Why Qwen 3.8 27B answers as well as Qwen 3.5 27B while writing seven times fewer thinking tokens
Why the same model measures 79 tok/s in one report and 205 tok/s in another

Qwen shipped three 27B models in about six months: Qwen 3.5 27B in February, Qwen 3.6 27B in April, and Qwen 3.8 27B in August. Each release came with bigger benchmark numbers. A simple question is left unanswered by all of them: did the architecture change, or did the training change?

A GGUF file is how Ollama stores a model on disk. In simple words, it starts with a header that lists every tensor in the model, with its name, its shape, and its data type.

In this blog, we will read those headers for all three releases straight off our own disk, and then run 397 measured generations on one RTX 5090 to see where the gains actually live.

Bestseller

Master LangGraph and LangChain

Agentic RAG and Chatbot, AI Agent with LangChain v1, Qwen3, Gemma3, DeepSeek-R1, LLAMA 3.2, FAISS Vector Database

95% off$199.99
$9.99Enroll now 30 day refund, lifetime access

Setup: One RTX 5090 and Ollama 0.32.14

Everything below ran on one machine in one serving session.

  • GPU: RTX 5090, 32GB VRAM, power capped at 600W
  • Runtime: Ollama 0.32.14 on Windows 11
  • Quantization: Q4_K_M for all three models, straight from the official Ollama library
  • Runs: 397 measured generations
  • Controls: forward and reverse model order, a discarded warmup after every load, and a full VRAM unload between models

Speculative decoding was pinned by hand on every run. We never let it fall back to each model's own default, because those defaults are not the same, and that turns out to matter a lot.

GGUF Teardown: Qwen 3.8 27B vs Qwen 3.6 27B vs Qwen 3.5 27B

We wrote a small parser and read the GGUF headers of all three blobs. No downloads, and no trusting anyone's spec sheet.

Architecture comparison table of Qwen 3.5 27B, Qwen 3.6 27B, and Qwen 3.8 27B showing identical layers, hidden size, attention heads, and vocabulary, with only the MTP draft head changing

Here, we can see that Qwen 3.5 27B and Qwen 3.6 27B are structurally identical. Same 1,307 tensors, same names, same shapes, same data types, and the parameter counts match to the last digit at 27,781,427,952. If we deleted the weights and kept only the blueprints, we could not tell the two apart.

Qwen 3.8 27B keeps the same backbone. Same 64 blocks, same 5,120 hidden size, same 24 query heads and 4 key value heads, same 3 to 1 mix of linear attention and full attention, same 248,320 vocabulary, same 262,144 context. Two things moved. The vision encoder now lives in a separate 461M file, and the multi token prediction head became a real, active 65th block.

The surprise is that the draft head was always there. Qwen 3.5 27B and Qwen 3.6 27B carry the same mtp.* tensors in their files, sitting unused. Qwen did not add a speed feature in 3.8. They fixed one they had been shipping dormant all along.

There is a runtime check on top of the file check. With speculative decoding switched off, all three models decode within 1.5% of each other, 78.6 to 80.4 tok/s at a 32k context, and their speed decays with context along the same curve. Identical compute graph, measured twice.

So when a Qwen 3.6 27B against Qwen 3.5 27B benchmark shows a gain, that gain is post-training by definition. There is nowhere else for it to live.

Qwen's Own Benchmark Numbers From 3.5 to 3.8

Before our own measurements, it is worth looking at the scores Qwen published themselves. They frame what each release was actually for.

Official model card scores for Qwen 3.5, 3.6, and 3.8 on GPQA Diamond, LiveCodeBench, SWE-bench Pro, and Terminal-Bench

These scores come from the official model cards, not from our benchmark. The two cards cross-check where they overlap. The 3.6 card and the 3.8 card list the same 3.6 numbers on their own: 53.5 on SWE-bench Pro, 83.9 on LiveCodeBench, and 87.8 on GPQA. So nobody quietly moved the goalposts between releases.

Note

The Terminal-Bench line splices two versions of that benchmark, v2.0 on the first two points and v2.1 on the last, because that is how the cards report it. Read its final jump as indicative rather than exact.

The shape of the trajectory is the story.

Knowledge and pure reasoning barely moved. GPQA Diamond went 85.5 to 87.8 to 89.2. That is 3.7 points in six months, from a start that was already high. Math says the same. The 3.6 card shows AIME26 at 92.6 against 94.1, and one HMMT split did not move at all, 84.3 to 84.3. These abilities were essentially finished in February.

Coding moved steadily. LiveCodeBench went 80.7 to 83.9 to 90.3. SWE-bench Pro went 51.2 to 53.5 to 61.7.

Agentic work exploded. Terminal-Bench went 41.6 to 59.3 to 73. The agentic benchmarks that appear only on the 3.8 card show the same pattern against 3.6.

Benchmark Qwen 3.6 27B Qwen 3.8 27B
DeepSWE 13.3 42.2
QwenSWEBench 49.3 79.0
OSWorld 63.9 84.3

Why did agency improve so much faster than knowledge? Our teardown gives the mechanical answer.

An agent benchmark is hundreds of small steps. Read something, decide, act, repeat. A model that burns 13,000 tokens re-checking every small decision is slow, expensive, and runs out of budget mid task. That is exactly the failure we caught live in our hard tier. A model that thinks in 1,850 tokens and commits, drafts its own output twice as fast, and never stalls is a far better worker. It is also the same machine, answering the same one shot science questions.

The release in between fits too. Qwen pitched 3.6 as an agentic coding release, and its card shows just that: Terminal-Bench up about 18 points, knowledge up 2.

So Qwen spent 2026 not making the 27B smarter, but making it a better worker. The teardown above proves they did it without touching the machine. The sections below measure the three habits they did change: how much it thinks, how it thinks, and how fast it produces tokens.

The Twelve Verified Problems

We tested two departments, math and reasoning, four problems each, plus a harder four problem tier once the first set turned out to be too easy for everybody.

Every problem has one exact answer, and we did not trust ourselves to know it. A separate script brute forces each one. It counts all 105 lcm pairs, walks all 1,024 coin sequences, tries every knight and knave assignment, and checks that each logic puzzle has exactly one solution. If a puzzle had two valid answers, the script would have caught it before any model saw it.

Models must end with a line like ANSWER: 807, and a string matcher grades it. No human judgement, and no model acting as a judge.

Accuracy and Thinking Tokens at Matched Settings

At identical settings for all three, with thinking on and speculative decoding off for everybody, they all solve almost everything.

Average output tokens per solved problem on base and hard problems, with Qwen 3.8 at 1,038 and 1,850 against roughly 13,000 for the other two on hard problems

Model Think accuracy No-think accuracy Avg thinking tokens Avg wall time
Qwen 3.5 16/16 16/16 7,157 99.3s
Qwen 3.6 15/16 16/16 5,320 74.1s
Qwen 3.8 16/16 16/16 1,038 16.4s

The hard tier, with a 24,576 token budget, tells the same story more loudly.

Model Accuracy Avg tokens Total wall time
Qwen 3.5 8/8 13,011 23.1 min
Qwen 3.6 7/8 13,328 23.6 min
Qwen 3.8 8/8 1,850 3.5 min

That is a 7x cut in thinking tokens for the same accuracy, and it is why 3.8 finished the hard tier in 3.5 minutes while the other two each took over 23 minutes.

One detail matters more than the scores. Both of 3.6's misses were not wrong answers. They were runs where the model was still thinking when it hit the token budget and got cut off. Across all 397 runs, every single failure was that same event. No model ever reasoned its way to a wrong conclusion and stated it confidently.

Note

The base problems saturate. All three are competent 27B models, so base accuracy does not separate them at all. The thinking cost separates them enormously.

Direction of Thinking: Where the Answer First Appears

We measured one simple thing in every thinking trace. At what point does the correct final answer first appear inside the model's own thinking?

Where the correct answer first appears in the thinking trace, at 12 percent for Qwen 3.5, 16 percent for 3.6, and 49 percent for 3.8

Metric Qwen 3.5 Qwen 3.6 Qwen 3.8
Where the correct answer first appears 12% 16% 49%
Trace remaining after that point 88% 84% 51%
Self-correction markers per run 13.8 10.0 0.6
Verification markers per run 5.9 4.7 1.0

Qwen 3.5 finds the right answer 12% of the way into its trace. It then spends the remaining 88% checking, re-checking, and second guessing an answer it already had. It says "wait" or "actually" about 14 times per problem. Qwen 3.6 is the same behaviour, mildly trimmed.

Qwen 3.8 finds the answer about halfway through a much shorter trace, verifies once, and stops. It averages 0.6 self-corrections per problem.

This is what a post-training improvement looks like in concrete terms. Same brain, different habits. The 3.5 to 3.6 step trimmed the old habit. The 3.6 to 3.8 step replaced it.

Reasoning Effort on Ollama vs the Official Chat Template

If you have read about Qwen 3.8 27B online, you may have seen the opposite complaint. Simon Willison found that it defaults to wildly overthinking, burning 22,276 thinking tokens on one SVG drawing, and a Hugging Face thread is titled around the model not being able to stop thinking. Our benchmark says it barely thinks at all. Who is wrong?

Nobody. We are measuring two different serving stacks, and we can point at exactly where the difference lives.

Thinking plus answer tokens at Ollama's four think levels, all near 1,000, against 22,276 under the official template at xhigh

Qwen 3.8 27B has an official chat template with a reasoning_effort variable, and its default value is xhigh. LM Studio and llama-server --jinja apply that template, so their users get the trained deep reasoning regime.

Ollama never uses that variable. We read the renderer for this model family in Ollama 0.32.14 source, and what it actually does is prepend a plain English sentence to the system message:

  • think:"low" injects a sentence asking the model to keep its thinking brief.
  • think:"medium" injects nothing at all.
  • think:"high" and think:"max" inject a sentence saying that effort is xhigh.
  • think:true maps to "medium", which again means nothing is injected.

Then we measured what those sentences actually do, across 8 problems each: low gives 1,020 tokens, medium 1,115, high 600, and max 662. Every level answered all 8 correctly.

Read that again. The "max effort" setting produces the shortest thinking. The sentence works as a polite nudge, not as the trained deep thinking trigger. The model's real xhigh regime cannot be reached through Ollama at all.

Important

Every Ollama benchmark of Qwen 3.8 27B, including this one, measures the model's fast and terse regime. Every LM Studio user gets the slow and exhaustive regime by default. Two communities are reviewing two different products with the same name.

Decode Speed by Content Type on Qwen 3.8 27B

Across our own past reports, Qwen 3.8 27B has measured 171 tok/s, then 125.5, then 96.5. When today's controlled runs said 79 with speculative decoding off, it looked like the benchmarks contradicted each other.

Four historical Qwen 3.8 27B speed figures, 171, 125.5, 104, and 79 tokens a second, each with its own measurement conditions

They do not. The explanation is speculative decoding, and specifically that its speedup is not a property of the model. It is a property of what the model is writing.

Here is the mechanism in plain words. Qwen ships a small draft head that guesses the next few tokens cheaply, and the full model then checks those guesses in one pass. When the guesses are right, we get several tokens for the price of one. When they are wrong, the check was wasted work. So the speedup depends entirely on how predictable the output is.

We tested that directly: same model, same settings, seven kinds of content.

Qwen 3.8 27B decode speed by content type, from 205 tokens a second counting to 88 writing surreal fiction, against a flat 79 with speculative decoding off

One model, one machine: 205 tok/s counting to 200, 187 to 189 writing code, 176 writing JSON, 104 writing an essay, and 88 writing deliberately weird fiction. The draft head accepts 100% of its guesses on counting and 27% on surreal prose.

Now every historical number lands on one curve. The 171 was a code heavy suite at temperature 0.2 with drafting on. The 125.5 was a llama.cpp ladder at draft depth 2. The 96.5 to 104 is essay prose at roughly 0.36 acceptance. The 70 to 79 is drafting off. Four operating points of one mechanism.

If somebody quotes a tok/s figure without saying what the model was writing and whether speculative decoding was on, they have told us almost nothing.

Draft Acceptance: Qwen 3.8 27B vs Qwen 3.6 27B vs Qwen 3.5 27B

The same curve also holds the version story.

Draft acceptance rate against decode speed for all three models, with Qwen 3.8 27B sitting right of its siblings at every content type

All three models carry the draft head, so we forced speculative decoding on for every one of them and measured the acceptance rate by content type.

Decode speed with speculative decoding forced on, showing Qwen 3.5 27B and Qwen 3.6 27B falling below their own no-drafting baseline on essays

Content 3.5 accept 3.6 accept 3.8 accept 3.5 tok/s 3.6 tok/s 3.8 tok/s
Counting 1 to 200 0.68 0.70 1.00 158 160 205
Python plus tests 0.40 0.53 0.88 110 133 187
Essay prose 0.09 0.12 0.36 59.5 63.2 104
Baseline, drafting off 80.3 79.9 78.7

Two things jump out of that table.

Qwen 3.5 27B and Qwen 3.6 27B have draft heads so weak on prose, 9% and 12% acceptance, that switching drafting on makes them about 25% slower than no drafting at all. They only profit on very predictable output.

Qwen 3.8 27B's head is better at every point on the curve, with 4x the acceptance on essays, and it never lost in this sweep. That head was retrained, and that retraining, not any architecture change, is why Qwen 3.8 27B is the fast release. It also explains why Ollama switches drafting on by default for that one model only.

Long Context to 80k Tokens

We filled each model's context with 16k, 48k, and then 80k tokens of relevant reference material, and then asked a question that the material genuinely helps with.

Decode speed and prompt reading speed against context fill for all three models, with the three lines sitting on top of each other

Fill, actual tokens Accuracy, all 3 models Prefill tok/s Decode tok/s
16k 12/12 3,340 70
48k 12/12 2,910 64
80k 12/12 2,320 59

Nobody degraded by 80k on these tasks. Decoding slows from about 70 to about 59 tok/s as the window fills, and prompt reading slows from about 3,340 to 2,320 tok/s. The three lines sit on top of each other because it is the same machine underneath.

One behavioural note. Qwen 3.5 27B thinks about 15,000 characters no matter how much context it just read. Qwen 3.8 27B stays between 1.7k and 3.9k characters. The thinking policy does not react to context depth in either direction.

Our first attempt at this ladder sized the filler using a 4.0 characters per token estimate. The real ratios are 3.36 for the math filler and 4.75 for the reasoning filler, which pushed some cells past the context boundary where the server truncates or refuses. We archived that data, recalibrated against measured ratios, and reran the whole ladder. The token counts in the table above are the server's own numbers, not estimates.

Tip

A 128k context fits on a 32GB card at 30.4GB used, but it leaves little room with desktop apps open. A 64k context is comfortable and costs about 8% in speed.

We ran one more pass with each model's officially recommended settings instead of our matched ones.

Model Matched accuracy Recommended accuracy What changed
Qwen 3.5 16/16 14/16 presence_penalty 1.5 from its own card
Qwen 3.6 15/16 15/16 identical settings
Qwen 3.8 16/16 16/16 think:"max", fewer tokens, same accuracy

All three recommended settings failures were the same event on the same problem, computing 7^2025 mod 1000. Verifying modular arithmetic means writing similar looking lines over and over, and a presence penalty exists precisely to punish repetition. So the model gets pushed off its natural verification loop, wanders, and burns its whole token budget.

With the penalty at 0, the same model went 16/16. Qwen 3.5 27B's Ollama modelfile ships presence_penalty 1.5 as its default, so a stock ollama run qwen3.5 inherits this failure mode. Qwen 3.8 27B's modelfile sets it to 0.

Architecture vs Post-Training Attribution

Let me tabulate the attribution for your better understanding.

Gain observed Source Evidence
7x cheaper thinking at equal accuracy post-training identical graph, different policy, measured trace positions
Draft acceptance from 0.09 to 0.36 on prose post-training of the draft head same head structure present in all three
37% to 160% real decode speedup packaging plus head training Ollama switches the now useful head on by default
Long context robustness to 80k already present in 3.5 all three went 12/12
Raw decode and prefill speed unchanged within 1.5%, identical decay
Multimodal packaging repackaging vision split into a separate mmproj file

Benchmark Controls and Limits

A few controls are what make these numbers comparable at all.

  • The GPU never lied about which model was loaded. Before every switch the previous model was fully unloaded, and the script polled until VRAM reported empty.
  • Heat could not pick the winner. This card slows by about 7% once it is hot, enough to fake a result from run order alone. So every comparison ran twice, once in forward model order and once in reverse, with a throwaway warmup generation after each load. The measured order effect was under 1%.
  • Speed toggles were pinned, not inherited. Ollama enables speculative decoding for 3.8 and not for 3.5 or 3.6, so we forced it off for all accuracy runs and tested it separately for all three.
  • Answers were graded by string matching against brute forced ground truth, so no judgement call sits anywhere in the scoring path.
  • Failures were investigated, not discarded. The context ladder was rerun after a calibration bug, and the discarded data is archived. Transient server errors were retried and logged, and no failed request was ever graded.

Two limits are worth stating. Accuracy cells are 2 samples each at temperature 1.0, which is plenty for a 7x token gap but not for a one problem difference, so Qwen 3.5 27B against Qwen 3.6 27B on accuracy is a tie within noise. Cross session drift on this rig is about 6%, so every comparison table here is paired inside one session.

Conclusion

We read the GGUF headers of Qwen 3.8 27B, Qwen 3.6 27B, and Qwen 3.5 27B, then ran 397 measured generations on one RTX 5090 through Ollama. The three releases are the same machine, and Qwen's own model cards point the same way: science reasoning gained 3.7 points in six months while agentic terminal work gained 31. Qwen 3.5 27B and Qwen 3.6 27B are identical tensor for tensor, and Qwen 3.8 27B keeps the same text backbone while activating a draft head that was already sitting in the older files.

Key takeaways:

  • Qwen 3.8 27B is the default pick on Ollama. Same accuracy as its predecessors here, 6 to 9 times faster end to end, and 176 to 205 tok/s on structured output.
  • Everything that improved is post-training. The thinking policy, the draft head quality, and the shipped defaults changed. The architecture did not.
  • Leave speculative decoding on for Qwen 3.8 27B. For Qwen 3.5 27B and Qwen 3.6 27B it helps only on code and structured output, and it costs about 25% on prose.
  • Use presence_penalty 0 in thinking mode for all three, including Qwen 3.5 27B, despite what its own model card recommends.
  • A tok/s number without its content type and its drafting state is not a measurement. The same model legitimately reads 79 or 205 on the same GPU.

Next steps:

This is how a model teardown works. We read the files first and proved the architecture never changed, then measured thinking, speed, and long context on one machine, and found that six months of Qwen releases went into teaching the same 27B machine to think less, draft better, and waste nothing.

Found this useful? Keep building with me.

New tutorials every week on YouTube: or go deeper with a full structured course.

Find this tutorial useful?

Subscribe to our YouTube channels for more practical production walk-throughs.

Discussion & Comments