Square rabbits
Practical inference guide · October 2026

Qwen Flash Next.
Make the most of
your RTX 3090.

Tested Q3 configurations for interactive speed, long context and an integrated agent. Exact commands, measured tradeoffs and the settings worth getting right.

Qwen3.8-Flash-NextEVGA RTX 3090 OC FTW3 UltraRyzen 9 8945HX · 96 GB RAM4–7 October 2026
01 / Start here

Three configurations.
Three different priorities.

The practical baseline is Unsloth UD-IQ3_XXS in upstream llama.cpp—the implementation retained for API, agent and voice integration. Choose the configuration that matches your workload, rather than copying the highest number from a different engine.

Tested Q3 starting points

Table 1
Priority / configurationAllocation / actual inputCPU MoE / microbatchPrefillDecode
Interactive speedC057 · separate retrieval pass32,768 / 28,67243 / 8,1921,253.3131.42
Large-context textC053 · separate retrieval pass262,144 / 235,92946 / 4,096905.7627.39
Integrated serving profileC096 · retained configuration262,144 / 230,10048 / 2,0481,067.7826.56
Rates in tokens/s; n=1 per listed request. All use 14 generation/batch threads, batch 8,192, f16 KV, one slot and no MTP. The integrated row is a functional API observation with a different repetitive input and no concurrent audio; it is not a controlled comparison with the text benchmark.

These are version-specific, measured starting points, not a universal optimum. Keep all three Q3 shards together. Replace installation paths and check CPU topology before using the affinity mask. No parameter in these examples changes the published measurements.

02 / What to tune first

Spend your memory budget
where it pays off.

  1. Start with hybrid expert placement.

    The CPU99 Q3 control measured 183.07 PP; the CPU43/MTP2 f16 finalist reached median 1,197.90 PP at the same 8,192-token length. Several settings changed, but all-CPU MoE plus a larger hot-expert cache was not the best starting configuration. --n-cpu-moe is placement, not the number of CPU threads.

  2. Use physical-core placement, not every logical CPU automatically.

    The tuned Q3 presets use --threads 14 --threads-batch 14. On this host, --cpu-mask 0xffff --cpu-strict 1 selects separate physical cores. Check your own topology; the same numeric mask is not portable to every 16-core CPU.

  3. Size the microbatch for peak prefill memory.

    The tested settings are u8192 at 32k, u4096 for 256k text and u2048 for integrated serving. A large-slot u8192 trial failed a CUDA check. A model that loads successfully can still run out of working space when processing a deep prompt.

  4. Do not assume compact KV is faster.

    At 235,929 input tokens in the matched upstream workload, f16 generated at 26.78 TG versus 16.77 with q8_0. Start from the tested f16 setting; move to smaller KV only for a demonstrated capacity or workload benefit.

  5. Keep MTP flags tied to the correct engine.

    The retained upstream profile disables speculation. The historical thecodacus MTP2 finalist needs that pinned fork and its Q8 draft head. ik MTP improved decode but reduced prefill. Their short-context results are not the performance of the retained 256k service.

  6. Reuse history, and distinguish it from fresh prefill.

    --cache-reuse 256 --cache-prompt is enabled in the Q3 presets. Benchmarks explicitly disable request-prefix reuse. A continuation reusing 48k tokens is not a fresh 48k-input measurement; a new 230k input still took over three minutes to produce the first model event.

  7. Budget separately for speech and applications.

    CPU48/u2048 is the integration preset, not the CPU46/u4096 text benchmark. Chatterbox runs on GPU; ASR and Chromium stay off it. Validate peak prefill, natural retrieval, tool continuation and speech latency separately rather than treating one tok/s score as a complete agent test.

03 / Components & methodology

A single-GPU, hybrid-memory platform.

GPU
EVGA GeForce RTX 3090 OC FTW3 Ultra
24,576 MiB VRAM · driver 595.91.07
Processor
AMD Ryzen 9 8945HX
16 physical cores / 32 logical CPUs
Memory & storage
96 GB nominal RAM · 90.02 GiB MemTotal
Kingston KC3000 4 TB NVMe
System
Ubuntu 26.04.1 LTS · kernel 7.0.0-34
SM86 build target · Radeon display

NVMe holds the weight files and backing data. RAM supplies active CPU pages, resident experts and file cache. VRAM provides the GPU compute path, selected experts and the engine-specific KV working set. Weight-file size is therefore not a requirement for full simultaneous RAM residency.

Q3 is Unsloth UD-IQ3_XXS (81.96 GB of shards); Q4 is UD-Q4_K_XL (111.33 GB). Strata's native Q4 pack promotes 195 projections to BF16. The pinned implementations are thecodacus, upstream llama.cpp, ik_llama.cpp, OptLlama and Strata.

Actual input, not slot size

235,929 tokens occupy about 90% of a 262,144-token allocation. 260,000 tokens occupy 99.18%. A short prompt in a large slot does not measure performance at depth.

Fresh input, not a cold disk

Fresh means no reused KV prefix. OS file cache was not routinely flushed. Process restarts are not classified as cold-NVMe tests.

The dataset contains 240 synthetic-throughput, 103 retrieval, 56 native-benchmark, two warmup and five functional timing records. Server requests and native sample means are separate experimental units. Repeated-series medians never mix different cases. Long-context observations include n=1 results; the campaign is staged tuning rather than a randomized factorial study.

What ran in each test

ComponentPinned version / roleLaunch & build settings
Upstream llama.cpp8345f333951c661d166b00e6f9362e553768f292
Q3 text benchmarks and integrated serving
· ·
thecodacus/llama.cpp27c54b4bbcefadedcec6397477cc2e866c1db716
Q3/Q4 expert cache and draft-MTP experiments
ik_llama.cpp3d27f5bb6348c4d79edded63b03e9a93efb2f80e
Independent MTP comparison
·
OptLlama167742d9dfa01306786e7d3cfd31fcb8a8b185dc
Cache / prefetch / workspace / overlap experiment
·
Strata — experimentv0.1.40.1 sources · engine 0.1.40
Q4 native pack and streamed KV; not used for serving
· ·

CUDA 12.8.1 build environment for llama.cpp, SM86 / Release / native CPU target. Strata uses CUDA 13 libraries. GGUF revision: 38bb39ee97821de2c9009abb7e93950eec396e66. The direct Q3 presets use lazy loading with --load-mode none; do not replace this with the initial Q4 mmap settings and attribute the same performance to it.

Request parameters and benchmark conditions
04 / The tuning envelope

More expert cache was not the whole answer.

Early Q4 offload used CPU-side MoE, mmap/lazy loading and profiled hot-expert caching. An 8,192-token input measured 135.97 prefill and 18.92 decode tokens/s. A microbatch-1,024 variant improved that to 219.65/19.71, still well below the target.

Q3 screening then explored cache size, thread count, batching and hybrid CPU/GPU placement. Larger cache alone had little effect on prefill. Hybrid placement and the revised processing path produced a substantially better envelope.

Selected Q3 tuning stages

Table 2
ConfigurationPrefillDecoden
CPU99 controlthecodacus · q8_0 KV · 183.0726.733
Cache96 control192.7029.883
Cache80 finalistBatch 8,192 · 742.5731.155
Hybrid CPU42 + MTP21,049.7438.103
CPU43 + MTP2 · f16 finalist1,197.9035.975
Fresh 8,192-token throughput requests; within-series medians in tokens/s. Several stages change multiple parameters, so these are configuration comparisons rather than single-factor causal estimates. All intermediate trials appear in the full paper and data explorer.

Speculation trades off more than decode.

In ik_llama.cpp, MTP1 increased generation from 30.94 to 33.88 tokens/s at 8,192 input tokens, while prefill fell from 1,223.08 to 911.13. The thecodacus f16 finalists reached 35.97 TG with MTP2 versus 34.13 with MTP1. Support and effective behavior are implementation-specific.

OptLlama's combined cache/workspace/prefetch/overlap configuration passed short retrieval at 1,287.75/35.38. Its deep-input trial reached only 197 MiB VRAM headroom and was stopped by the resource guard, with no accepted complete result.

05 / Context scaling

The smaller KV format was slower at depth.

The matched upstream comparison holds CPU MoE 48, batch 8,192, microbatch 4,096, context 262,144 and disabled speculation constant. At 235,929 input tokens, f16 KV generated at 26.78 tokens/s versus 16.77 with q8_0. Prefill was nearly unchanged.

Upstream llama.cpp: f16 versus q8_0 KV

Figure 1

Prefill · tokens/s

Decode · tokens/s

f16 KVq8_0 KVLower target
One fresh-input throughput request per point. Lines connect sampled lengths as visual guides. Retrieval was tested separately. Click a point for the exact request and configuration. Source records M0324–M0334; upstream commit 8345f33.
+59.72%

decode with f16 at 235,929 tokens.
Compact KV did not imply faster generation.

A second upstream condition, CPU46/u4096, declined from 1,066.83/30.45 at 8,192 tokens to 905.76/27.39 at 235,929: 15.10% lower prefill and 10.03% lower decode. Both lower criteria were missed at depth, despite passing a separate retrieval request.

The earlier thecodacus 256k series declined more sharply, from 665.81/31.80 at 8,192 to 402.45/15.80 at 235,929. That series used different offload and microbatch settings, so it is not an isolated context-allocation comparison with the later upstream result.

06 / API, agent & audio

Fast decode does not mean an immediate answer.

The integrated Q3/upstream profile uses CPU MoE 48 and microbatch 2,048 to leave audio headroom, while retaining a 262,144-token allocation. Its API path is Nginx → LiteLLM → llama-swap → llama.cpp. It is a different configuration from the CPU46/u4096 throughput experiment.

HTTPS / Nginx→LiteLLM 1.104.0→llama-swap 262→upstream llama.cpp

llama-swap manages backend lifetimes; one physical llama.cpp slot serializes generation. It is not a durable shared queue with ComfyUI. GPU image processing runs in a separate, drained operating mode. These text measurements do not include simultaneous image generation.

Agent, browser and audio: versions, launch commands and configurations

Long-history API and client latency

Table 3
OperationInputElapsed
Responses: first model eventHeaders at 15.251 s; keepalives are not model output230,100 tokens216.519 s
Responses: completion230,100 tokens219.514 s
Codex: long-history turn232,796 tokens251.740 s
Codex: native compaction230,530 tokens262.022 s
Codex: following tool turnSame session79.845 s
Single functional observations with repetitive synthetic history, not a semantic-quality benchmark. Standard file editing, diff events and continuation were verified. Audio was inactive during these observations.

Speech is a separate latency budget.

Twenty synthetic TTS → ASR cycles measured full-WAV completion at 0.829 s p50 / 2.410 s p95. The first cold trial took 42.304 s during overlap with LLM work. A later cycle produced a valid WAV but failed strict transcription with one incorrect word.

These measure server stages, not the time from the end of human speech to first audible response. Live microphone, listening and interruption quality are outside the benchmark's validated scope.

Tool-use validation

The agent audit exercised 20 of 32 enabled tools, including Chromium, search, files, terminal, canvas, cross-session memory, a 32k subagent and images. An 18-call research task took 413.906 s. It did not establish completion of the separate 100-restaurant research task.

07 / Alternative-engine experiment

Strata is a comparison,
not the serving recommendation.

The retained system runs Q3/upstream llama.cpp. Strata's Q4 tests demonstrate a different residency strategy and near-full-context speed envelope, but do not validate the same agent, tool, image or speech workload.

Expand the 260k Q4 experiment and memory-limit comparison

Strata separates logical context from resident KV: the allocation was 262,144 tokens, but only 32,768 KV cells per layer were GPU-resident. Automatic expert caching, prefill slot borrowing and native MTP ran with a 62 GiB expert resident budget and an 80 GiB cgroup limit.

The runtime used 15 workers and one host thread. The GPU expert cache held 1,407 slots (4.09 GiB); pinned host KV occupied 3.09 GiB. Each request used thinking HIGH, temperature zero and a 512-token cap without prefix reuse.

Host residency and throughput

Figure 2

Prefill · tokens/s

Decode · tokens/s

Same 260,000-token fresh input and 12 GiB allocator VRAM reservation. Blue: median of three completed requests, 80 GiB memory limit / 62 GiB expert budget. Rust: one completed request, 48 GiB limit / 24 GiB budget. Dots show individual observations. Both memory limit and resident budget change; this is not an isolated RAM-capacity experiment.

Three repetitions at near-full context

Table 4
RequestPrefillDecodeFirst tokenWall time
1,230.0430.40211.671 s228.481 s
1,224.6930.55212.612 s229.330 s
1,247.3929.29208.745 s226.180 s
Median1,230.0430.40211.671 s228.481 s
Rates in tokens/s; output was 512 tokens per request. All stopped during reasoning with finish=length and no final answer. Two of three exceeded 30 TG. Approximately 211 seconds to first token reflects processing the entire uncached input, not slow streaming after prefill.

Memory pressure changes the envelope.

The 48 GiB-limit condition completed one request at 773.13/9.30. Relative to the baseline medians, prefill fell 37.15% and decode 69.40%. Its next repetition was interrupted. The physical host retained 96 GB and system-wide file cache.

80 GiB condition
74.060 GiB
48 GiB condition
39.476 GiB

Peak active-cgroup memory; bars share an 80 GiB scale. Sampled process VRAM peaked at 11.883 GiB in both conditions; swap peak was zero. NVML sampled approximately every two seconds. The 12 GiB reservation is an allocator mechanism, not a hard driver quota.

These results show promising residency efficiency, but do not establish natural retrieval, vision, tool use or speech quality in Strata. The different weights, packing, KV and speculation also prevent treating the Q4 result as a controlled engine-only improvement over Q3/llama.cpp.

08 / Practical conclusions

What to take to your own machine.

  1. Use Q3/upstream as the integrated starting point.

    CPU43/u8192 at 32k met the lower speed criteria in its measured 28,672-token request. CPU46/u4096 trades speed for 256k text capacity. The retained CPU48/u2048 profile reserves audio headroom. Copy the corresponding complete command, not a mix of flags from different engines.

  2. Tune placement, microbatch and KV before adding complexity.

    Hybrid placement was a stronger configuration family than the initial CPU99/cache path. At deep input, matched upstream f16 KV increased generation by 59.72% over q8_0. Smaller representations and larger caches are not automatically faster.

  3. Choose context capacity from the workload.

    CPU46/u4096 lost 15.10% prefill and 10.03% decode between 8,192 and 235,929 tokens. A 256k allocation does not guarantee short-prompt speed at depth. Reuse helps a shared prefix, but a completely new long prompt still incurs full prefill.

  4. Treat Strata as a separate experiment.

    Its Q4 median of 1,230.04/30.40 at 260,000 fresh tokens is promising, but was capped during reasoning. It is not the retained serving variant and does not establish the same tools, retrieval, images or voice behavior.

  5. Validate completed work, not only token rates.

    Q3 natural retrieval, API streaming and tool continuation were checked separately. No configuration demonstrated every target simultaneously; near-full-context 40 TG and live microphone-to-audio latency remain outside the established results.

Scope of inference

This staged campaign does not establish sustained 40 TG near full context, broad natural-task accuracy at 260k, randomized single-factor effects, or a full invariant-configuration context matrix. Clock/thermal controls and isolated physical NVMe I/O are unavailable. Complete raw input fixtures are not distributed, limiting byte-for-byte reproduction. The published timing records and pinned configurations support verification of the reported observations.

Measurement details