Mia's one-click kit: Qwen3.8-27B, EXL3 4.0 bpw + MTP
1x RTX 5090 32 GB

Overall score as of 20 Oct 2026. This is the only complete run in the class so far, so it is rank 1. Scores are relative to the best run in the class today; a better model later moves older runs down.
How the overall score is calculated
| Part | This run | Best in class | Relative | Weight | Points |
|---|---|---|---|---|---|
| Speed | decode 149.3 tok/s | best 149.3 tok/s | 100.0 % | 45 % | 45.0 |
| Quality | mean of 7 tests: 67.6 % | best mean 67.6 % | 100.0 % | 30 % | 30.0 |
| Browser check | 7.5 of 10 | 75.0 % | 5 % | 3.8 | |
| My rating | 5 of 10 | 50.0 % | 20 % | 10.0 | |
| Overall | 100 % | 88.8 |
The seven quality tests: MMLU-Pro 59.3 · GPQA 43.9 · IFEval 85.5 · LiveCodeBench 60.0 · long text 8K 87.5 · long text 32K 70.0 · GPQA 30 with thinking 66.7.
Speed and quality are relative to the best run of this class, the browser check and my rating are out of 10. The parts are rounded one by one. sparkDash, the memory test and speculative-decoding numbers are not part of it. How the score is made, and the assumption behind it.
What it builds as an agent
Task: Airship dock (3D scene, one HTML file). One attempt, no help. Counted: the final file counts.
Play it yourself
Open full screenAI-generated The page this setup built, running live in your browser: click into it and use the controls it shows itself (usually drag to look around, scroll to zoom). It needs WebGL and can be slow on a weak graphics card.
The browser check
- page loads without page error1 / 1
- window.ready === true within 30 s1 / 1
- no console errors (whole session)1 / 1
- frame is not blank1 / 1
- frame rate in software GL (rAF over 5 s)0 / 1
- required objects (voxel mass, >=3 steam emitters, >=2 airships, label)1.5 / 2
- motion: pixel diff 0.5, >=3 rotating nodes 0.5, large group translating 12 / 2
- OrbitControls: drag and wheel change the picture beyond the animation baseline0 / 1
Measured 2026-10-19. Raw files: check · run info · command · final choice · contract · sampling · screenshot · clip.mp4 · web.mp4 · web-poster.jpg.
The run's own headless check browser, which renders the page the model built, used up to 1517 % CPU. The load monitor counted it as another process.
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
run_showcase.sh --harness dsh-a2 --task K1 --upstream http://127.0.0.1:43437/v1 --model qwen3.8-27b-exl3-4.0bpw --sampling-file $RUN/sampling-show.json --out $RUN/raw/tag-1910-show-r0/show --limit-s 7200 --inject-after-s 5400 --poll-s 20 --ctx 262144How fast it runs
| Measurement | Result |
|---|---|
| Decode | 149.3 tok/s |
| Words per second | 104.8 words/s |
| Characters per second | 694.7 chars/s |
| Spread of the decode runs (CV) | 4.3 % |
| Decode, window 1 | 151.6 tok/s |
| Prefill at 2K | 3341.5 tok/s |
| Prefill at 8K | 3483.8 tok/s |
| Prefill at 32K | 3115.9 tok/s |
| Time to first token at 2K | 0.6 s |
| Time to first token at 8K | 2.4 s |
| Time to first token at 32K | 10.5 s |
| 1 request at once (total) | 138.8 tok/s |
| Long answer, wall time | 41.5 s |
| Decode, code prompt | 154.5 tok/s |
| Decode, prose prompt | 144.2 tok/s |
| Spread of the code runs (CV) | 4.3 % |
| Spread of the prose runs (CV) | 1.9 % |
Method: code+prose; 2 run(s) each; 512 tokens; 1 warm-up(s); median. Measured 2026-10-19. Raw files: speed result · speed contract · log · long answer.
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
python3 speed2.py --base-url http://127.0.0.1:45445/v1 --label run-speed-r0 --prompts $BENCH/repos/rigmark-v2/prompts-v2.json --output $RUN/raw/tag-1910-speed-r0/run-speed-r0/speed2 --contract $RUN/raw/tag-1910-speed-r0/run-speed-r0/speed2/speed-contract.json --parts decode,prefill,conc,l1 --prefill-depths 2048,8192,32768 --prompt-ids code,prose --runs 2 --max-tokens 512 --warmups 1 --prefill-runs 3 --tokenizer-json $HOME/not published --tokenizer-python $HOME/hfvenv/bin/python --sampling {"temperature": 0.7, "top_p": 0.8, "top_k": 20, "min_p": 0.0, "presence_penalty": 1.5} --sampling-source https://huggingface.co/Qwen/Qwen3.8-27B README.md lines 252 (Thinking Mode) and 253 (Instruct/non-thinking mode), local copy not published line 252-253 (not published) --model qwen3.8-27b-exl3-4.0bpw --no-cache-prompt --server-log $RUN/logs/server-A.log --engine-version-file $RUN/logs/engine-version.txtHow well it answers
| Test | Result95 % margin | Right | Cut offcount as wrong | Raw files | |
|---|---|---|---|---|---|
| MMLU-Pro 400 fixed questions, letter only | 59.3 % ± 4.8 pts | 237 / 400 | 0 | answers · summary · log · contract | command |
| GPQA Diamond 198 questions, letter only | 43.9 % ± 6.9 pts | 87 / 198 | 0 | answers · summary · log · contract | command |
| IFEval 200 fixed prompts, strict | 85.5 % ± 4.9 pts | 171 / 200 | 1 | answers · summary · log · contract | command |
| LiveCodeBench 40 newest tasks, the code runs | 60.0 % ± 14.5 pts | 24 / 40 | 2 | summary · log · contract | command |
| Long text 8K 4 tasks x 10 at 8192 tokens | 87.5 % ± 10.3 pts | 35 / 40 | 0 | log · contract · answers · summary | command |
| Long text 32K 4 tasks x 10 at 32768 tokens | 70.0 % ± 13.7 pts | 28 / 40 | 0 | log · contract · answers · summary | command |
| GPQA 30, thinking on 30 questions, limit 16,384 tokens | 66.7 % ± 16.0 pts median 5,572 tokens, 37.1 s per question | 20 / 30 | 9 | log · contract · summary | command |
Thinking off, except the last test. Seed 42. Sampling from the model card. A cut-off answer counts as wrong. Measured 2026-10-19.
Exact commands we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts mmlupro --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts gpqa --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts ifeval --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts lcb --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts ruler --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts ruler --job nacht-1910bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts think --job nacht-1910How much context fits
| Context size | Prompttokens | Filled | First token | Prefilltok/s, as the server reports it | Decodetok/s | Peak memoryGiB | Result |
|---|---|---|---|---|---|---|---|
| 4K 4,096 tokens | 3,798 | 92.7 % | 0.7 s | 5,686 | 133.1 | 16.28 | answered (stop) |
| 8K 8,192 tokens | 7,750 | 94.6 % | 1.3 s | 6,011 | 135.8 | 16.35 | answered (stop) |
| 16K 16,384 tokens | 15,798 | 96.4 % | 3.7 s | 4,234 | 125.2 | 16.50 | answered (stop) |
| 32K 32,768 tokens | 31,604 | 96.4 % | 9.0 s | 3,495 | 173.0 | 16.80 | answered (stop) |
| 64K 65,536 tokens | 62,733 | 95.7 % | 21.8 s | 2,873 | 120.6 | 17.51 | answered (stop) |
| 128K 131,072 tokens | 125,892 | 96.0 % | 57.6 s | 2,185 | 106.2 | 18.95 | answered (stop) |
Memory test. For each context size (4K, 8K, 16K ... up to the largest size tested for the setup) the server is started again with that context, one prompt that fills about 95 % of the context is sent, and the model must answer. The largest size that loaded and answered counts. Decode speed is measured on that answer at the largest size. Peak memory is the GPU memory in use (nvidia-smi); the GPU was empty before each start. Measured 2026-10-20. Raw files: result of every step · log · contract.
Note from the run: The list of sizes ends at 128K (131,072 tokens), so this is the largest size tested, not the largest size the setup can load: the recipe's own default context is 262,144. The decode speed is one answer of 74 tokens at 128K; the six sizes range from 106 to 173 tok/s.
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
bash tools/quality2/measure_all.sh tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json --parts fit --job plan-2010Also made this possible
- Model
QwenHugging Face @Alibaba_Qwen GitHub Website - Quant (EXL3)
turboderp@turboderp_ Hugging Face GitHub
Run it yourself
What you need and how to start it, step by step. The results below come from exactly this setup.
What you need
- Hardware
- 1x RTX 5090 32 GB
- System
- Linux (we used the Linux start script)
- Model
- turboderp/Qwen3.8-27B-exl3 4.00bpw
- Quant (EXL3)
- huggingface.co/turboderp/Qwen3.8-27B-exl3
- Engine
- ExLlamaV3 1.6.0 — the program that loads the model and answers requestsBuild and settings we used: ExLlamaV3 1.6.0 (Mia one-click kit bbb11db), DRAFT=mtp
- Recipe (one-click kit)
- github.com/MiaAI-Lab/Qwen3.8-27B-16gb-NVIDIA-GPUs-one-click-install by Mia (MiaAI-Lab)
- Context window
- 262,144 tokens: how much text the model can see at once
Steps
Get the recipe and the model files from the list above. We ran the engine, ExLlamaV3 1.6.0, with the recipe (Mia one-click kit bbb11db).
Put these settings into the recipe's
.envfile. One setting per line.MODEL_DIR=models/Qwen3.8-27B-EXL3-4.0bpw CONTEXT_SIZE=262144 CACHE_QUANT=4 GPU_MEM_GB=22.8 DRAFT=mtp PROFILE=4.0bpw-262kStart the server with this command. It loads the model into memory.
CUDA_DEVICE_ORDER=PCI_BUS_ID \ CUDA_VISIBLE_DEVICES=0 bash linux/start.sh \ --no-harness \ --no-pickWhat the parts mean
CUDA_DEVICE_ORDER=PCI_BUS_IDcounts the GPUs in slot order, the same order nvidia-smi showsCUDA_VISIBLE_DEVICES=0which NVIDIA GPU the program may use: the number of the GPU in our machine (with one GPU it is 0)MODEL_DIR=models/Qwen3.8-27B-EXL3-4.0bpwthe folder with the model filesCONTEXT_SIZE=262144the context window in tokens: how much text the model can see at onceDRAFT=mtpMTP (multi-token prediction): the model guesses several tokens ahead and checks them, which makes answers fasterCACHE_QUANT=4keeps the context memory (KV cache) in 4 bits, which uses less GPU memoryGPU_MEM_GB=22.8how much GPU memory, in GB, the kit plans withPROFILE=4.0bpw-262kthe name of the kit profile these settings belong to; the name gives the bits per weight and the context size
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the start text exactly as our run recorded it, with the engine build in front, so anyone can repeat the result.
ExLlamaV3 1.6.0 (Mia one-click kit bbb11db), DRAFT=mtp; CUDA_DEVICE_ORDER=PCI_BUS_ID CUDA_VISIBLE_DEVICES=0 bash linux/start.sh --no-harness --no-pick (.env: MODEL_DIR=models/Qwen3.8-27B-EXL3-4.0bpw CONTEXT_SIZE=262144 CACHE_QUANT=4 GPU_MEM_GB=22.8 DRAFT=mtp PROFILE=4.0bpw-262k)Context and sampling: 262144 (KV int4), seed 42, cache_prompt false (kit: not available). Sampling per part: speed and quality tests with thinking off and the Qwen model-card instruct sampling (temp 0.7 / top_p 0.8 / top_k 20 / min_p 0.0 / presence 1.5); GPQA 30 with thinking on and the model-card thinking sampling (temp 1.0 / top_p 0.95 / top_k 20 / min_p 0.0 / presence 0.0); build test with thinking on and the kit's own sampling (temp 0.6 / top_p 0.95 / top_k 20, kit README.md:497) in the agent harness the kit ships, DeepSeek Harness 0.1.3-alpha.2. Hardware: 1x RTX 5090 32 GB. All raw files of this setup: raw/v2/qwen38-27b-exl3-4-0bpw-mtp-5090.
Mia's own benchmark, run unchanged
This is Mia's own benchmark tool (commit 21a3511), run unchanged. It has its own section here and its own column on the class page, and it is never mixed with my numbers. A cut-off answer counts as wrong here, so a value can differ from sparkDash's own screen.
| Test | Result95 % margin | Right | Cut offcount as wrong | Raw files | |
|---|---|---|---|---|---|
| Quality QA 150 questions | 79.3 % ± 6.4 pts | 119 / 150 | 0 | summary | command |
| Quality MMLU 285 questions | 84.6 % ± 4.2 pts | 241 / 285 | 23 | summary | command |
| Tool Eval Quick 15 scenarios, tool use | 93 / 100 | 13 / 15 passed | — | tool eval result · tool eval report · tool eval command · summary | command |
| Decode, 1 request at once first token 108 ms | 267.7 tok/s | — | — | decode result · summary | command |
| Prefill at 4K first token 1.3 s | 3495.8 tok/s | — | — | prefill result · summary | command |
| Prefill at 8K first token 2.5 s | 3441.9 tok/s | — | — | prefill result · summary | command |
| Prefill at 16K first token 5.1 s | 3291.7 tok/s | — | — | prefill result · summary | command |
| Prefill at 32K first token 10.8 s | 3055.5 tok/s | — | — | prefill result · summary | command |
Seed 1234 applies to the two quality tests; decode, prefill and tool eval send no seed. The benchmark client ran on a separate machine that is never part of the measured group. Measured 2026-10-19. Version 2.50.0, commit 21a3511.
QA. Quality QA, 150 items, seed 1234, temperature 0, thinking off, 4 requests at once (Mia's default). An answer cut off at the token limit counts as wrong. ± is the 95 % margin (Wilson).
MMLU. Quality MMLU, 285 items (5 for each of 57 subjects, 4 answers), seed 1234, temperature 0, thinking off. An answer cut off at the token limit counts as wrong. ± is the 95 % margin (Wilson).
Decode. Decode bench, 1 request at once, 400 tokens, prompt type structured, temperature 0, thinking off. No seed is sent.
Prefill. Prefill bench at 4K, 8K, 16K and 32K tokens. sparkDash skips a size that does not fit into the context. No seed is sent.
Tool Eval Quick. Tool Eval Quick: tool-eval-bench (SeraphimSerapis, commit c61319b), 15 core scenarios (--short), --no-think, --timeout 120. Score 0 to 100. No seed is sent.
Note from the run: sparkDash 2.50.0 (@21a3511) on a client machine (never in the measured group); Quality: seed 1234, temperature 0, thinking off, a truncated answer counts as wrong; decode, prefill and tool eval send no seed; own row, never mixed with quality-v2.
Exact commands we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
python3 tools/quality2/sparkdash_client.py tools/quality2/cards/qwen38-27b-exl3-4.0bpw-mtp-5090.json <box> --client <client machine> --job tag-1910 --out $RUNtool-eval-bench --base-url http://127.0.0.1:<port> --short --no-think --timeout 120 --json-file $BENCH/sparkdash-client/runs/run-sparkdash-r1/tooleval/result.json --no-live