Vol. III · Essays on work after AI
Saturday, October 3, 2026
evolving.work
Local AI · Essay № 068

Which Qwen 3.8 27B Build Should You Run?

Half a dozen downloads all call themselves Qwen 3.8 27B. I compared them on a 64 GB MacBook Pro to find the one worth keeping, and when the others are worth it.

Tested 14–17 September 2026 · one M5 Pro MacBook Pro, 64 GB unified memory · 12 prompts · sources

Six packages on my drive all claimed to be the same model. Each one said Qwen 3.8 27B on the label, they came from three publishers, two of whom ship the same model at several sizes, and the ones I measured ran from about 16 to about 28 gigabytes on disk. There was no sense in keeping them all, so in the middle of September I put five of them through the same set of tasks on one 64 GB MacBook Pro and kept the one that gave me the least to worry about.

That one is the Youssofal Optimized-Quality package, which I call Youssofal Q8 MTPLX for the rest of this article. It answered every question in the test set correctly, in both rounds of testing, and it finished every writing prompt I gave it. What that buys you is a laptop that does structured work offline: invoice arithmetic with discounts and refunds applied in the right order, a small scheduling problem, a SQL join that must not double count, two short Python functions, a policy decision full of awkward edge cases. It got all of those right, and the code it wrote ran.

Youssofal Q4 MTPLX, the same publisher’s smaller package, is the one to take if memory is tight. It stores each weight in half the space, takes about eight and a half gigabytes less room on disk, and in the first round of testing it got every answer right in almost the same total time.

Swift Q8, from a different publisher, is a close peer. It was quicker than Youssofal on most of the work, more than twice as slow on the SQL query, and the two were level on writing.

The hosted 27B is the same model called over the network instead of run on the laptop. It was about 2.8 times faster on the six tasks both it and the local Q8 got right, but it got two tasks wrong that every local build here got right, and your prompts leave the machine to use it.

The Cold Fusion builds are a fine-tune of the same model, meaning a version somebody retrained on top of Qwen’s, and they showed no advantage in these tests. The 8-bit one took noticeably longer to reach the same answers, and the 4-bit one ran out of room on one task and delivered nothing at all.

These results come from one attempt per task on one machine, with the evidence frozen on 17 September 2026, so it is my pick from what I tested rather than a ranking of the field. And “Qwen 3.8 27B” is a family name: these packages differ in more than how many bits they store a weight in, which is why none of this is a clean experiment about quantization. The recommendation I am running today lives in the living model guide; this article stays at the September evidence.

Which build to choose

The Flash alternative, a much bigger model trimmed down to fit, is a separate decision: see Battle of the Qwens. For what a 64 GB machine can hold in the first place, start with the field guide.

Why one model name covers six different downloads

Qwen 3.8 27B is a dense model from Qwen, meaning every parameter is used for every token, with about 27 billion of them. Qwen publishes the weights in a 16-bit format, and none of the packages here is that release. Each is somebody’s repackaging, quantized: stored in fewer bits per weight so it takes less room and runs faster on a laptop. Q8 stores a weight in 8 bits, Q4 in 4. The “27B” is the parameter count and does not change with the bit width, so none of these is an 8-billion-parameter model.

Nobody in this comparison ran the original full-precision weights on the Mac. The field guide explains why the working baseline in this series is a Q8 repackaging rather than Qwen’s own release.

Bits are not the only thing that varies. Group size — how many weights share one scaling factor — differs between packages. So does which parts of the model are kept at higher precision, how the prompt is wrapped before the model sees it, and whether the publisher retrained the model on anything of their own. The multi-token-prediction head has its own precision setting as well: that head proposes several tokens at a time — tokens are the word-pieces a model writes — and the main model verifies them. It is written MTP in the tables. None of the comparisons below isolates the effect of quantization on its own. They compare packages as you would actually download them.

In this article, “original” means Qwen’s own upstream release and nothing else. The two packages from the same publisher are Youssofal Q8 MTPLX and Youssofal Q4 MTPLX, after their Optimized-Quality and Optimized-Speed labels. The others are Swift Q8, Cold Fusion, and the hosted 27B. None of them is mine: the checkpoint is Qwen’s, the conversions belong to their publishers, and the runtime features they lean on were already in MTPLX. MTPLX is the runtime I ran them all on — the program that loads a model file, does the arithmetic on the Mac’s graphics cores and produces the answer. My part was running them.

How I tested them

I tested the builds in two rounds with different timing scopes and output limits. On 14 September I ran the two Youssofal packages and the two Cold Fusion builds through eight objective tasks from the command line, starting a fresh process for every single answer, with a small cap on how much the model could write. On 17 September I ran the two 8-bit packages and the hosted service again, this time with the model loaded once and left resident in a local server — running in the background, ready for the next request — a far larger cap on how much it could write, and four writing prompts added. The rounds also used different runtime versions. Numbers from one round cannot be set against numbers from the other, and I have marked which round every table belongs to.

The eight objective tasks are the same ones used across this series: five want JSON back, two want a Python function and one a SQL query, and the evaluator runs the code and checks the JSON afterwards. Each task passes or fails as a whole. With eight tasks, a single task moves the result by 12.5 percentage points. Eight prompts in a single trial are too few to establish a general ranking.

The eight objective tasks
TaskWhat it asks for
invoiceJSON: invoice totals with discount, shipping, tax and refunds applied in the right order
scheduleJSON: the optimal schedule for six dependent jobs on two machines
intervalsA Python function that unions each user’s half-open time intervals
batchesA Python function that groups a dependency graph into batches
sqlOne SQLite query joining orders, items and refunds without double counting
cacheJSON: the final state of an LRU cache with a time-to-live
extractJSON: the final facts from a dispatch log where later corrections win
policyJSON: eligibility and credit under a policy with strict boundaries and unknowns

I judge a build on how long it takes to produce an answer that is actually right, not on the tokens-per-second counter the runtime prints. Download size measures disk space, not runtime memory. Timings need the same setup to be comparable. I also test my own prompts: these eight tasks reward exactness, while much of my everyday use involves prose.

What the clock said

Round one: the Youssofal packages against Cold Fusion

Two clocks matter in this round. The runtime’s own clock covers reading the prompt, reasoning and writing the answer. The command wall adds loading the model and setting up, which happened eight times over, because every answer started a new process. The exact settings are in the specification at the end.

Round one: command line, 4,096-token allowance, fresh process per answer
ArtifactCorrect /8Native generation sFull command sPackage GiB
Youssofal Q8 MTPLX (matrix-08)8501.06576.3327.91
Youssofal Q4 MTPLX (matrix-14)8513.21575.8219.28
Cold Fusion Q8 (coldfusion_8bit)8661.81729.5328.29
Cold Fusion Q4 (coldfusion_4bit)7744.25792.6315.76
Cold Fusion Q6Not run–––
One scored attempt per task and package, 14 September 2026, MTPLX 2.11.2. Times are sums over all eight attempts, including Cold Fusion Q4’s failed one. Q6 had a calibration sweep only and has no eight-task result; the row is not zero.

Both Youssofal packages passed everything, and their full command times are half a second apart: 576.33 s for Q8, 575.82 s for Q4. On the runtime’s own clock the Q4 package was slightly slower, 513.21 s against 501.06 s, even though its weighted decode rate was higher, 31.39 tokens per second against 28.30. The reason is how much each one wrote: Q4 generated 15,864 tokens across the eight answers and Q8 generated 13,972, about 13.5% more work for Q4. The diagram below separates token count, decode rate and decode time.

Cold Fusion Q8 also passed 8 of 8, but it took 661.81 s of native generation, so Youssofal Q8 used 24.3% less generation time to reach the same result. Cold Fusion Q4 passed 7 of 8: on the dependency-batching task it spent all 4,096 tokens still reasoning and delivered no function at all. That is an incomplete answer under this allowance, not a wrong implementation, and its 155.80 s of generation stay in the totals. Youssofal Q4 used 31.0% less native generation time than Cold Fusion Q4. Both percentages are for native generation, not full command time: each command also carried loading, setup and the runner’s polling delay, and that overhead was not smaller for the faster packages.

Cold Fusion’s Q6 build exists, and I ran a short MTP-depth calibration on it with a coding prompt and thinking off, but it never went through the eight tasks, so it has no grade. On quality this suite could not separate the two 8-bit packages: both passed every check, so the only measured difference was time, and with one scored attempt per task the half-second between the two Youssofal packages is not a ranking.

Why a faster decode counter did not finish sooner

The number a runtime shows on screen, tokens per second, is a rate. The time you wait is how many tokens the model decides to write divided by that rate, and a reasoning model decides that afresh on every prompt. In round one the Q4 package decoded at 31.390 tok/s and the Q8 package at 28.305 tok/s, but Q4 wrote 15,864 tokens to Q8’s 13,972. Divide tokens by rate and the decode phases come out at 505.4 s for Q4 and 493.6 s for Q8, which is why the runtime clocks are only 12 seconds apart. The full command walls then landed within a second of each other because the Q8 commands happened to spend about 13 s more outside generation, on loading, setup and the runner’s polling delay. A higher counter is only a win if the model also stops writing at about the same point, and nothing in these runs makes that a guarantee.

Decode time is tokens written times seconds per token: Youssofal Q4 and Q8, round one
Box width is generated tokens. Box height is seconds per token, the inverse of the decode rate. Both boxes use one scale, so the area of each box is its decode time over the eight answers.
Generated tokens times seconds per token for the Youssofal Q4 and Q8 packages Two boxes drawn to one scale. Youssofal Q4, condition matrix-14: 15,864 generated tokens at 31.86 milliseconds per token (31.390 tokens per second), decode time 505.4 seconds. Youssofal Q8, condition matrix-08: 13,972 tokens at 35.33 milliseconds per token (28.305 tokens per second), decode time 493.6 seconds. The Q4 box is wider and shorter; the two areas differ by 2.4 percent. Youssofal Q4 · matrix-14 15,864 tokens wide 31.86 ms per token tall · 31.390 tok/s 505.4 s decode time, eight answers Youssofal Q8 · matrix-08 13,972 tokens wide 35.33 ms per token tall · 28.305 tok/s 493.6 s decode time, eight answers 0 4,000 8,000 12,000 16,000 Generated tokens, reasoning and final answer together, summed over the eight answers
Conditions matrix-14 (Youssofal Q4) and matrix-08 (Youssofal Q8), round one, one scored attempt per task, 14 September 2026, MTPLX 2.11.2. Decode time is the runtime’s decode phase summed over eight answers; the weighted rate is total tokens divided by total decode seconds. Reading the prompt before the first output token (prefill: 7.8 s for Q4, 7.4 s for Q8), loading and setup are outside the boxes. Q4 wrote 13.5% more tokens at a 10.9% higher rate and spent 2.4% longer decoding.

Round two: Swift against Youssofal Q8

This round has a different clock, so do not read its numbers against the table above. The model stayed loaded in a local MTPLX HTTP server, each task was one request, and load time is therefore outside the measurement. One trial each.

Round two: resident HTTP, medium effort, 64,000-token allowance
ConditionCorrect /8Wall sGenerated tokens
Swift Q8 (matrix-15)8724.1513,516
Youssofal Q8 MTPLX (matrix-16)8743.1013,661
Request wall seconds summed over eight tasks, one trial per condition, 17 September 2026 snapshot. Model already loaded; load time is not included.

Both passed all eight. Swift’s total is 2.55% lower, a 19-second gap in one trial that is too small to establish a speed ranking. Each build was faster on different tasks.

Seconds to a passing answer, by task: Swift Q8 versus Youssofal Q8
Shorter is better. Bar length runs from 0 to 200 s. Every task passed for both builds.
  • Youssofal: Qwen 3.8 27B Q8 MTPLX, matrix-16
  • Swift: Swift Qwen 3.8 27B Q8, matrix-15
invoice
Youssofal93.3 s
Swift76.5 s
schedule
Youssofal113.3 s
Swift107.1 s
intervals
Youssofal72.0 s
Swift49.9 s
batches
Youssofal96.1 s
Swift57.6 s
sql
Youssofal68.1 s
Swift140.0 s
cache
Youssofal151.3 s
Swift174.8 s
extract
Youssofal89.5 s
Swift69.2 s
policy
Youssofal59.6 s
Swift49.0 s
Conditions matrix-16 and matrix-15, resident HTTP request wall, one trial each, 17 September 2026 snapshot. Geometric mean of Swift’s per-task time ratios: 91.41% of Youssofal Q8 across all 8 shared passing tasks (Swift 1.09× faster than Youssofal Q8 when the two are compared task by task); arithmetic mean of the same ratios 98.34%.

Swift was faster on six of the eight tasks. Its clearest gains were the two Python tasks: 49.94 s against 71.97 s on interval union and 57.60 s against 96.12 s on dependency batching. Youssofal Q8 was much faster on the SQL task, 68.07 s against 139.99 s, where Swift wrote 2,727 tokens to Youssofal’s 1,202, and it was also ahead on the cache simulation, 151.28 s against 174.75 s. That SQL result is why the arithmetic mean of the ratios sits at 98.34% while the geometric mean sits at 91.41%: the plain average is pulled back to even by the one task that took twice as long, and the geometric mean is less swayed by it. Both are on the chart because they answer different questions. One trial per task will not rank these two builds.

If the tasks that matter to you look like the Python ones, Swift is a reasonable pick. If they look like SQL, Youssofal Q8 was much faster in this one trial.

The four writing tasks

Round two added four writing prompts as a secondary check: a 220–280-word briefing compressed from supplied sources, a 450–600-word explainer written from the model’s own knowledge, a 220–280-word memo from a small dataset with a trap in it, and a 160–220-word rewrite of a customer email. One assistant scored each answer on a weighted rubric and recorded any factual error it found, with a quote and a correction. The labels were shuffled, but the reviewer had prior exposure to related material, and no human read the answers blind, so these are one assistant’s judgments rather than a measured human preference.

Writing: Youssofal Q8 versus Swift Q8, four tasks each
TaskYoussofal Q8 /100Swift Q8 /100Youssofal sSwift s
source_summary8893326.64229.97
knowledge_explainer7575650.26636.50
data_to_report9695418.71151.03
editorial_rewrite8887232.35165.45
Mean over 4 / total s86.7587.501,627.961,182.95
Writing conditions keyed original (the Youssofal Q8 MTPLX package) and swift in the evidence export, MTPLX medium MTP, one attempt per task, 17 September 2026 snapshot. Scores are one assistant’s rubric judgments with shuffled labels and prior exposure, not a human blind test.

Both builds finished all four. The model-judge means over four tasks are 87.50/100 for Swift and 86.75/100 for Youssofal Q8, and I treat that as a tie: the rubric is coarse, the reviewer is one assistant, and there is no significance test to be had from four answers. Time is the clearer difference. Swift’s four answers took 1,182.95 s in total and Youssofal’s 1,627.96 s, and Youssofal wrote more tokens on every one of the four tasks, 6,904 against 2,613 on the data memo alone.

Both builds made factual errors in the knowledge explainer. The model judge rated both 75/100, both got 3 of 5 for factual accuracy, and the reviewer flagged two errors in each. The prompt asked for an article on the urban heat island. From Youssofal Q8’s answer:

The urban heat island is a micro-scale, immediate effect: it happens every summer evening in virtually every city, regardless of whether the planet's average temperature is rising.

The reviewer’s recorded correction: “Urban-rural temperature differences vary with weather, geography, surface cover and time. Calm clear conditions strengthen the effect; the universal evening claim is too strong.” From Swift’s answer:

Planting a tree in a yard or community garden is one of the most effective individual actions, because leaves shade the ground and their roots release moisture that cools the air.

The recorded correction: “Roots take up water; transpiration releases water vapor mainly through leaves. The physiological mechanism is wrong even though the overall cooling recommendation is sound.”

Both articles read well, and both needed factual corrections before publication. On the summary, memo and rewrite, where the facts were supplied in the prompt, neither build had an error flagged. I would use their source-grounded writing as a first draft and fact-check their knowledge articles before publication.

The hosted 27B

The hosted condition was qwen/qwen3.8-27b on OpenRouter, served by DeepInfra at what the provider advertises as BF16, a 16-bit floating-point format. I did not verify the precision independently; “provider advertised BF16” is as far as the evidence goes.

Hosted 27B against the local Youssofal Q8, objective tasks
TaskYoussofal Q8 (matrix-16)Hosted 27B (matrix-19)
invoicePass, 93.26 sPass, 42.67 s
schedulePass, 113.30 sFail, 45.14 s
intervalsPass, 71.97 sPass, 28.64 s
batchesPass, 96.12 sPass, 34.13 s
sqlPass, 68.07 sFail, 28.06 s
cachePass, 151.28 sPass, 50.85 s
extractPass, 89.51 sPass, 24.38 s
policyPass, 59.58 sPass, 19.95 s
Total8/8, 743.10 s6/8, 273.82 s
One trial each, 17 September 2026 snapshot. Local time is resident HTTP request wall; hosted time is HTTP round trip including network and queue, and hosted GPU decode is not available. The failed hosted attempts keep their elapsed time.

The hosted run passed 6 of 8, failing the scheduling task and the SQL query that every local build in this article passed. Both failures came back in under a minute using a small fraction of the allowance, so they are recorded as graded failures rather than budget exhaustion; the export does not say what the two answers contained. On the six tasks both passed, the hosted service took 35.44% of the local time by geometric mean, a paired speed of 2.82×, and its full eight attempts took 273.82 s against 743.10 s locally.

The hosted 27B finished all four prompts with a model-judge mean of 86.5/100 in 495.31 s, against 86.75/100 in 1,627.96 s for the local Youssofal Q8. The reviewer flagged factual errors in three of the four hosted answers, including a moderate one in the explainer, and in one of four for the local package.

The serving backend, prompt rendering and reasoning controls differ, so this is a comparison of a local workflow against a provider workflow, not of two copies of one model. The trials say nothing about whether Q8 weights are better or worse than BF16 weights. They do show that the hosted run failed two tasks the local Q8 passed, that it was about 2.8 times faster on the six both passed, and that using it sends your prompts off the machine. The field guide covers the local-versus-cloud choice more generally.

Why the two rounds do not line up

The same Youssofal Q8 package took 576.33 s in round one and 743.10 s in round two, with almost the same token count, 13,972 against 13,661, and a recorded weighted decode rate of 28.30 tok/s there against 18.67 tok/s here. The two runs used different versions of the runtime, a different configured context, a different allowance and a different clock, and I did not run the experiment that would separate those causes. Do not read the pair as a before-and-after.

The four builds, with their numbers

Conservative local default

Youssofal Q8 MTPLX

Youssofal Optimized-Quality · MTPLX HTTP · medium · MTP
Objective
8 of 8 in 743.10 s (round two); 8 of 8 in 576.33 s (round one)
Writing
4 of 4 finished, mean 86.75 /100
Disk
27.91 GiB package
Headroom
More than the custom Flash build, which carries 76.61 GiB of disk payload and held about 46 GiB in memory after loading
  • 8/8 objective
  • 4/4 writing
  • One trial

Caveat. Its knowledge explainer scored 75 with two flagged errors, and Swift scored higher than it on the source summary.

Current verdict: living guide, matrix-16 →
When memory is the constraint

Youssofal Q4 MTPLX

Youssofal Optimized-Speed · MTPLX CLI · medium requested · MTP
Objective
8 of 8 in 575.82 s (round one, 4,096-token allowance)
Writing
Not run in the four-task writing suite
Disk
19.28 GiB package
  • 8/8 objective
  • Round one only
  • No writing suite

Caveat. No matched 64k-token or writing run exists, so 8/8 on a small historical set is not evidence of quality parity with Q8 everywhere.

Current verdict: living guide, matrix-14 →
Close peer, choose by task

Swift Q8

KrossKinetic · MTPLX HTTP · medium · MTP
Objective
8 of 8 in 724.15 s; faster on 6 of 8 tasks, twice the time on SQL
Writing
4 of 4 finished, mean 87.50 /100
Disk
Not recorded
  • 8/8 objective
  • 4/4 writing
  • One trial

Caveat. The 2.55% total-time gap is one trial and not a ranking; its knowledge explainer also scored 75 with two flagged errors. Conversion provenance not verified.

Current verdict: living guide, matrix-15 →
Speed, with a different failure profile

Hosted 27B

OpenRouter · DeepInfra · provider advertised BF16 · 64k reasoning
Objective
6 of 8 in 273.82 s; schedule and sql failed
Writing
4 of 4 finished, mean 86.5 /100, in 495.31 s
Memory
None on your machine; prompts leave it
  • 6/8 objective
  • 4/4 writing
  • Hosted timing

Caveat. Not the local model on a faster clock: outcomes differed, and three of four writing answers had a flagged error. Precision not independently verified.

Current verdict: living guide, matrix-19 →

Neither Cold Fusion build showed a measured advantage over the Youssofal packages in these runs. That is an observation about two packages under one set of settings, not a verdict on fine-tunes in general. Future recommendations will appear in the living guide.

The full specification

What is in each package

The builds in this article
BuildPackageBody precisionDisk GiBWhere it was tested
Youssofal Q8 MTPLXYoussofal/Qwen3.8-27B-MTPLX-Optimized-Quality8-bit, group 64; int8 MTP sidecar27.91Round one CLI (matrix-08), round two HTTP (matrix-16), writing
Youssofal Q4 MTPLXYoussofal/Qwen3.8-27B-MTPLX-Optimized-Speed4-bit, group 32, mixed precision; int4 MTP sidecar19.28Round one CLI (matrix-14)
Swift Q8KrossKinetic/Swift-Qwen3.8-27B-MTPLX-Q8Q8 as publishedNot recordedRound two HTTP (matrix-15), writing
Cold Fusion Q8DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.18-bit, group 64; BF16 MTP28.29Round one CLI (coldfusion_8bit)
Cold Fusion Q4DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.14-bit, group 64; BF16 MTP15.76Round one CLI (coldfusion_4bit)
Cold Fusion Q6DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.16-bitNot recordedMTP calibration sweep only; no eight-task result
Hosted 27BOpenRouter qwen/qwen3.8-27b, DeepInfraProvider advertised BF16–Hosted (matrix-19), writing
Disk sizes are saved package sizes in GiB, including packaged auxiliaries, from the 14 September 2026 report. A disk size is not a RAM requirement. Swift’s conversion provenance was not verified for this article; it is described as tested, not as Qwen’s weights on a faster runtime.
Exact revisions captured

From local provenance records at test time, not a fresh check of the public model cards. Youssofal Q8 MTPLX: Youssofal/Qwen3.8-27B-MTPLX-Optimized-Quality at 35ec534dfe897f39bb8b6fd43227d2b1fc214696. Youssofal Q4 MTPLX: Youssofal/Qwen3.8-27B-MTPLX-Optimized-Speed at 766cec2bb474544381139cc036ae1c2267759b33. Cold Fusion Q4 and Q8: DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.1 at 9c44193f07782c85c0f437a5d8466ba5c95c95fe. No revision was captured for the Swift package.

Exactly how each round was configured

Round one, 14 September 2026: the MTPLX command-line tool, version 2.11.2, one fresh process per answer, reasoning on at requested medium effort, temperature zero with a fixed seed, MTP depth 3, and an allowance of 4,096 tokens for reasoning and answer together. Round two, in the 17 September 2026 snapshot: the model resident in a local MTPLX HTTP server, one request per task, the effort level verified as medium in the prompt, MTP on, a total output allowance of 64,000 tokens and a configured context of 131,072 tokens. The hosted condition was requested with a 64,000-token reasoning allowance and 72,000 total. Writing answers were scored 0–5 per rubric dimension, weighted and scaled to 100, with factual errors recorded as a quote plus a correction. The rubric was written before the answers were produced, and each of the four writing tasks has its own set of weights.

The writing rubric, dimension by dimension

Every dimension is scored 0 to 5, where 0 is absent or unusable and 5 is excellent for the brief. The weights below sum to 100 for each task, and the score printed in the writing table is the weighted average rescaled to 100. The per-dimension scores behind every answer are in the writing answers and reviews file, so each score in that table can be recomputed rather than taken on trust: Youssofal Q8’s 88/100 on the source summary is 5 for factual faithfulness, 4 for coverage, 4 for clarity, 4 for prose and 5 for brief compliance, weighted and divided by five.

Writing taskDimensions and weights
source_summaryFactual faithfulness 35, decision-relevant coverage 25, clarity and organization 20, natural prose 15, brief compliance 5
knowledge_explainerFactual accuracy 30, clarity of explanation 25, flow 15, useful concrete detail 15, natural voice 10, brief compliance 5
data_to_reportNumerical accuracy 25, causal caution 30, decision usefulness 20, clarity and natural prose 20, brief compliance 5
editorial_rewriteFactual preservation 35, reader usefulness 20, tone and natural prose 25, organization 15, brief compliance 5

The words the tables use

Q4 / Q8, group size
Weights stored in 4 or 8 bits instead of 16. Group size is how many weights share one scale factor; a smaller group keeps more precision and costs more bytes.
MTP
Multi-token prediction: a small extra head proposes several tokens and the main model verifies them, which can raise the decode rate. Every local objective run here used MTP at depth 3; the local writing runs are recorded as MTP with no captured depth, and the hosted runs’ decoding is provider-controlled and not measured.
BF16
A 16-bit floating-point format. It is the precision these weights are normally published in, before anyone quantizes them to 8 or 4 bits.
Native generation vs command wall
The runtime’s own clock covers prompt evaluation, reasoning and the answer. The command wall adds loading the model, setup and teardown, because round one started a fresh process for every answer.
Resident HTTP
The model stays loaded in a local server and each task is one request, so load time is not in the clock. Round two was measured this way.
Total output allowance
The cap on reasoning and answer tokens together. 4,096 in round one, 64,000 in round two. Hitting it without a final answer is a failure with its elapsed time kept.

What this does not show

What this does not show
  • Which build is better on a second trial. Every time here is one scored attempt per task.
  • Whether Q4 matches Q8 on writing or at a 64,000-token allowance. Neither run exists for the Q4 package.
  • Anything about Cold Fusion Q6 beyond a decode calibration.
  • Agentic work, tool use, repair loops, long documents, multilingual prompts or vision. Eight direct-answer prompts and four writing prompts on one M5 Pro machine.
  • Whether the hosted precision was BF16, or why the same Q8 package timed differently across the two rounds.

Public sources

  1. Qwen 3.8 27B on OpenRouter, the endpoint used for the hosted condition, checked 17 September 2026. Provider and speed figures there are live and are not this benchmark.
  2. Youssofal/Qwen3.8-27B-MTPLX-Optimized-Quality and Youssofal/Qwen3.8-27B-MTPLX-Optimized-Speed, the Youssofal Q8 and Q4 packages, at the revisions listed above. Named, not linked: availability was not rechecked.
  3. DavidAU/Qwen3.8-27B-Cold-Fusion-GAIN-V1.1, the Cold Fusion source, and KrossKinetic/Swift-Qwen3.8-27B-MTPLX-Q8, the Swift package as tested. Named, not linked, as above.
  4. Curated evidence for every condition here: conditions, per-task objective attempts, historical packages and writing answers and reviews, snapshot 17 September 2026.
About the author
Héctor Reinoso writes about how organizations should be designed when intelligence becomes abundant. He works on enterprise AI adoption inside a large industrial organization, after 25 years as a strategy consultant and transformation executive across four continents. Harvard MBA, industrial engineer, and still writes the code he writes about. More →