From many candidates to three profiles: Qwen3.8-27B with MTP and DFlash2

From many candidates to three profiles: Qwen3.8-27B with MTP and DFlash2

31 August 2026local LLMQwenllama.cppbenchmarkAI agents

The fastest decoder did not automatically become the best everyday profile. That is the central result of this test series. On the same machine, with the same Qwen3.8-27B target family and weight quantization, MTP and DFlash2 configurations were tested in stages: a broad candidate screen, an identical-history rerun, an official-runtime migration, 40 isolated starts, image input, and finally a real read-only production-repository review.

The path from the first candidates to the three daily profiles

The machine and the exact model base

ComponentRecorded configuration
Operating systemWindows 11 Pro, build 26200
CPUAMD Ryzen 9 7950X, 16 cores / 32 threads
GPUNVIDIA GeForce RTX 4090, 24,564 MiB reported VRAM
System memory128 GB DDR5, four modules, configured at 3,600 MT/s
Target familyQwen3.8-27B
Weight quantizationUD-Q4_K_XL, GGUF
KV cacheQ8 key / Q8 value
Runtimeofficial llama.cpp b10658, commit b10f9ca58

Reasoning effort was not a controlled variable. Agent records contained reasoning-related fields, but this study did not select, sweep, or isolate reasoning effort. No speed or quality difference is attributed to it.

The wide screen

The first field included P0 without speculation, M3 and M3K with MTP, and D5 and D5K with DFlash2. M3K and D5K advanced. A combined KN route missed the required +3% gate, the n-gram-mod path starved, and K1/K2 tuning regressed.

This was not a two-profile showcase with a winner chosen in advance. Plausible configurations had to earn promotion.

The false winner

An early warm-history result appeared to put D5K 12.4% ahead of M3K. Review of the test code then found that the histories were not identical. The measurement stayed in the audit trail, but it was removed from winner selection.

With a golden, identical history, M3K finished in 53.614 seconds and D5K in 119.756 seconds. D5K also showed 9–21 second TTFT under a thin VRAM margin. The protocol correction mattered more than the apparent ranking: different histories do not produce a fair speed comparison.

Moving DFlash2 to the official runtime

Before promotion, DFlash2 was moved from the old fork to official llama.cpp b10658. In the warm nine-turn bridge, N=7 moved from 114.02 to 118.12 effective tok/s. N=4 and N=5 stayed nearly unchanged, and the non-speculative baseline remained in the same broad range on both builds. N=6 collapsed to roughly 34–37 tok/s at large context and was rejected.

DFlash2 on the old fork and official llama.cpp b10658

DFlash2 also failed to produce usable image output in the tested path. It therefore remained a text-only candidate.

Why decode speed did not win every workload

On a filled 56,093-token prompt, D7K decoded at 124.13 tok/s, well ahead of M3K's 78.52. Yet M3K completed the whole request sooner: 34.367 seconds versus 36.840. Prompt evaluation dominated the complete request more than the decode segment did.

Full request wall time for the filled 56K prompt

The sustained nine-turn agent history told the opposite story. D7K-90K finished in 44.064 seconds, D5K-100K in 47.255, and the two M3K candidates around 52.5 seconds.

Nine-turn agent history: lower is better

This is why a single TPS leaderboard would be misleading. The prompt-heavy job and the sustained-generation job reward different parts of the pipeline.

Forty isolated starts

Four daily candidates went through 40 isolated server starts. All 40 requests ended naturally. There were no OOMs, empty responses, truncations, or request failures. All profiles passed near-cap retrieval. All produced functionally correct code that passed five executable tests after the surrounding Markdown fence was removed; all failed the same strict format rule because they added that fence.

ProfileContext56K wallNine-turn wallMinimum free VRAMNear-cap retrieval
M3K-128K131,07234.659 s52.576 s345 MiBPASS at 102,893 tokens
M3K-120K122,88034.479 s52.471 s699 MiBPASS at 96,788 tokens
D5K-100K102,40036.445 s47.255 s423 MiBPASS at 80,246 tokens
D7K-90K90,00036.714 s44.064 s582 MiBPASS at 71,240 tokens
Minimum free VRAM across the four daily candidates

M3K-128K offered no meaningful daily speed gain over 120K while reducing measured minimum headroom from 699 to 345 MiB. D5K-100K was dominated from both sides: D7K was faster for sustained text, while M3K-120K offered more context and more headroom.

Three profiles survived

RoleExact profile IDConfiguration
Long-context defaultQwen3.8-27B-120K-Q8-M3K-Text122,880 tokens, MTP N=3, K4V, text
Fast text specialistQwen3.8-27B-90K-Q8-D7K-Official-TextOnly90,000 tokens, DFlash2 N=7, K4V, text only
Vision profileQwen3.8-27B-90K-Q8-M3K-VisionVRAM90,000 tokens, MTP N=3, K4V, text + image

The 120K MTP profile became the everyday local coding-agent default. It preserved almost all practical speed of the 128K candidate while leaving twice the minimum VRAM margin. The 90K DFlash2 profile became the sustained text specialist. The 90K MTP profile became the vision lane because DFlash2 remained text-only.

The vision check

The M3K-90K vision profile passed three independent image runs and one routed smoke test. Mean wall time was 2.034 seconds, TTFT 858 ms, prompt evaluation 1,323.92 tok/s, and decode 69.61 tok/s. MTP acceptance was 0.49020, mean accepted length 2.47, and minimum free VRAM 924 MiB.

The final lazy-load smoke returned the expected marker from all three promoted profiles: 7.830 seconds for vision, 9.212 seconds for M3K-120K text, and 9.793 seconds for D7K-90K text.

Synthetic winners meet a real repository

The final test was a read-only review of the same production repository. No source files were changed. This stage is not a pure model-only comparison: the two Qwen coordinators used Luna helpers, while direct gpt-5.6-luna used none.

RunLLM + tool active timeRaw local decode TPSAverage TTFTCache shareCompactionReport
Qwen D7K-90K13:51.70562.6832.902 s88.64%112 confirmed findings + 6 risks
Qwen M3K-120K13:36.61662.3252.098 s94.01%027 findings + 5 risks
gpt-5.6-luna directNot exposedNot exposedNot exposed93.125%Not recorded13 prioritized findings

The two local runs had almost identical raw decode throughput. M3K-120K still completed the recorded active work slightly sooner, reached first token faster, used cache more heavily, and avoided compaction.

Completed and failed Luna helpers in the two Qwen coordinator runs

M3K-120K completed all four helpers. In the D7K run, four of six helper launches hit usage limits; Qwen had to backfill their work and compacted once. This does not make D7K a poor decoder. It shows why end-to-end agent performance includes orchestration reliability.

The direct Luna run took 44:33.227 wall-clock time. At the 28-minute mark it was still inspecting the repository; the final writing phase took only about 27 seconds. It produced the strongest prioritization and the clearest critical-path analysis, especially around cross-channel apply idempotency and state-machine behavior.

The run recorded 94,028 output tokens, including 55,192 reasoning output tokens. The provider did not expose active inference time, decode duration, or TTFT. Dividing output by full wall time gives 35.174 output tokens per wall second, but that is not decode TPS and is not plotted against the local numbers.

Finding counts are coverage indicators, not a truth score. Luna's shorter list was more sharply prioritized; M3K-120K plus four completed helpers produced the broadest reported coverage in the shortest recorded active time.

The final operating model

The most useful answer is a layered workflow:

  1. Broad first pass: Qwen3.8-27B-120K-Q8-M3K-Text coordinates the repository scan and delegates bounded checks to Luna helpers.
  2. Critical adjudication: gpt-5.6-luna directly reviews high-severity state machines and resolves disputed findings.
  3. Fast sustained local text: Qwen3.8-27B-90K-Q8-D7K-Official-TextOnly handles generation-heavy work when image support and maximum context are unnecessary.
  4. Local image work: Qwen3.8-27B-90K-Q8-M3K-VisionVRAM handles mixed text-and-image input.

The experiment did not find one number that makes every decision. It found the point where each configuration stops being the right tool.

Limits and sources

The results are specific to this host, quantization, runtime build, context sizes, and workloads. The repository-review runs used different orchestration. Finding counts do not independently verify correctness. Luna telemetry cannot be converted into comparable decode TPS. Reasoning effort was not a controlled experimental variable.

More posts

← All postsLab →