With the basic serving path established, we moved the question from “does it fit?” to “what does a near-million-token request cost?” Five MoE checkpoint variants ran on one NVLink quad each. Their selected one-shot first-token times ranged from about 59 to 145 seconds. All passed the three-depth retrieval probe, but their rankings changed when we measured decoding under load.
The question
A context limit on a model card left three engineering questions unanswered: could the engine allocate the required state, could the model retrieve a fact at that length, and would the response arrive soon enough to be useful? We tested those separately. The table includes four approximately 1M-token prompts and Qwen3.6’s 963K-token prompt, so these are deployment observations, not a perfectly length-matched model leaderboard.
- Does it start with
--max-model-len 1048576, and how many 1M-token sequences fit in the KV cache? - Does it still find things? A random seven-digit code hidden at 10%, 50% and 90% depth of a ~1.05M-token prompt.
- How long does it take to read a 1M-token prompt (time to first token, TTFT), and how fast does it write afterwards?
The two quads ran different models at the same time, so every number below comes from a 4-GPU job with its own NVLink island and CPU socket.
| Model | Precision (weights · KV) | Layout on 4 GPUs | Recipe |
|---|---|---|---|
| GLM-5.3-Flash | FP8 weights · BF16 KV | TP4 (vLLM 0.31.0) | [S90] |
| Qwen3.8-Flash-Next | FP8 weights · BF16 KV | TP4 + EP4 (vLLM qwen38-flash-next image, Python frontend) | [S82] |
| DeepSeek-V4-Flash-0731 FP8 (AtlasCloud) | FP8 weights (AtlasCloud cast of DeepSeek's FP4 experts) · FP8 KV | TP4 (SGLang 0.5.21) | [S84] |
| DeepSeek-V4-Flash FP8 (sgl-project) | FP8 weights (sgl-project build) · FP8 KV | TP4 (SGLang 0.5.21) | [S84] |
| Qwen3.6-35B-A3B | FP8 weights · FP8 KV | data-parallel attention + TP4 experts (no EP) | [S80] |
Two of these need a footnote before any number. Qwen3.6-35B-A3B was launched with --data-parallel-size 4 and no expert parallelism. For a mixture-of-experts model that isn't four replicas: vLLM runs the attention data-parallel and shards the experts tensor-parallel across all four GPUs [S98], and our log says so ("Detected DP deployment with no --enable-expert-parallel. Falling back to AllGather+ReduceScatter dispatch/combine."). We label it data-parallel attention + TP4 experts (no EP). Qwen3.6 also needs YaRN ×4 to go past its native 262K [S80], and its "1M" prompt is 963K tokens. The two DeepSeek-V4-Flash builds are third-party FP8 checkpoints served by SGLang. Where they came from is the subject of Part 13.
$ cat results/runs/glm53_flash__tp4_a__1024k__vllm__1010-000210/cmd.sh (docker wrapper trimmed)
vllm/vllm-openai:v0.31.0 serve /mnt/data/models/zai-org__GLM-5.3-Flash --max-model-len 1048576 \
--gpu-memory-utilization 0.92 --enable-chunked-prefill --enable-prefix-caching --language-model-only \
--max-num-batched-tokens 8192 --tensor-parallel-size 4 --max-num-seqs 64
$ cat results/runs/dsv4_flash_0731_fp8__tp4_a__1024k__sglang__1010-040022/cmd.sh (trimmed)
-e SGLANG_DSV4_FP4_EXPERTS=0 lmsysorg/sglang:v0.5.21 -m sglang.launch_server \
--model-path /mnt/data/models/AtlasCloud__DeepSeek-V4-Flash-0731-FP8-DSpark --context-length 1048576 \
--tp 4 --kv-cache-dtype fp8_e4m3 --page-size 256 --mem-fraction-static 0.90 \
--chunked-prefill-size 4096 --swa-full-tokens-ratio 0.1 --max-running-requests 64Step 1: does it start, and how much fits?
| Model | Launch to ready | KV cache (tokens) | 1M sequences that fit (engine) |
|---|---|---|---|
| GLM-5.3-Flash | 629 s | 4,071,210 | 3.88× |
| Qwen3.8-Flash-Next | 267 s | 6,739,820 | 6.43× |
| Qwen3.6-35B-A3B | 347 s | 11,304,766 | 10.78× |
| DeepSeek-V4-Flash-0731 FP8 (SGLang) | 554 s | 8,277,504 (SGLang pool) | see note |
The "fits" column is the engine's own estimate printed at start-up (Maximum concurrency for 1,048,576 tokens per request). For Qwen3.6, each of the four data-parallel engine cores prints this line for its own rank (11,304,766 tokens each), so one request sees 10.8× and the quad as a whole holds about four times that. SGLang reports its pool as max_total_num_tokens and uses a separate sliding-window pool (--swa-full-tokens-ratio 0.1), so its number can't be compared directly.
Step 2: does it still find the needle?
$ for m in glm53_flash qwen38_flash_next dsv4_flash_0731_fp8 qwen36_35b; do grep '"depth": 0.9' results/runs/${m}__*1024k*/niah.log; done
(model name prefixed by us; long reasoning answers trimmed)
glm53_flash {"depth": 0.9, "prompt_tokens": 1047888, "ok": true, "latency_s": 62.9, ...</think>6609987"}
qwen38_flash_next {"depth": 0.9, "prompt_tokens": 1047894, "ok": true, "latency_s": 88.6, "answer": "6609987"}
dsv4_flash_0731_fp8 {"depth": 0.9, "prompt_tokens": 1047883, "ok": true, "latency_s": 132.6, "answer": "6609987"}
qwen36_35b {"depth": 0.9, "prompt_tokens": 1047894, "ok": true, "latency_s": 234.0, "answer": "6609987"}All five models found the code at all three depths: 15 of 15 needles. That's the minimum bar, not proof of long-context reasoning. A needle is one exact string, and community tests of long-context reasoning on similar models fall off far earlier r/LocalLLM: Qwen3.8-27B MRCRv2 test.
Step 3: how long does a 1M-token prompt take?

GLM-5.3-Flash reached the first token in 58.6 s at 1M input tokens (17,054 tokens/s), then decoded at 7.0 ms/token. Its mixture of KDA linear-attention and sparse full-attention layers is relevant architectural context, but this run does not isolate how much each component contributed. Qwen3.8-Flash-Next took about 85 s. The two DeepSeek-V4-Flash FP8 builds were close at 123 s and 126 s; shared architecture and engine make that unsurprising, without proving the cause. Qwen3.6-35B-A3B took 145 s for 963K tokens and decoded at 17.0 ms/token, compared with 8.1 ms at 250K. That last comparison was the first warning that reading a deep context and writing into it needed separate budgets. r/LocalLLaMA GLM-5.3-Flash megathread (architecture summary)
The wait before the first word.


Our first long-context grids reused the same random seed for every point. The benchmark client's warm-up request is also identical to the first measured request. So some requests were answered straight from the prefix cache, and a "250K-token" request that returns its first token in 0.9 s hasn't read 250K tokens. We dropped every request whose implied prefill speed was above 60K tokens/s (well above anything any model reached cold), and we report a point only if at least two clean requests remain. That removes the DeepSeek-V4-Flash 256K and 512K points entirely, plus one request per point elsewhere. The 1M points ran at concurrency 1 with fresh prompts and are clean (prefix hit rate 0). The grids are now seeded per point, and the clean reruns below replace the dropped points.
The clean reruns (11 Oct). With fresh prompts per point and nothing cached, Qwen3.8-Flash-Next read 250K tokens in 11.9 s (21.1K tokens/s) and wrote at 8.2 ms/token, against 85 s (11.8K tokens/s) for the one-shot 1M prompt. The two DeepSeek-V4-Flash FP8 builds again landed together at 250K: 14.1 s (0731, AtlasCloud) and 14.8 s (sgl-project), both about 7.0 ms/token. The sgl-project build's 512K point took 41.2 s (12.4K tokens/s). Run ids: qwen38_flash_next__tep4_b__1024k__vllm__1011-000332, dsv4_flash_0731_fp8__tp4_a__1024k__sglang__1011-012409, dsv4_flash_fp8__tp4_b__1024k__sglang__1011-003258 (point 0 of each 256K/512K grid, 3-4 requests, one at a time).
We also launched Flash-Next with its built-in multi-token-prediction head drafting 3 tokens per step, on the same TP4 + EP4 layout (run qwen38_flash_next__tep4_b_mtp__1024k__vllm__1011-030318). Mean accepted length was 2.6 on chat prompts, 3.3 on code and 2.5 on a 126K-token document. Median time per output token: 5.7 ms for one chat user, 11.8 ms with 16 chat users, 7.6 ms with 16 code users, and 5.5 ms for one user at 126K tokens. We did not run a matched no-draft baseline on the same prompts in time, so we report these as measured and make no speed-up claim.
Writing, not just reading: decode at depth
Time to first token is half the story. The other half is how fast each user's tokens come out once the context is deep and several users share the quad. We ran a decode-depth grid: 16 concurrent requests at 32K context, 8 at 256K and 2 at 1M, each writing 1,024 tokens. From this grid we use only the per-token decode time. Its TTFTs include cache hits from the seed issue above.

At 32K context with 16 users, Qwen3.6 had the lowest token time in this group at 10.2 ms, followed by the DeepSeek builds at 11.9 and 12.2 ms. GLM-5.3-Flash, the fastest one-shot reader, was the slowest writer here at 30.0 ms. At 256K with eight users, the range was 40-73 ms/token. Both context depth and concurrency change between these two slices, so they do not isolate the cost of context alone. They do show why the model with the fastest first token need not provide the fastest stream under load.
There's a known Hopper-specific issue in this exact spot: on H100, vLLM auto-selects a FlashInfer sparse-MLA backend for GLM-5.3-Flash that a user measured as 36-70% slower than the FlashAttention one [S124]. Our GLM-5.3-Flash logs show the same auto-selection (Using FLASHINFER_MLA_SPARSE_SM90).
The rerun (Sun 11 Oct). We ran GLM-5.3-Flash on TP4 (quad A, vLLM 0.31.0) with the default backend (log: FLASHINFER_MLA_SPARSE_SM90) and with --attention-backend FLASH_ATTN_MLA_SPARSE (log confirms it), on a short grid of chat, code and one 126K document, plus MTP with 3 draft tokens on the default backend:
| Workload | Default backend: ms/token | FLASH_ATTN_MLA_SPARSE: ms/token | Default + MTP k3: ms/token | Output tok/s (default / FA / MTP) |
|---|---|---|---|---|
| chat, 1 user | 6.71 ms | 6.67 ms | 3.66 ms | 124 / 135 / 233 |
| chat, 16 users | 15.97 ms | 15.58 ms | 11.90 ms | 901 / 889 / 1,062 |
| code, 16 users | 13.87 ms | 13.83 ms | 8.19 ms | 1,085 / 1,125 / 1,835 |
| 126K document, 1 user | 6.86 ms | 6.81 ms | 3.50 ms | 75 / 75 / 98 |
Medians, one run per cell, our measurement. Runs glm53_flash__tp4_a__1024k__vllm__spec-nospec__1011-043339, glm53_flash__tp4_a__1024k__vllm__spec-nospec_fasp__1011-045400, glm53_flash__tp4_a__1024k__vllm__spec-mtp_k3__1011-044429.
On H200 with this build the per-token times of the two attention backends were within about 3% of each other in every cell (the one-user output rate differed by about 9%, which we didn't investigate), so the H100 slowdown [S124] didn't show up here, and the decode numbers above stand. MTP, the model's own draft head [S121], is what moved decode: 6.7 → 3.7 ms per token for one user. Part 9 has the full speculative-decoding comparison, including how the gain shrinks with more users.
How it scales with users
The earlier one-request measurements establish prompt-processing baselines; the decode grids already show how sharing changes the response. Here we bring the full concurrency sweeps together, including dense Qwen3.8-27B at its 256K configuration. These grids stayed below the logged sequence and nominal KV limits, but that does not eliminate scheduler waiting. It only rules out those particular configured capacity caps as a sufficient explanation for the curves.
How to read these charts. Concurrent users is the number of requests the benchmark keeps in flight (vllm bench serve --max-concurrency). Each point is a separate benchmark run against the named server. Seeded reruns and the exclusions below address cache reuse in the original grids. We plot median and p90 time to first token, decode speed per user (1000 / median time per output token), total output tokens/s for the whole server, and requests completed out of requests sent. Workloads: 256K / 512K / 1M = one long document per request, 512 output tokens. Decode @32K/256K/1M = prompts of that length with 1,024 output tokens. Agent 200K = multi-turn sessions re-sending a ~190K shared history, 2,048 output tokens. Short 1K/1K and 8K/1K = chat-sized prompts. Requests answered from the prefix cache (our 60K tokens/s rule) are dropped from TTFT. A point that contained any is shown for TTFT only, and the rows in invalid_rows.csv are left out.
Read each curve against two capacity limits. The configured sequence cap, vLLM’s --max-num-seqs or SGLang’s --max-running-requests, can hold requests in a queue. The KV/state allocation can also constrain admission or trigger preemption and recomputation. Hybrid and compressed-attention models account for state differently, so the table uses each engine’s logged capacity rather than assuming identical bytes per token. First-token latency includes waiting as well as prompt processing. Hatched grey points mark the capacity-limited cases identified by the campaign; they are not direct scheduler traces. [S36] vLLM docs: Optimization and Tuning
Even below those limits, requests compete for execution time. vLLM’s documented chunked-prefill policy gives decode priority within a token budget and uses remaining capacity for prompt chunks. That is a useful explanation to investigate when another long request slows a stream, but our latency counters do not reconstruct the exact schedule of every request. The charts report the observed effect; assigning the whole effect to one scheduler mechanism would need traces.
How many sequences fit
| Model | KV pool (tokens per engine) | Engines | Sequence cap (server) | 1K/1K | 8K/1K | agent 200K | 256K | 512K | 1M |
|---|---|---|---|---|---|---|---|---|---|
| GLM-5.3-Flash | 4,071,210 | 1 | 64 (--max-num-seqs) | 1,987 | 441 | 20 | 16 | 7 | 4 |
| Qwen3.8-Flash-Next | 6,739,820 | 1 | 256 (--max-num-seqs) | 3,290 | 731 | 33 | 26 | 13 | 6 |
| DeepSeek-V4-Flash-0731 FP8 (AtlasCloud) | 8,277,504 | 1 | 64 (max_running_requests (server log)) | 4,041 | 898 | 40 | 33 | 16 | 8 |
| DeepSeek-V4-Flash FP8 (sgl-project) | 8,277,504 | 1 | 64 (max_running_requests (server log)) | 4,041 | 898 | 40 | 33 | 16 | 8 |
| Qwen3.6-35B-A3B | 11,304,766 | 4 | 64 (--max-num-seqs) | 22,076 | 4,904 | 220 | 180 | 88 | 44 |
| Qwen3.8-27B | 2,915,222 | 4 | 4,096 (vLLM default) | 5,692 | 1,264 | 56 | 44 | - | - |
Max concurrent sequences that fit in the KV pool at each context length, derived from our logged kv_tokens: floor(KV pool tokens per engine ÷ (prompt + output tokens)) × engines (data-parallel ranks). The KV pool is the engine's own number from its startup log (vLLM GPU KV cache size, SGLang max_total_num_tokens). The sequence cap is the other limit, and the lower of the two applies. "vLLM default" is 1,024 per engine, which we read from engine/arg_utils.py in the v0.31.0 image (the value for GPUs with at least 70 GB). "-" means longer than the server's maximum context.
- Short chat scales well. Qwen3.6-35B-A3B with 1K-token prompts: one user decodes at 179 tokens/s, and 64 users each get 113 tokens/s, for 6,945 output tokens/s from the server (39× one user). Median first token went from 101 ms to 440 ms. With 8K-token prompts and 64 users it still gave 5,229 tokens/s. The dense Qwen3.8-27B went from 87 to 70 tokens/s per user and 4,274 tokens/s total.
- Long prompts don't share well. DeepSeek-V4-Flash with sixteen 256K-token requests in flight: median first token 27 s (p90 101 s), each user decoding at 3.7 tokens/s, 47 tokens/s for the whole server. Alone with a 1M prompt it decoded at 129 tokens/s. With two 1M-deep requests decoding together, each got 16.3.
- GLM-5.3-Flash at 512K: four users at once had a median first token of 25 s against 24 s alone, and 82 tokens/s each against 144, for 31 total. Agent sessions sharing a 200K prefix did well: 8 users at 79 tokens/s each.
- Missing points. Every two-user 1M point is listed in
invalid_rows.csv(prefix-cache artefact) and is left out. Many 256K points on these servers reused a seed, so part of their requests came from the cache. For those we show only TTFT, from the clean requests, and DeepSeek-V4-Flash's one-user 256K points are dropped entirely.
GLM-5.3-Flash

All 11 measured points for GLM-5.3-Flash
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| decode @32K | 16 | 32/32 | 2.1 s | 14.6 s | 33.4 | 502.6 | |
| agent 200K | 8 | 16/16 | 2.9 s | 10.8 s | 79.0 | 520.5 | |
| 256K | 1 | 4/4 | 10.3 s | 10.4 s | - | - | TTFT from 3 clean of 4 requests; throughput not used |
| 256K | 4 | 8/8 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 256K | 16 | 32/32 | 44.7 s | 76.5 s | - | - | TTFT from 31 clean of 32 requests; throughput not used |
| decode @256K | 8 | 16/16 | 13.9 s | 53.3 s | - | - | TTFT from 15 clean of 16 requests; throughput not used |
| 512K | 1 | 3/3 | 24.2 s | 26.5 s | 144.0 | 17.9 | |
| 512K | 4 | 8/8 | 25.0 s | 80.1 s | 81.7 | 31.0 | |
| 1M | 1 | 2/2 | 58.6 s | 58.8 s | 142.3 | 8.2 | |
| 1M | 2 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| decode @1M | 2 | 4/4 | 66.6 s | 104.2 s | 17.7 | 16.4 |
Qwen3.8-Flash-Next

All 5 measured points for Qwen3.8-Flash-Next
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| decode @32K | 16 | 32/32 | 5.5 s | 10.7 s | 43.3 | 594.3 | |
| decode @256K | 8 | 16/16 | 21.1 s | 40.5 s | - | - | TTFT from 12 clean of 16 requests; throughput not used |
| 1M | 1 | 2/2 | 84.8 s | 85.3 s | 126.5 | 5.8 | |
| 1M | 2 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| decode @1M | 2 | 4/4 | 107.9 s | 149.5 s | 23.7 | 13.1 |
DeepSeek-V4-Flash-0731 FP8 (AtlasCloud)

All 9 measured points for DeepSeek-V4-Flash-0731 FP8 (AtlasCloud)
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| decode @32K | 16 | 32/32 | 2.0 s | 9.6 s | 82.0 | 929.7 | |
| agent 200K | 8 | 16/16 | 4.8 s | 5.3 s | 93.8 | 618.9 | |
| 256K | 1 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 256K | 4 | 8/8 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 256K | 16 | 32/32 | 26.8 s | 99.4 s | 3.8 | 48.0 | |
| decode @256K | 8 | 16/16 | 51.7 s | 85.0 s | - | - | TTFT from 15 clean of 16 requests; throughput not used |
| 1M | 1 | 2/2 | 123.4 s | 123.5 s | 128.0 | 4.0 | |
| 1M | 2 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| decode @1M | 2 | 4/4 | 162.9 s | 216.1 s | 16.6 | 9.1 |
DeepSeek-V4-Flash FP8 (sgl-project)

All 11 measured points for DeepSeek-V4-Flash FP8 (sgl-project)
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| decode @32K | 16 | 32/32 | 1.9 s | 9.8 s | 84.2 | 934.0 | |
| agent 200K | 8 | 16/16 | 4.8 s | 5.3 s | 91.8 | 602.5 | |
| 256K | 1 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 256K | 4 | 8/8 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 256K | 16 | 32/32 | 27.3 s | 100.9 s | 3.7 | 47.3 | |
| decode @256K | 8 | 16/16 | 46.6 s | 85.4 s | 16.3 | 74.9 | |
| 512K | 1 | 3/3 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| 512K | 4 | 8/8 | 41.2 s | 67.7 s | - | - | TTFT from 4 clean of 8 requests; throughput not used |
| 1M | 1 | 2/2 | 125.8 s | 126.2 s | 128.8 | 3.9 | |
| 1M | 2 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
| decode @1M | 2 | 4/4 | 165.7 s | 219.8 s | 16.3 | 9.0 |
Qwen3.6-35B-A3B

All 13 measured points for Qwen3.6-35B-A3B
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| short 1K/1K | 1 | 16/16 | 101 ms | 103 ms | 179.3 | 176.3 | |
| short 1K/1K | 64 | 192/192 | 440 ms | 467 ms | 113.0 | 6945.5 | |
| 8K/1K | 64 | 128/128 | 1.4 s | 2.3 s | 91.4 | 5229.3 | |
| decode @32K | 16 | 32/32 | 1.6 s | 3.1 s | 98.5 | 1398.0 | |
| agent 200K | 8 | 16/16 | 7.6 s | 24.6 s | 101.4 | 508.1 | |
| 256K | 1 | 4/4 | 15.0 s | 15.0 s | - | - | TTFT from 3 clean of 4 requests; throughput not used |
| 256K | 4 | 8/8 | 16.8 s | 20.8 s | - | - | TTFT from 7 clean of 8 requests; throughput not used |
| 256K | 16 | 32/32 | 29.5 s | 55.9 s | - | - | TTFT from 30 clean of 32 requests; throughput not used |
| decode @256K | 8 | 16/16 | 21.5 s | 38.7 s | - | - | TTFT from 11 clean of 16 requests; throughput not used |
| 512K | 1 | 3/3 | 54.9 s | 54.9 s | 89.0 | 8.5 | |
| 512K | 4 | 8/8 | 59.1 s | 77.9 s | - | - | TTFT from 7 clean of 8 requests; throughput not used |
| 1M | 1 | 2/2 | 144.7 s | 144.7 s | 58.7 | 3.3 | |
| 1M | 2 | 4/4 | - | - | - | - | excluded: invalid_rows.csv (prefix-cache artefact) |
Qwen3.8-27B

All 9 measured points for Qwen3.8-27B
| Workload | Users | Completed | TTFT p50 | TTFT p90 | Decode tok/s per user | Total out tok/s | Note |
|---|---|---|---|---|---|---|---|
| short 1K/1K | 1 | 16/16 | 76 ms | 78 ms | 87.4 | 86.9 | |
| short 1K/1K | 64 | 192/192 | 656 ms | 947 ms | 69.8 | 4274.1 | |
| 8K/1K | 64 | 128/128 | 3.1 s | 4.7 s | 49.4 | 2769.6 | |
| decode @32K | 16 | 32/32 | 3.7 s | 7.4 s | 50.7 | 676.5 | |
| agent 200K | 8 | 16/16 | 18.4 s | 61.4 s | 46.7 | 219.1 | |
| 256K | 1 | 4/4 | 45.0 s | 45.0 s | - | - | TTFT from 3 clean of 4 requests; throughput not used |
| 256K | 4 | 8/8 | 44.4 s | 44.6 s | - | - | TTFT from 7 clean of 8 requests; throughput not used |
| 256K | 16 | 32/32 | 53.5 s | 132.9 s | - | - | TTFT from 30 clean of 32 requests; throughput not used |
| decode @256K | 8 | 16/16 | 47.5 s | 90.3 s | - | - | TTFT from 15 clean of 16 requests; throughput not used |
- One quad completed these near-million-token probes. Each variant started, reported nominal KV capacity above three 1M sequences and found all three planted codes. Qwen3.6’s actual prompt was 963K tokens. Engine capacity, three successful retrieval probes and a production concurrency guarantee remain different levels of evidence.
- Reading 1M tokens costs from about one minute to two and a half minutes on 4 GPUs, depending on the architecture. That's a big spread for the same hardware.
- The fastest reader was not the fastest writer. GLM-5.3-Flash led the selected 1M first-token comparison at 58.6 s, ahead of Flash-Next at about 85 s, yet had the highest token latency in the 32K/16-user slice. These are distinct workloads with distinct rankings.
- Benchmark hygiene matters more at long context. One reused seed turned 250K-token prompts into 0.9-second cache hits. Check each request's implied prefill rate before you trust a TTFT.
When one quad is no longer the baseline
The one-quad results established several feasible long-context candidates, but left larger checkpoints outside the comparison. Part 5 crosses the socket boundary for GLM-5.3, MiniMax-M3 and DeepSeek-V4-Pro, where memory placement, kernel compatibility and decoding cost become inseparable from the launch recipe.
Sources
Bracketed ids [S..] refer to the campaign bibliography (docs/SOURCES.md). Numbers not attributed to a source are our own measurements on this node.
- [S90] vLLM project (recipes), https://recipes.vllm.ai/zai-org/GLM-5.3-Flash
- [S82] vLLM project (recipes), https://recipes.vllm.ai/Qwen/Qwen3.8-Flash-Next
- [S84] vLLM project (recipes), https://recipes.vllm.ai/deepseek-ai/DeepSeek-V4-Flash-0731
- [S80] vLLM project (recipes), https://recipes.vllm.ai/Qwen/Qwen3.6-35B-A3B
- [S98] vLLM docs, https://docs.vllm.ai/en/latest/serving/expert_parallel_deployment.html
- [S124] vLLM project, https://github.com/vllm-project/vllm/issues/56564
- [S121] canada-quant, https://huggingface.co/canada-quant/GLM-5.3-Flash-W4A16-MTP
- [S36] vLLM project, Engine arguments (docs)
- u/Melodic-Clue9555, https://www.reddit.com/r/LocalLLM/comments/1vp1l5p/ (r/LocalLLM: Qwen3.8-27B MRCRv2 test)
- https://www.reddit.com/r/LocalLLaMA/comments/1vyzzxu/ (r/LocalLLaMA GLM-5.3-Flash megathread (architecture summary))
- https://docs.vllm.ai/en/latest/configuration/optimization.html (vLLM docs: Optimization and Tuning)