Home / 32 GB

32 GB · 2× RTX 5060 Ti 16 GB (32 GB in total)

Kaitchup's Qwen3.8-27B-SLQ-EAR98 on vLLM, two RTX 5060 Ti

2x NVIDIA GeForce RTX 5060 Ti 16 GB (two cards of one machine, tensor parallel 2, PCIe, no NVLink).

Quantized model (SLQ EAR>98, Humming) and serve lineThe Kaitchup (Benjamin Marie)X @bnjmn_marieGitHubHugging FaceWebsite
vLLM 0.31.0 + humming-kernels 0.1.16 (pip wheels via mirror, uv, python 3.13), tensor-parallel-size 2, bf16 KV, no speculationcommit vllm 0.31.02 GPU (TP2)measured 2026-10-25independent check passed
Rank in 32 GB
9of 9
Overall score
44.4/ 100
Speed
5.8/ 35
Quality
24.1/ 25
Browser check
4.0/ 5
My rating
10.5/ 35

Overall score as of 25 Oct 2026. 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
PartThis runBest in classRelativeWeightPoints
Speed, one requestdecode 33.0 tok/sbest 253.4 tok/s13.0 %17.5 %2.3
Speed, 8 at oncetotal 143.1 tok/sbest 711.9 tok/s20.1 %17.5 %3.5
Qualitymean of 7 tests: 65.6 %best mean 68.0 %96.4 %25 %24.1
Browser check8 of 1080.0 %5 %4.0
My rating3 of 1030.0 %35 %10.5
Overall100 %44.4

The seven quality tests: MMLU-Pro 58.8 · GPQA 42.4 · IFEval 83.0 · LiveCodeBench 55.0 · long text 8K 82.5 · long text 32K 67.5 · GPQA 30 with thinking 70.0.

The speed part is half the decode speed with one request and half the total speed with 8 requests at once, each relative to the best run of this class; a run without a total for 8 requests at once gets the better of its decode speed alone and the mix with its highest measured total. Quality is 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.

Build test

What it builds as an agent

Task: Airship dock (3D scene, one HTML file). One attempt, no help. Counted: the final file counts.

The exact promptcopy it and try it yourself↓

This is the task prompt word for word, as we handed it to the agent harness. The harness adds its own system prompt and tools, and some harnesses add short context notes of their own. Qwen Code 0.25.2 also put a space before six of the seven “@” signs in the library addresses of the import map (for example “three @0.170.0”), so the model got the prompt in that form. A run that goes past 90 minutes also gets a short “finish now” message, as the prompt says. To try it yourself, give it to your own coding agent: it needs a shell and a working folder.

Prompt: Airship dock (3D scene, one HTML file)
Design and build the most impressive, creative, elaborate and detailed steampunk airship dock voxel world you are capable of. Theme: a steampunk airship dock. Everything else (style, story, extra details) is your choice.

How you work:
- You work alone in the folder /work. Nobody will answer questions. Aim to finish in about 60 minutes. After 90 minutes you will get a message to finish; then you have at most 30 more minutes. Hard stop after 120 minutes. Spend the time where it shows in the result.
- Tools on this machine: shell, files, python3 with numpy and Pillow, ffmpeg, node, and `shot.sh index.html` (opens the page in a headless browser, saves a screenshot and prints console errors). There is no internet and no access to other machines.
- You may create your own assets locally with these tools (textures, sky, sounds, music) and embed them in the file as data URIs. Do not download anything.
- Keep a working /work/index.html at all times: write a first working version early, then improve it step by step. If you are stopped, the last version that loaded without errors counts.
- Check your work with `shot.sh` as often as you like, fix every error, and keep improving until you are satisfied. Then stop.

Deliverable: ONE self-contained file /work/index.html that opens and runs in Chrome.
- JavaScript libraries: only these, through an import map with these exact URLs (they work offline in the test browser). Use whatever helps, including all Three.js addons (post-processing, sky, water, noise and so on):
  - "three": "https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.js"
  - "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.170.0/examples/jsm/"
  - "simplex-noise": "https://cdn.jsdelivr.net/npm/simplex-noise@4.0.3/dist/esm/simplex-noise.js"
  - "@tweenjs/tween.js": "https://cdn.jsdelivr.net/npm/@tweenjs/tween.js@25.0.0/dist/tween.esm.js"
  - "cannon-es": "https://cdn.jsdelivr.net/npm/cannon-es@0.20.0/dist/cannon-es.js"
- No other external resources. Build every object from cubes (voxels); InstancedMesh is allowed.
- The page fills the whole window and resizes with it. All visible text is in English.
- After the scene is built, set `window.scene` to the Three.js scene and `window.ready = true`.
- An automatic slow cinematic camera tour starts on load. Mouse input switches to OrbitControls (drag to rotate, scroll to zoom).
- Sound, if any, starts only after the first click (browsers block autoplay).
- A small label in the top-left corner: "Steampunk Airship Dock".

Minimum content (go far beyond it):
1. A tall iron docking tower with platforms, stairs or ladders, and a mooring arm at the top.
2. At least two airships, each with a balloon envelope, a gondola and propellers.
3. Big brass gears on the tower or the buildings.
4. Pipes and at least three chimneys that emit rising steam particles.
5. At least one crane and a stack of cargo crates.
6. A ground area with a workshop building and a small rail track.
7. Propellers and gears rotate, steam rises and fades, and one airship slowly approaches the tower, docks, waits and leaves again, in a loop.
8. Warm sunset lighting with shadows.
Browser check
8/ 10
My rating
3/ 10
Time
103.8min
Tokens
161,560
Harness
Qwen Code 0.25.2
Screen recording of the page this run built, made in Chrome after the run. The page files are unchanged. Still image

Play it yourself

Open full screen

AI-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)2 / 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-25. Raw files: check · run info · command · final choice · contract · sampling · gate stats · gate log · 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 1215 % CPU. The load monitor counted it as another process. Browser check 8.0 out of 10 (airship-dock task): the page loads without a page error, is ready after 0.01 s, has no console errors, is not blank, shows the label "Steampunk Airship Dock" in the top left, the checker finds 3 airships (by their structure, not by name) and steam from 3 sources, and the scene moves (28 rotating parts, the motion check gave both of its points). The 2 lost points are the frame rate (7.63 frames per second in software rendering without a GPU, 10 give half a point and 20 the full point) and the orbit-controls test (dragging and the mouse wheel changed the picture less than the check needs). The agent (Qwen Code 0.25.2) took 103.8 minutes, one try, no help. After 90 minutes the harness sends “Time is up. Finish now”; it reached the model with the first request after that, at 96.5 minutes, and the run ended by itself at 103.8 minutes. 25 requests, none blocked, none with an error (973,908 prompt tokens, 161,560 answer tokens). The context of 94,208 tokens is smaller than the model's own: Qwen Code shortened its history four times, and my test proxy cut the answer limit to the room left in the context seven times. Two of those cuts (requests 2 and 3, at minutes 28 and 29) left only 16 tokens, because the proxy's size estimate for the prompt (101,278 and 90,268 tokens) was higher than the real size (66,245 and 54,116 tokens); both answers ended after 16 tokens and the agent went on. The first version of the page came after 71.0 minutes and did not load ("The requested module 'simplex-noise' does not provide an export named 'createNoise3'"); the first version that loaded without errors was seen at 99.4 minutes, and the last one, at 102.4 minutes, is the one that counts. The limit per answer was 262,144 tokens (the Qwen3.8-27B card, README lines 507 to 510). Thinking was on with that card's sampling (temperature 1.0, top_p 0.95, top_k 20). The load monitor saw other processes during the run (up to 1,215 % CPU, the run's own headless check browser).

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.

Build test (run show-r7)
run_showcase.sh --harness qwen-code --task K1 --upstream http://127.0.0.1:33685/v1 --model kaitchup/Qwen3.8-27B-SLQ-EAR98 --sampling-file $RUN/sampling-show.json --out $RUN/raw/nacht2410-show-r7/show --limit-s 7200 --inject-after-s 5400 --poll-s 20 --ctx 94208
Speed v2

How fast it runs

Decode
33.0tok/s
Decode, code
33.0tok/s
Decode, prose
33.0tok/s
500 words
≈ 22.2s
Prefill at 8K
1013.1tok/s
First token at 2K
2.0s
MeasurementResult
Decode33.0 tok/s
Words per second22.5 words/s
Characters per second157.3 chars/s
Decode, code prompt33.0 tok/s
Decode, prose prompt33.0 tok/s
Spread of the decode runs (CV)0.0 %
Spread of the code runs (CV)0.0 %
Spread of the prose runs (CV)0.0 %
Decode, window 133.0 tok/s
Prefill at 2K1024.3 tok/s
Prefill at 8K1013.1 tok/s
Prefill at 32K952.2 tok/s
Time to first token at 2K2.0 s
Time to first token at 8K8.1 s
Time to first token at 32K34.4 s
1 request at once (total)30.5 tok/s
2 at once (total)55.6 tok/s
4 at once (total)91.9 tok/s
8 at once (total)143.1 tok/s
1 request at once (per request)30.5 tok/s
2 at once (per request)27.8 tok/s
4 at once (per request)23.0 tok/s
8 at once (per request)18.0 tok/s
Server slots (from the recipe)1 slots
Long answer, wall time210.1 s

Method: code+prose; 2 run(s) each; 512 tokens; 1 warm-up(s); median; requests at once: C1,C2,C4,C8 at once; 2 rounds each; 512 tokens per request; prose prompt; total = all tokens / wall time, per request = tokens / end-to-end time; median over the rounds. Measured 2026-10-25. Raw files: speed result · speed contract · log · long answer.

Requests at once: the recipe's slot count is 1 (at the full context the KV cache holds about 1.01 requests of full length), but the server ran with --max-num-seqs 8 (my addition), so C1, C2, C4 and C8 are real parallel runs of short requests; long prompts at the same time would have to queue. The speed test ran the author's serve line with additions (kaitchup/Qwen3.8-27B-SLQ-EAR98 at revision 1165bcbb96ef, model card README lines 74 to 84): vLLM 0.31.0 with humming-kernels 0.1.16, --quantization humming --dtype bfloat16, the reasoning and tool-call options of the card (--reasoning-parser qwen3, --tool-call-parser qwen3_coder), no speculation (the author did not test it). Added by me, because the author tested on one RTX PRO 6000 Blackwell with 96 GB and the 23.7 GB weights do not fit one 16 GB card: --tensor-parallel-size 2 over both RTX 5060 Ti, --max-model-len 94208 instead of the author's 262,144 (262,144 failed with an out-of-memory error while vLLM captured its CUDA graphs; with --max-num-seqs 8 vLLM reported 94,864 as the largest length that fits after the weights, I ran 94,208), --max-num-seqs 8, and the environment variable VLLM_USE_FLASHINFER_SAMPLER=0 (the FlashInfer sampler did not compile here: the CUDA compiler and its headers do not match). The two cards talk over PCIe, there is no NVLink. Sampling for the speed test is the non-thinking sampling of the Qwen3.8-27B card (temperature 0.7, top_p 0.8, top_k 20, presence penalty 1.5), because the Kaitchup card gives none; seed 42; the requests ask for no prompt cache. vLLM's own prefix cache was on (its default). The prefill test sends a new prompt of each size three times and all three runs are equally fast (2K: 1024.3, 1024.2 and 1026.4 tok/s), so no cache hit is visible; vLLM does not report cached tokens, so I cannot prove it. The headline 33.0 tok/s is the mean of the code prompt (33.0) and the prose prompt (32.99), medians of two runs each (spread 0.017 % and 0.021 %). Requests at once: vLLM batches requests as they come, up to 8 here (--max-num-seqs 8, my addition). At the full 94,208-token context the KV cache holds 1.01 requests (vLLM log: "Maximum concurrency for 94,208 tokens per request: 1.01x"), which is the slot number of 1 in the register. The 2, 4 and 8 at once values were measured with the prose prompt and 512 tokens per request, not with full-context requests. Total speed grew from 30.5 tok/s with 1 request to 143.1 tok/s with 8, so the requests did run together, not one after the other.

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.

Speed v2 (run speed-r5)
python3 speed2.py --base-url http://127.0.0.1:41363/v1 --label nacht2410-speed-r5 --prompts $BENCH/repos/rigmark-v2/prompts-v2.json --output $RUN/raw/nacht2410-speed-r5/nacht2410-speed-r5/speed2 --contract $RUN/raw/nacht2410-speed-r5/nacht2410-speed-r5/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 --conc-levels 1,2,4,8 --conc-rounds 2 --conc-max-tokens 512 --conc-prompt prose --tokenizer-json $HOME/models-2410/kaitchup_Qwen3.8-27B-SLQ-EAR98/tokenizer.json --tokenizer-python $BENCH/venv/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 kaitchup/Qwen3.8-27B-SLQ-EAR98 --no-cache-prompt --server-log $RUN/logs/server-A.log --engine-version-file $RUN/logs/engine-version.txt --server-slots 1 --server-slots-source vLLM 0.31.0 server log line 'Maximum concurrency for 94,208 tokens per request: 1.01x' ($HOME/queue-2410/logs/vllm-kaitchup-server.log) = KV-limited concurrency at the served context, floor, capped at 8; the author's line sets no --max-num-seqs (vLLM default applies, not a slot recipe)
Quality v2

How well it answers

TestResult95 % marginRightCut offcount as wrongRaw files
MMLU-Pro
400 fixed questions, letter only
58.8 % ± 4.8 pts235 / 4000answers · summary · log · contractcommand
GPQA Diamond
198 questions, letter only
42.4 % ± 6.8 pts84 / 1980answers · summary · log · contractcommand
IFEval
200 fixed prompts, strict
83.0 % ± 5.2 pts166 / 2000answers · summary · log · contractcommand
LiveCodeBench
40 newest tasks, the code runs
55.0 % ± 14.7 pts22 / 401summary · log · contractcommand
Long text 8K
4 tasks x 10 at 8192 tokens
82.5 % ± 11.6 pts33 / 400log · contract · answers · summarycommand
Long text 32K
4 tasks x 10 at 32768 tokens
67.5 % ± 14.0 pts27 / 400log · contract · answers · summarycommand
GPQA 30, thinking on
30 questions, limit 16,384 tokens
70.0 % ± 15.6 pts
median 5,365 tokens, 163.4 s per question
21 / 308contract · summarycommand

Thinking off, except the last test. Seed 42. Sampling from the model card. A cut-off answer counts as wrong. Measured 2026-10-25.

Note from the run: Quality ran with one request at a time (the register's slot count is 1), which is why it took about 3 hours. MMLU-Pro and GPQA Diamond ran with a short answer limit (48 tokens; the answer is one letter), IFEval with a longer one, LiveCodeBench with 32,768 tokens. Answers cut off at their limit count as wrong: 1 of the 40 LiveCodeBench answers (and 2 more had no code in them), 8 of the 30 GPQA answers with thinking (the limit of 16,384 tokens); no other test lost an answer. One answer file is not published: gpqa_think.jsonl (the thinking run). The filter for public files drops a file when text in it looks like a banned word (here longitude values with a trailing letter, which look like a unit figure). Its summary file is online. GPQA Diamond ran from the public mirror fingertap/GPQA-Diamond (198 questions), because the original is gated and I had no access token. Sampling: instruct tests with the Qwen3.8-27B card's non-thinking values (temperature 0.7, top_p 0.8, top_k 20, presence penalty 1.5, because the Kaitchup card names none), GPQA with thinking with its thinking values (temperature 1.0, top_p 0.95, top_k 20). These are my own tests, and no other run of this setup is mixed into the quality numbers on this page.

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.

MMLU-Pro (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts mmlupro --job nacht2410
GPQA Diamond (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts gpqa --job nacht2410
IFEval (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts ifeval --job nacht2410
LiveCodeBench (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts lcb --job nacht2410
Long text 8K (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts ruler --job nacht2410
Long text 32K (run inst-r1)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts ruler --job nacht2410
GPQA 30, thinking on (run think-r2)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts think --job nacht2410
Memory test

How much context fits

Largest size tested
94,208tokens
Peak memory
29.22GiB
Decode at that size
not measured
Context sizePrompttokensFilledFirst tokenPrefilltok/s, as the server reports itDecodetok/sPeak memoryGiBResult
4K 4,096 tokens3,89795.1 %———29.21answered (stop)
8K 8,192 tokens7,78895.1 %———29.22answered (stop)
16K 16,384 tokens15,57095.0 %———29.22answered (stop)
32K 32,768 tokens31,13595.0 %———29.22answered (stop)
64K 65,536 tokens62,26995.0 %———29.22answered (length)
92K 94,208 tokens89,51495.0 %———29.22answered (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-25. Raw files: result of every step · log · contract.

Note from the run: For each size from 4,096 to 94,208 tokens the server was started again with that size as context, one prompt that fills about 95 % of it was sent (89,514 tokens at the largest size), and the model answered at every size. 94,208 tokens is the largest context the two cards hold; the author's 262,144 does not fit (see the speed note). The memory number is the sum of the memory used on both cards, 29.22 GiB (about 14.6 GiB on each), and it is the same at every size, because vLLM reserves its KV cache when the server starts (GPU memory utilization 0.9, the default). This test measures no decode speed.

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.

Memory test (run fit-r6)
bash tools/quality2/measure_all.sh tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json --parts fit --job nacht2410
Credits

Also made this possible

Setup

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
2x NVIDIA GeForce RTX 5060 Ti 16 GB (two cards of one machine, tensor parallel 2, PCIe, no NVLink).
Model
kaitchup/Qwen3.8-27B-SLQ-EAR98 (SLQ EAR>98, Humming-packed, 23.73 GB)
Quantized model (SLQ EAR>98, Humming) and serve line
huggingface.co/kaitchup/Qwen3.8-27B-SLQ-EAR98
Base model (Qwen3.8-27B)
huggingface.co/Qwen/Qwen3.8-27B
Engine
vLLM 0.31.0 with humming-kernels, tensor parallel 2 over two 16 GB cards, context 94,208 tokens — the program that loads the model and answers requests · github.com/vllm-project/vllmBuild and settings we used: vLLM 0.31.0 + humming-kernels 0.1.16 (pip wheels via mirror, uv, python 3.13), tensor-parallel-size 2, bf16 KV, no speculation

Steps

  1. Get the engine and the model files from the list above.

  2. Start the server with this command. It loads the model into memory.

    vllm serve kaitchup/Qwen3.8-27B-SLQ-EAR98 \
      --quantization humming \
      --dtype bfloat16 \
      --max-model-len 94208 \
      --limit-mm-per-prompt '{"image":0,"video":0}' \
      --enable-auto-tool-choice \
      --tool-call-parser qwen3_coder \
      --reasoning-parser qwen3
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.

Start, as recorded with the run
vLLM 0.31.0 + humming-kernels 0.1.16 (pip wheels via mirror, uv, python 3.13), tensor-parallel-size 2, bf16 KV, no speculation; vllm serve kaitchup/Qwen3.8-27B-SLQ-EAR98 --quantization humming --dtype bfloat16 --max-model-len 94208 --limit-mm-per-prompt '{"image":0,"video":0}' --enable-auto-tool-choice --tool-call-parser qwen3_coder --reasoning-parser qwen3

Context and sampling: 94,208 tokens (--max-model-len, the largest length that fits on two 16 GB cards after the weights; the author's line has 262,144, which does not fit and is not what runs here), bf16 KV cache (vLLM default), tensor parallel 2, --max-num-seqs 8, GPU memory utilization 0.9 (default), no speculation, seed 42. Sampling from the Qwen3.8-27B card, per part: speed, quality and sparkDash with thinking off use its non-thinking values (temperature 0.7, top_p 0.8, top_k 20, presence penalty 1.5; the Kaitchup card gives none); GPQA with thinking and the build test with thinking on use its thinking values (temperature 1.0, top_p 0.95, top_k 20, presence penalty 0). The answer limit for the build test was 262,144 tokens, the value the Qwen3.8-27B card names for reasoning (README lines 507 to 510; the Kaitchup card names none); my test proxy cuts it to the room left in the context for each request. Agent for the build test: Qwen Code 0.25.2, the agent of the Qwen family. Hardware: 2x NVIDIA GeForce RTX 5060 Ti 16 GB (two cards of one machine, tensor parallel 2, PCIe, no NVLink).. All raw files of this setup: raw/v2/qwen38-27b-kaitchup-slq-ear98-vllm-tp2-2x5060ti.

Mia's sparkDash 2.50.0

Mia's own benchmark, run unchanged

This is Mia's own benchmark tool (commit 21a3511), run unchanged. It has its own section on this 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.

Tool Eval Quick
87/ 100
Decode, 1 request
33.3tok/s
TestResult95 % marginRightCut offcount as wrongRaw files
Quality QA
150 questions
77.3 % ± 6.7 pts116 / 1500answers · summarycommand
Quality MMLU
285 questions
84.9 % ± 4.2 pts242 / 28517answers · summarycommand
Tool Eval Quick
15 scenarios, tool use
87 / 10012 / 15 passed—tool eval result · tool eval report · tool eval command · summarycommand
Decode, 1 request at once
first token 61 ms
33.3 tok/s——decode result · summarycommand
Prefill at 4K
first token 4.1 s
1047.1 tok/s——prefill result · summarycommand
Prefill at 8K
first token 8.2 s
1019.1 tok/s——prefill result · summarycommand
Prefill at 16K
first token 16.6 s
997.7 tok/s——prefill result · summarycommand
Prefill at 32K
first token 34.4 s
955.7 tok/s——prefill result · summarycommand

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-25. 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. sparkDash runs its own tests (150 QA and 285 MMLU questions at temperature 0, thinking off, a cut-off answer counts as wrong; no QA answer and 17 of the 285 MMLU answers were cut off at the answer limit and count as wrong), so its decode and prefill values are not comparable with Speed v2 above: its decode test uses a structured prompt, Speed v2 a code and a prose prompt. The Tool Eval Quick test has 15 scenarios; 12 passed, which scores 87 of 100. The sparkDash client ran on another machine and was never part of the measured group.

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.

sparkDash (run sparkdash-r4)
python3 tools/quality2/sparkdash_client.py tools/quality2/cards/kaitchup-qwen38-27b-slq-ear98-vllm0310-tp2-2x5060ti.json <box> --client <client machine> --job nacht2410 --out $RUN
Tool Eval Quick, as sparkDash starts it
tool-eval-bench --base-url http://127.0.0.1:<port> --model kaitchup/Qwen3.8-27B-SLQ-EAR98 --short --no-think --timeout 120 --json-file $BENCH/sparkdash-client/runs/nacht2410-sparkdash-r4/tooleval/result.json --no-live