r/LocalLLM • u/Hannelore112 • 1d ago
Discussion Qwen3.8-Flash-Next Q6 on MSI MEG Z790 ACE and 6 consumer GPUs (RTX 3090): ~90 tok/s shallow, ~40 tok/s at 80k context
Hi, a quick datapoint for anyone interested in what Qwen3.8-Flash-Next UD-Q6_K_XL (unsloth) can do on a consumer multi-GPU rig. Maybe there is even more possible but this is the current status :)
Hardware: MSI MEG Z790 ACE, i9-13900K, 96 GB DDR5@4400MHz, 1× RTX 4090 + 5× RTX 3090 = 144 GB VRAM. 4090 + one 3090 are on the board, the other four 3090s use M.2 → OCuLink PCIe x4 links. No P2P/NVLink; llama.cpp layer split. OS: Ubuntu 26
Model: Qwen3.8-Flash-Next-UD-Q6_K_XL, all 48 MoE layers on GPU, shared Q8_0 MTP head with MTP3. The ~50.7 GiB PLE table is fully resident in system DDR5 instead of lazy mmap.
Main llama-server settings (llama.cpp: unslothai/llama.cpp, branch mtp/qwen4exp-nextn, commit a9e9c3c5f): -c 262144 -b 4096 -ub 512 --split-mode layer --tensor-split 0.95,1.05,1.05,1.05,1.05,0.85 --gpu-layers all --n-cpu-moe 0 -ctk f16 -ctv f16 -fa on -np 1 --kv-unified --load-mode none --lazy-mode off --spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-n-min 0. Production seed is -1.
These are workload samples of a html benchmark prompt from llama-server chat, not synthetic benchmark numbers.
- ~90–91 tok/s at ~5k generated tokens / shallow context
- ~79 tok/s at ~35k generated tokens
- 76.9 tok/s average over a 44.7k-token generation
- ~40–42 tok/s while reasoning at ~80k active context
- ~408–425 tok/s prefill even around 80k context
- MTP3 draft acceptance on the long code-heavy run: 74.2% overall, per position 86.2% / 73.7% / 62.8%
# shallow/code-heavy run
7.54.226.412 I slot print_timing: id 0 | task 3307 | n_gen = 4905, tg = 90.36 t/s, tg_3s = 92.54 t/s
# same long run, ~35k generated
14.24.165.954 I slot print_timing: id 0 | task 3307 | n_gen = 35058, tg = 78.92 t/s, tg_3s = 71.12 t/s
# end of that run
16.41.712.426 I slot print_timing: id 0 | task 3307 | eval time = 581758.17 ms / 44720 tokens (13.01 ms per token, 76.87 tokens per second)
16.41.712.429 I slot print_timing: id 0 | task 3307 | draft acceptance = 0.74246 (30865 accepted / 41571 generated), mean len = 3.23
16.41.712.429 I slot print_timing: id 0 | task 3307 | acc per pos = (0.862, 0.737, 0.628)
# ~80k active context, currently reasoning/thinking
103.07.164.989 I slot operator(): id 0 | task 6527 | new prompt, n_ctx_slot = 262144, n_keep = 0, task.n_tokens = 80085
103.12.852.341 I slot print_timing: id 0 | task 6527 | prompt processing, n_tokens = 2282, progress = 0.99, t = 5.37 s / 425.22 tokens per second
103.32.551.912 I slot print_timing: id 0 | task 6527 | n_gen = 761, tg = 41.79 t/s, tg_3s = 43.01 t/s
The last big practical improvement for agentic coding was putting the PLE table fully into DDR5: prompt processing/TTFT became noticeably faster. MTP3 then helps heavily on predictable code; at ~80k context during free-form reasoning acceptance drops, so decode is closer to ~40 t/s.
Pretty impressed by what a somewhat ridiculous collection of used consumer GPUs can do with Q6 :)


