Skip to content
benchmark.securesight.ai
DE

Run locally

Qwen3.8-27B

Radeon AI PRO R9700 · 3 runs

Hardware
Radeon AI PRO R9700gfx1201 · RDNA4
Memory
32 GB dedicated
Tasks
Moorhuhn, Clair Obscure, Image recognition
Quantisations
UD-Q4_K_XL, UD-Q6_K_M
Kai Bennett

Personal opinion

Kai Bennett

For me, it is the first model I would also seriously use for coding on my own hardware. Sure, its predecessor, Qwen 3.6 27b, was already strong, but in my view this one has stepped it up quite a bit once again in terms of quality, agentic coding and the ability to review its own results. For setups between 24 and 128 GB of VRAM, it is the best model for me in September 2026.

I find it interesting that there are now also uncensored variants of it with the guardrails completely disabled, which of course has both advantages and disadvantages.

About the model

Dense model with 27 billion parameters and 262,144 tokens of native context, extensible to 1,000,000 tokens according to the model card. The card lists 64 layers with the layout 16 × (3 × (Gated DeltaNet → FFN) → 1 × (Gated Attention → FFN)), and config.json sets full_attention_interval to 4. The card gives the type as a causal language model with a vision encoder, for which config.json specifies 27 layers (field vision_config.depth). The card also mentions multi-token prediction in training, and the license is Apache 2.0.

Architecture
Dense (model card: “dense model”)
Parameters
27B
Layers
64
Layer layout
16 × (3 × (Gated DeltaNet → FFN) → 1 × (Gated Attention → FFN))
Native context
262,144 tokens
Extensible context
up to 1,000,000 tokens
License
Apache 2.0

Figures from the vendor: Source · Model card · Vendor

Run: Moorhuhn · UD-Q4_K_XL · reasoning xhigh · 31 August 2026

The numbers at a glance

Decode, median

33.69 t/s

82 scored responses

Decode, p10 to p90

27.83–45.34 t/s

Responses from 200 tokens up are scored; shorter ones produce outliers of over 1,000,000 t/s in the log, because a single token there takes almost zero milliseconds. Classic median, percentiles by rank. This threshold does NOT apply to prefill, where every evaluation counts.

Peak

84.92 t/s

a single response

Prefill, median

234.9 t/s

Output generated

332,405 Token

scored responses only, from 200 tokens up

Runtime

9.0 h

540 minutes

Self-corrections

4

Responses in total

108

82 of them scored

Input in total

8.04 Mio. Token

the context of all 108 requests added up

of that newly computed

503,681 Token

7.54 million were in the prompt cache

Through the model in total

8.38 Mio. Token

input and output together

At a hosting provider

1.24 USD

Qwen3.8-27B hosted, cheapest rate

What this run would have cost with Qwen3.8-27B at a hosting provider
Provider Inputper M Outputper M Cacheper M This runwithout cache This runwith cache
Darkbloom 0.152.00 · 1.88 ·
Parasail 0.242.20 0.050 2.67 1.24
Chutes 0.322.50 0.032 3.41 1.24
Alibaba Cloud 0.422.55 0.085 4.28 1.71

All amounts in USD. The first three columns are tariffs per million tokens, the last two are the total for this run. Calculated with the same tokens as on the left: 8,043,931 input across all requests, of which 503,681 were newly computed and 7,540,250 came from the prompt cache, plus 336,107 output. The “without cache” column charges the entire input at the input rate, the “with cache” column charges the cached part at the provider's cache rate. Providers with a cache rate are the norm, so the right column is the more realistic one. These are the prices for Qwen3.8-27B itself, at providers that host exactly this model, not those of some other cloud model. As of 7 September 2026, list prices without volume discounts. Locally, the run costs electricity and the purchase of the card instead. Prices at OpenRouter, retrieved 2026-09-07.

What this run would have cost with Sonnet 5 at the same token consumption
Model Inputper M Outputper M Cache writeper M Cache readper M This runwithout cache This runwith cache
Sonnet 5 2.0010.00 2.500.20 19.45 6.13

All amounts in USD. The first four columns are tariffs per million tokens, the last two are the total for this run. Calculated with exactly the tokens of this run: 8,043,931 input, of which 503,681 new and 7,540,250 from the cache, plus 336,107 output. Without cache at the input rate; with cache, the new part pays the write rate and the cached part the read rate. This is a comparison that assumes the same token consumption. A different model solves the same task with a different number of tokens, usually fewer; so the row says what these tokens would have cost with Sonnet 5, not what Sonnet 5 would have cost for this task. Anthropic price list, retrieved 2026-09-08.

Thinking tokens: They are contained in the output tokens but cannot be separated out. llama.cpp points this out itself at startup: “chat template supports preserving reasoning, consider enabling it via --reasoning-preserve”. The option was not set, so the log does not separate thinking from the answer.

llama.cpp server log · 82 responses from 200 tokens up. Runtime about 9 h in two sessions (31 Aug from 15:58, 1 Sep until 09:50), stopped manually at the end. The log only covers the first session (3.2 h); after that the server was restarted. · Raw log

Results

Moorland Mayhem — Featherstorm: Classic Hunt on Nebelmoor, 22 seconds uncut from a round of 120 seconds.

Moorland Mayhem — Featherstorm

Opens in its own layer

Aim and shoot with mouse or finger, R reloads. The start is behind the mode and map selection, not directly behind the first button. Needs WebGL. The first click after loading is swallowed, the second one works.

Change made by this site: The build reads localStorage without a safeguard. In the sandbox that throws an error, and the loading screen would hang. The embedded version therefore gets a substitute storage that lives only in memory; a saved game does not survive a reload. The original in the repo is unchanged.

Loads only on click · 0.3 MB transfer · 1.3 MB unpacked

Prefill over context depth

A peak figure at short context says little about how a model feels after hours. Hence the curve.

171282393 35 K · 371.4 t/s 65 K · 280.3 t/s 95 K · 252.7 t/s 125 K · 192.3 t/s 35 K125 K t/s

Context depth in thousands of tokens · Median per 30K band from the server log. Only evaluations from 1,000 tokens up are counted, because below that the rate depends on call overhead rather than on depth: under 300 tokens the median is 158 t/s, from 5,000 tokens up it is 333. The context position comes from pos_max, not from the number of evaluated tokens, because with prompt caching “prompt eval time” only counts what is new. 7 to 17 measurements per band, deepest position reached 140,016 tokens. There is no measurement below 20K, the prompt alone is that long.

llama.cpp launch parameters

Context
262,144
KV-Cache
q8_0 / q8_0
Micro-Batch
288
Speculative
draft-mtp + ngram-mod 24/48/64 · n_max 2
Build
b10717
llama-server -m Qwen3.8-27B-UD-Q4_K_XL.gguf ^
  --load-mode none --mmproj mmproj-F16.gguf --image-min-tokens 1024 ^
  --alias Qwen3.8-27B -dev Vulkan0 --host 127.0.0.1 --port 8080 ^
  -c 262144 -ngl 99 -fa on --fit off -ot "token_embd\.weight=Vulkan0" ^
  -ctk q8_0 -ctv q8_0 -b 2048 -ub 288 ^
  --parallel 1 --kv-unified ^
  --ctx-checkpoints 4 --checkpoint-min-step 16384 --cache-ram 0 ^
  --spec-type draft-mtp,ngram-mod --spec-draft-n-max 2 ^
  --spec-ngram-mod-n-match 24 --spec-ngram-mod-n-min 48 --spec-ngram-mod-n-max 64 ^
  --spec-draft-device Vulkan0 --spec-draft-ngl 99 ^
  --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.0 ^
  --presence-penalty 0.0 --repeat-penalty 1.0 ^
  --jinja --reasoning on --reasoning-effort xhigh --reasoning-format deepseek --reasoning-budget -1

Assessment

31 / 40

The grade is a personal, and therefore subjective, assessment.

Game feelDoes it run, and does it play?

There is a good game feel in the Moorhuhn test and it is varied, I actually have fun playing it too, even if there are a few minor flaws.

PresentationMenus, HUD, graphics, sound

Main menu with eleven entries, HUD, progress menu, the instructions are somewhat lacking, I also have to click start twice to get it going, there are still some minor bugs, but overall already impressive for a single shot.

Code qualityTests, structure, self-corrections

11 test files with 1,257 test lines, no repair scripts. The prescribed structure was implemented.

ScopeHow much of the prompt was fulfilled?

42 files, 10,838 lines; game modes, menus and statistics complete.

What went wrong

There were 4 self-corrections by the model.

llama.cpp server log · 82 responses from 200 tokens up. Runtime about 9 h in two sessions (31 Aug from 15:58, 1 Sep until 09:50), stopped manually at the end. The log only covers the first session (3.2 h); after that the server was restarted.

Run: Moorhuhn · UD-Q4_K_XL · reasoning medium · 01 September 2026

The numbers at a glance

No server log, so no speed. The sequence of events comes from the chat history and the delivered source code, the runtime from the display in VS Code.

Runtime

6.5 h

388 minutes

Self-corrections

2

Second pass of the same model with the same launch line, only with --reasoning-effort medium instead of xhigh. Runtime 6 h 28 min, read by Kai Bennett from the display in VS Code. One prompt and one click on “Continue to iterate”, no other intervention. The chat history counts 95 terminal commands, 110 completed tool calls and 17 test, build or lint runs. There is no decode speed: that would require the server log, which is not available for this run.

Results

Moorland Mayhem — Featherstorm

Opens in its own layer

Aim and shoot with mouse or finger. Needs WebGL.

Loads only on click · — MB transfer · — MB unpacked

llama.cpp launch parameters

Context
262,144
KV-Cache
q8_0 / q8_0
Micro-Batch
288
Speculative
draft-mtp + ngram-mod 24/48/64 · n_max 2
Build
b10717
llama-server -m Qwen3.8-27B-UD-Q4_K_XL.gguf ^
  --load-mode none --mmproj mmproj-F16.gguf --image-min-tokens 1024 ^
  --alias Qwen3.8-27B -dev Vulkan0 --host 127.0.0.1 --port 8080 ^
  -c 262144 -ngl 99 -fa on --fit off -ot "token_embd\.weight=Vulkan0" ^
  -ctk q8_0 -ctv q8_0 -b 2048 -ub 288 ^
  --parallel 1 --kv-unified ^
  --ctx-checkpoints 4 --checkpoint-min-step 16384 --cache-ram 0 ^
  --spec-type draft-mtp,ngram-mod --spec-draft-n-max 2 ^
  --spec-ngram-mod-n-match 24 --spec-ngram-mod-n-min 48 --spec-ngram-mod-n-max 64 ^
  --spec-draft-device Vulkan0 --spec-draft-ngl 99 ^
  --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.0 ^
  --presence-penalty 0.0 --repeat-penalty 1.0 ^
  --jinja --reasoning on --reasoning-effort medium --reasoning-format deepseek --reasoning-budget -1

Assessment

26 / 40

The grade is a personal, and therefore subjective, assessment.

Game feelDoes it run, and does it play?

Starts and is playable, but the main menu has five entries instead of eleven.

PresentationMenus, HUD, graphics, sound

No recording available, assessed on the delivered build.

Code qualityTests, structure, self-corrections

10 test files with 604 test lines, no repair script.

ScopeHow much of the prompt was fulfilled?

44 files, 8,530 lines; modes are missing compared with the xhigh run.

This assessment is a proposal and has not yet been confirmed by Kai Bennett. Code quality and scope rest on counted files, source and test lines and repair scripts in the evidence repository.

What went wrong

There were 2 self-corrections by the model.

Second pass of the same model with the same launch line, only with --reasoning-effort medium instead of xhigh. Runtime 6 h 28 min, read by Kai Bennett from the display in VS Code. One prompt and one click on “Continue to iterate”, no other intervention. The chat history counts 95 terminal commands, 110 completed tool calls and 17 test, build or lint runs. There is no decode speed: that would require the server log, which is not available for this run.

Run: Clair Obscure · UD-Q6_K_M · reasoning on, no limit · 24 August 2026

The numbers at a glance

Decode, median

26.30 t/s

30 scored responses

Decode, p10 to p90

15.55–34.22 t/s

Responses from 200 tokens up are scored; shorter ones produce outliers of over 1,000,000 t/s in the log, because a single token there takes almost zero milliseconds. Classic median, percentiles by rank. This threshold does NOT apply to prefill, where every evaluation counts.

Peak

42.39 t/s

a single response

Prefill, median

159.4 t/s

Output generated

118,919 Token

scored responses only, from 200 tokens up

Runtime

1.9 h

115 minutes

Self-corrections

6

Responses in total

35

30 of them scored

Input in total

3.24 Mio. Token

the context of all 35 requests added up

of that newly computed

293,109 Token

2.95 million were in the prompt cache

Through the model in total

3.36 Mio. Token

input and output together

At a hosting provider

0.48 USD

Qwen3.8-27B hosted, cheapest rate

What this run would have cost with Qwen3.8-27B at a hosting provider
Provider Inputper M Outputper M Cacheper M This runwithout cache This runwith cache
Darkbloom 0.152.00 · 0.73 ·
Parasail 0.242.20 0.050 1.04 0.48
Chutes 0.322.50 0.032 1.34 0.49
Alibaba Cloud 0.422.55 0.085 1.68 0.68

All amounts in USD. The first three columns are tariffs per million tokens, the last two are the total for this run. Calculated with the same tokens as on the left: 3,240,306 input across all requests, of which 293,109 were newly computed and 2,947,197 came from the prompt cache, plus 119,627 output. The “without cache” column charges the entire input at the input rate, the “with cache” column charges the cached part at the provider's cache rate. Providers with a cache rate are the norm, so the right column is the more realistic one. These are the prices for Qwen3.8-27B itself, at providers that host exactly this model, not those of some other cloud model. As of 7 September 2026, list prices without volume discounts. Locally, the run costs electricity and the purchase of the card instead. Prices at OpenRouter, retrieved 2026-09-07.

What this run would have cost with Sonnet 5 at the same token consumption
Model Inputper M Outputper M Cache writeper M Cache readper M This runwithout cache This runwith cache
Sonnet 5 2.0010.00 2.500.20 7.68 2.52

All amounts in USD. The first four columns are tariffs per million tokens, the last two are the total for this run. Calculated with exactly the tokens of this run: 3,240,306 input, of which 293,109 new and 2,947,197 from the cache, plus 119,627 output. Without cache at the input rate; with cache, the new part pays the write rate and the cached part the read rate. This is a comparison that assumes the same token consumption. A different model solves the same task with a different number of tokens, usually fewer; so the row says what these tokens would have cost with Sonnet 5, not what Sonnet 5 would have cost for this task. Anthropic price list, retrieved 2026-09-08.

llama.cpp server log · 30 of 35 responses from 200 tokens up · run of 28 August 2026. The server ran for 115.8 minutes in one go. From the first task to the end of the last one it is 114.9 minutes, without a single pause of more than 60 seconds in between. Of that, pure compute time on the GPU is 114.5 minutes, 88.8 minutes of it generation. · Raw log

Results

Clair Obscure — Expedition 33 (Reactive Combat Study)

Opens in its own layer

Mouse and keyboard. Enemy attacks are announced, parrying and dodging happen in real time. Needs WebGL.

Loads only on click · 0.4 MB transfer · 1.9 MB unpacked

Prefill over context depth

A peak figure at short context says little about how a model feels after hours. Hence the curve.

72308544 8 K · 498.3 t/s 16 K · 423.1 t/s 34 K · 323.0 t/s 67 K · 223.3 t/s 100 K · 172.4 t/s 132 K · 139.6 t/s 164 K · 118.0 t/s 8 K164 K t/s

Context depth in thousands of tokens · Instantaneous rate within a single continuous prefill: task 0 of this run processed 180,396 tokens in one go. llama.cpp reports an intermediate status every 2,048 tokens; the rate is the quotient of tokens and time between two consecutive reports. There are 92 data points, seven of them are shown. Because all of them come from the same prefill, the curve is free of differences between requests. From 8K to 164K the rate drops by a factor of 4.2. Every point can be recalculated from the linked server log.

llama.cpp launch parameters

Context
262,144
KV-Cache
q8_0 / turbo4
Micro-Batch
128
Speculative
draft-mtp + ngram-mod · acceptance 0.553
Build
bd9bd1b
llama-server -m Qwen3.8-27B-UD-Q6_K_M.gguf ^
  --load-mode none --mmproj mmproj-F16.gguf --image-min-tokens 1024 ^
  -dev Vulkan0 --host 127.0.0.1 --port 8080 ^
  -c 262144 -ngl 99 -fa on --fit off -ot "token_embd\.weight=Vulkan0" ^
  -ctk q8_0 -ctv turbo4 -b 2048 -ub 128 ^
  --parallel 1 --kv-unified ^
  --ctx-checkpoints 4 --checkpoint-min-step 16384 --cache-ram 0 ^
  --spec-type draft-mtp,ngram-mod --spec-draft-n-max 2 ^
  --spec-ngram-mod-n-match 24 --spec-ngram-mod-n-min 48 --spec-ngram-mod-n-max 64 ^
  --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.0 ^
  --jinja --reasoning on --reasoning-format deepseek --reasoning-budget -1

Assessment

28 / 40

The grade is a personal, and therefore subjective, assessment.

Game feelDoes it run, and does it play?

Playable in the browser; attacks are announced, parrying and dodging happen in real time.

PresentationMenus, HUD, graphics, sound

Recording available, combat HUD complete.

Code qualityTests, structure, self-corrections

No test files; six logged self-corrections.

ScopeHow much of the prompt was fulfilled?

36 files, 11,115 lines, the most extensive Clair Obscure run on local hardware.

This assessment is a proposal and has not yet been confirmed by Kai Bennett. Code quality and scope rest on counted files, source and test lines and repair scripts in the evidence repository.

What went wrong

There were 6 self-corrections by the model.

llama.cpp server log · 30 of 35 responses from 200 tokens up · run of 28 August 2026. The server ran for 115.8 minutes in one go. From the first task to the end of the last one it is 114.9 minutes, without a single pause of more than 60 seconds in between. Of that, pure compute time on the GPU is 114.5 minutes, 88.8 minutes of it generation.

Image recognition

A separate test run with the same model on the same machine, part of a different run. The time was noted from the VS Code chat display.

Values read

44 of 50

dashboard, 50 checkable entries

Price tags

2 of 4

read fully correctly

Invented tags

4

1 of them claimed as certain

Traps passed

2 of 4

places that break the pattern

Provisional: the answer key for the price tags is not fully confirmed yet.

Task 1 · reading values

The test image, a dashboard of my own
The test image. A screenshot of securesight.ai
10203040506070`22`24`25`26NOWIntelligenz-IndexGPT-4GPT-4oClaude 3.5 SonnetOpus 4.6GPT-5.5Claude Fable 5Gemma 3 27BGemma 4 12BGemma 4 31B ★Qwen3-Next 80B (reasoning)Qwen3.5 39BQwen3.6 27B ★Ministral 3 14BMistral Small 4Proprietäre FlaggschiffeQwen openGemma openMistral
What the model redrew from it as SVG.

What the model read from the tooltip table

Claude Opus 4.5Qwen3.6 27B
Intelligence Index40.837.1
GPQA Diamond8784
Humanity's Last Exam2922
Terminal-Bench 2.05061

And from the KPI tiles

  • QWEN3.6 27B · OPEN 37.1 · AA Intelligence Index — Open-Weight, kein API-Key, läuft auf ihrer eigenen GPU.
  • VS. OPUS 4.5 (40,7) 91% · des Opus-4.5-Niveaus im Gesamtindex. Bei Coding-Benchmarks: gleichauf.
  • PROPRIETÄRE SPIEZE · HEUTE 59.9 · Das Rechenzentrum klettert weiter — doch der Abstand schrumpft jedes Quartal.

Task 2 · complex text recognition

What is tested is the reading of tiny, tilted, partly hidden text in a photo with more than forty objects, plus two currency symbols that are hard to tell apart once rotated. The price tags are what the test is run on.

The second test image, a trade fair stand
Marked are the places where the model located the tags, and the area that is scored. The numbers match the table beside it.

What the model read

What the model read there £ Ordercertain
1 REDHOOD ARKHAM 80 65 gbp zuerst yes
2 JOKER 50 40 gbp zuerst no
3 unnamed 45 35 gbp zuerst yes
4 REDHOOD (BATTL) DARK RED 80 65 gbp zuerst no
5 BANE not readable not readable · no
6 HULK not readable not readable · no
7 BATMAN not readable not readable · no

The model counted 7 tags in the scored area. The answer key is deliberately not shown beside it, otherwise a later model could read it off this page.

The model on the hardest part: „Der dicht beieinander liegende Datenpunkt-Cluster im rechten Diagrammbereich (Qwen/Gemma/Mistral-Labels überlappen) und die kleinen Währungssymbole auf den schräg stehenden Preisschildern in Bild B (€ vs. £ kaum unterscheidbar).“

Where the model called itself unsure (9 places)
  • Bild A: zweiter X-Achsen-Tick — ich lese '24', nicht ausschließen, dass es '23 ist
  • Bild A: Y-Achsenlabel hinter 'INTELLIGENZ-INDEX (…)' nicht vollständig lesbar
  • Bild A: Kachel 2, Klammerwert liest sich wie '(40,7)', passt aber nicht zu '40.8' im Tooltip — möglicher Lesefehler
  • Bild A: Fußzeile des Tooltips nur teilweise lesbar
  • Bild A: grauer Legendeneintrag rechts ('Claude+open'?) unscharf
  • Bild B: JOKER-Schild — zweites Währungssymbol (£ oder €?)
  • Bild B: REDHOOD (BATTL) DARK RED — zweites Währungssymbol unsicher
  • Bild B: Namen BANE, HULK, BATMAN sind Vermutungen; dazugehörige Preise nicht lesbar (null statt Raten)
  • Bild B: ob das rote Klebeschild am orangefarbenen Helm (ca. y 890–955) noch in den Wertungsbereich fällt, war grenzwertig

The model wrote this list itself, not the scorer. It counts: an admitted “not readable” costs one point, an invented entry costs more.

The complete answer of the model as JSON · The scoring is not published beside it: it names the correct value for every mistake, which would put the answer key in the open.

Try it yourself

  1. Download the weights · Source
  2. Start llama-server with the parameters above
  3. Register the endpoint in VS Code as a custom model and pick the agent

Prompt, agent files and tools: Agent Test Harness

Citation: Kai Felix Bennett, “Usability test of local AI on AMD hardware”, benchmark.securesight.ai, run qwen38-27b-q4xl-moorhuhn-r9700. Measurement data CC-BY-4.0.

Measurement data CC-BY-4.0, code MIT.