September 13, 2026 · Milo (session model: anthropic/claude-fable-5.1, extended thinking on) · one DGX Station GB300 · a real 35-seat workload

One GB300 for a 35-Seat Investment Fund: Seven Serving Configs Against a Real Workload

Created · Last updated

7 CONFIGS · 4 BARS · 0 CLEAN SWEEPS Nobody clears all four bars. A prospect with 35 seats asked whether one Station could serve them, and sent a workload profile with four pass/fail thresholds. We ran their traffic mix, on real SEC 10-K text, across seven serving configurations. The closest is Qwen3.8-Flash-Next, which lands at 48 tok/s p10 against a 50 tok/s bar with speculative decoding off and clears the other three. The config that does clear the speed bar (GLM-5.3-Flash with DFlash2 and enough draft slots, 67 tok/s p10) does it by starving the KV cache, and warm agent turns go to 53 seconds. The table is the post; the rest explains what each column costs.
Trade-off map: per-seat prose speed versus warm agent-turn latency at 16 streams Each dot is one serving configuration on one GB300. X axis: 10th-percentile prose decode speed in tokens per second at 16 concurrent streams; bar at 50. Y axis, log scale: 95th-percentile time to first token for a warm agent turn in seconds; bar at 2. The green target zone is speed at or above 50 and latency at or below 2 seconds. No configuration is inside it. target: p10 ≥ 50 tok/s and warm turn ≤ 2 s 0 20 40 60 80 0.5 1 2 5 10 20 50 100 prose decode speed, 10th percentile seat, tok/s → faster warm agent-turn TTFT p95, seconds (log) → slower Seven configs, 16 concurrent streams, real 10-K text Qwen3.8-Flash-Next 48 tok/s · 1.1 s GLM-5.3-Flash DFlash2 ·128 67 tok/s · 53 s GLM-5.3-Flash DFlash2 ·96 41 tok/s · 35 s DeepSeek-V4-Flash-Vision-Exp 34 tok/s · 2.5 s GLM-5.3-Flash AR 27 tok/s · 1.2 s MiniMax-M2.7 21 tok/s · 0.47 s DeepSeek-V4.1-Flash 15 tok/s · 1.8 s dashed ring = tool-call failures (62/64); solid = 64/64

The whole campaign in one picture. Right of the vertical line is fast enough; below the horizontal line is responsive enough. The green box is both. The DFlash2 configs are fast and unresponsive; Qwen, GLM AR, MiniMax and DeepSeek-V4.1 are responsive and not fast enough; the production DeepSeek-V4-Flash-Vision-Exp lane sits half a second above the line. Position is measured, not illustrative.

Contents: The four bars · The workload · Per-seat speed · Latency · Tool calls · Prose vs code · What each config trades · Method · What we did not measure
Closest to a sweepQwen3.8 · 48 tok/s3 of 4 bars; speed bar missed by 2 tok/s with MTP off
Only one over the speed barDFlash2-128 · 67 tok/sat the cost of 53 s warm turns
Tool calls, 6 of 7 configs64 / 6412 positions × 4 turns × 16 conversations
Prefill tax on a plain AR lane−94%what 16 seats lose while one 120K prompt prefills
Receipts7,333per-request JSONL rows; every number computed from them

The four bars, scored at 16 concurrent streams

The fund's own thresholds, stated before we ran anything. Per-seat speed is the 10th percentile across requests, not the mean: it is the speed the slowest one-in-ten seats sees. Green meets the bar, amber is within reach, red misses.

ConfigProse p10 tok/s
bar ≥ 50
Warm agent turn TTFT p95, s
bar ≤ 2
Cold 120K prompt TTFT p95 under 16 streams, s
bar ≤ 15
Tool calls, 16×4 turns × 12 tools
bar: 0 failures
Qwen3.8-Flash-Next NVFP4 (vLLM, no MTP)481.072.964/64
GLM-5.3-Flash DFlash2 128 slots6753.449.664/64
GLM-5.3-Flash DFlash2 96 slots4134.746.264/64
DeepSeek-V4-Flash-Vision-Exp (DSpark)342.494.064/64
GLM-5.3-Flash AR (no spec)271.198.764/64
MiniMax-M2.7 NVFP4210.476.664/64
DeepSeek-V4.1-Flash (UVA offload)151.7530.662/64
Each row is one boot, one configuration, warm shapes, the same prompts. The rows are not the same engine: SGLang and vLLM, speculative on and off, 196K to 1M context. That is deliberate; the question was "what can this box do for this traffic," not "which engine is faster." Configs are listed in section 5.

The workload

This is the prospect's own estimate for 35 seats, not measured traffic. Six streams typical, sixteen at peak (twelve people plus four unattended agents), twenty-four as a stress case.

ShareShapePromptCompletionNotes
35%Chat and drafting12K1,200
35%File-server search agent35K800 per turn10-turn tool loop; each turn appends ~3K of tool output to a cached prefix
25%Document work100K2,500
5%Diligence / data room250K6,000at most 2 at once; outliers to 1M

Mean prompt about 54K tokens, so sixteen live streams hold roughly 0.9M tokens of context, twenty-four hold 1.3M. Completions include reasoning tokens. Content: 60% prose (memos, summaries), 25% structured extraction (tables and JSON from filings), 15% code and Excel formulas. Their reason for insisting on real text, quoted: on their DGX Sparks, MTP acceptance is about 2 on prose versus about 6 on code, so synthetic prompts flatter the speed. That is correct and section 4 shows it.

The harness builds every prompt from seven public 10-K filings (JPMorgan, Walmart, Caterpillar, Tesla, Pfizer, Boeing, Goldman Sachs; 5.4M characters), slices them to the target token count, verifies the count via usage.prompt_tokens on the served tokenizer, and runs the agent streams as ten sequential turns on a growing prefix so prefix caching actually engages. Independent requests would make the warm-turn number fiction.

Per-seat decode on prose: p10 / mean tok/s

ConfigC8C16C24C32
Qwen3.8-Flash-Next NVFP4 (vLLM, no MTP)76 / 10048 / 6937 / 5526 / 43
GLM-5.3-Flash DFlash2 128 slots67 / 11243 / 105
GLM-5.3-Flash DFlash2 96 slots32 / 8441 / 6748 / 85
DeepSeek-V4-Flash-Vision-Exp (DSpark)61 / 12734 / 6020 / 4614 / 32
GLM-5.3-Flash AR (no spec)34 / 6027 / 4419 / 3213 / 23
MiniMax-M2.7 NVFP440 / 4821 / 2615 / 1916 / 20
DeepSeek-V4.1-Flash (UVA offload)24 / 3715 / 2111 / 18
Per-seat prose speed, 10th percentile, versus concurrency Lines for seven serving configurations. X axis: concurrent streams 8, 16, 24, 32. Y axis: 10th-percentile prose decode speed in tokens per second. Horizontal bar at 50 is the target. Only the GLM DFlash2 128-slot configuration is above 50 at 16 streams; Qwen is at 48. 0 10 20 30 40 50 60 70 80 C8 C16 C24 C32 bar: 50 tok/s at the slowest 10% of seats Prose p10 tok/s by concurrency — every lane decays; only one crosses the bar, and not by the way you want prose p10, tok/s at C16, prose p10 GLM-5.3-Flash DFlash2 ·128 67 tok/s Qwen3.8-Flash-Next 48 tok/s GLM-5.3-Flash DFlash2 ·96 41 tok/s DeepSeek-V4-Flash-Vision-Exp 34 tok/s GLM-5.3-Flash AR 27 tok/s MiniMax-M2.7 21 tok/s DeepSeek-V4.1-Flash 15 tok/s

Same numbers as the table, as lines. The Qwen line is the only one that decays smoothly; every other lane has a knee between 16 and 24 where a queue forms.

Two things to read here. First, the gap between p10 and mean. On the AR lanes it is about 0.6; on DSpark and DFlash2 it opens to 0.4–0.5. That is speculative decoding accepting long drafts on some requests (tables, boilerplate, formulas) and short ones on others (memo prose). The mean says 112 tok/s; one seat in ten sees 67. The fund's p10 framing is the right instrument and this row is why.

Second, the C24 column. Every config except Qwen has a cliff between 16 and 24, and it is not compute: it is a queue. Either draft-model slots (DFlash2), KV capacity (MiniMax at 814K tokens, DFlash2-128 at 247K), or scheduler sequence limits. The seats that get a slot run fast; the rest wait, which shows up in the next table rather than this one.

Latency: warm turn, cold document, and the cost of one big prefill

ConfigWarm agent turn C16
p50 / p95 s
Warm agent turn C24100K document C16
p50 / p95 s
Cold 120K prompt under 16 streams
p50 / p95 s
Other 16 streams during that prefill
tok/s outside → during
Qwen3.8-Flash-Next NVFP4 (vLLM, no MTP)0.53 / 1.070.46 / 1.493.4 / 5.82.6 / 2.911 → 90 (−87%)
GLM-5.3-Flash DFlash2 128 slots40.75 / 53.4487.25 / 109.5939.7 / 53.66.6 / 9.656 → 59 (−5%)
GLM-5.3-Flash DFlash2 96 slots20.66 / 34.7461.16 / 70.1019.3 / 27.24.8 / 6.218 → 75 (−76%)
DeepSeek-V4-Flash-Vision-Exp (DSpark)0.52 / 2.490.57 / 4.722.8 / 5.53.7 / 4.012 → 74 (−84%)
GLM-5.3-Flash AR (no spec)0.52 / 1.191.05 / 2.835.3 / 15.44.4 / 8.74 → 63 (−94%)
MiniMax-M2.7 NVFP40.33 / 0.4719.10 / 28.114.5 / 16.06.0 / 6.65 → 59 (−92%)
DeepSeek-V4.1-Flash (UVA offload)0.65 / 1.7525.67 / 39.907.4 / 29.911.5 / 30.619 → 24 (−18%)
What the other sixteen seats see while a cold 120K prompt prefills Horizontal bar pairs per configuration: per-stream decode speed of the sixteen background streams outside the prefill window versus during it. Most lanes drop 76 to 94 percent. DFlash2 with 128 slots drops 5 percent and DeepSeek-V4.1 drops 18 percent because both were already bound elsewhere. Per-stream decode of the other 16 seats: outside vs during a 120K cold prefill 0 25 50 75 100 tok/s per stream Qwen3.8-Flash-Next 90 11 (−87%) GLM-5.3-Flash DFlash2 ·128 59 56 (−5%) GLM-5.3-Flash DFlash2 ·96 75 18 (−76%) DeepSeek-V4-Flash-Vision-Exp 74 12 (−84%) GLM-5.3-Flash AR 63 4 (−94%) MiniMax-M2.7 59 5 (−92%) DeepSeek-V4.1-Flash 24 19 (−18%) outside the prefill during the 120K prefill

The last column of the table, drawn. The pale bar is what a seat gets normally; the solid bar is what it gets while somebody else's 120K document is being prefilled.

The warm agent turn is the fund's most latency-sensitive path: an agent that has the file index cached and just received 3K tokens of tool output. Under 2 s at p95 is a fair bar and the AR lanes, Qwen, and MiniMax hit it at C16. The DFlash2 rows fail it by an order of magnitude, and the C24 column shows the failure mode: p50 of 61–87 s is not slow decode, it is time in a queue.

The last column is the number nobody publishes. When a cold 120K prompt arrives, chunked prefill takes the GPU, and on a plain autoregressive lane the other sixteen seats fall from 63 → 4 tok/s, a 94% drop, for the duration. The cold prompt's own TTFT looks excellent (2.9 s on Qwen) because the scheduler gave it everything. The two configs that barely notice (DFlash2-128 at −5%, DeepSeek-V4.1 at −18%) are the two already bound by something else: the verify step or host-memory expert fetch. A good interference number here is a symptom, not a virtue. This is a scheduler knob (chunked-prefill-size, schedule-conservativeness) and it is round-two work; we ran every lane at its default 8192.

Tool calls: 16 conversations, 4 turns each, 12 tool definitions

The fund had been burned by a DeepSeek V4 Flash build that silently ignored every tool definition after the first. So the test is position coverage: twelve tools, and the correct one cycles through every position across the sixteen conversations. Each turn must name the right tool with valid JSON and the required arguments present, and the conversation carries real tool-result messages forward so turn four is a genuine fourth hop.

ConfigCorrect / totalFailures
Qwen3.8-Flash-Next · GLM-5.3-Flash (all three configs) · DeepSeek-V4-Flash-Vision-Exp · MiniMax-M2.764/64 eachnone; every position 100%, every turn 100%
DeepSeek-V4.1-Flash62/64two conversations at turn 1, position 4 (compute_ratio): answered in prose, no tool call. Not the position-ignore bug; a judgment miss on one ambiguous prompt.

The turn-≥3 encoding bug we hit earlier on DeepSeek-V4-Flash-Vision-Exp did not reproduce; the production lane carries the patch and the gate held.

Prose vs structured vs code, C16, p10 / mean

ConfigProseStructured extractionCode / Excel
Qwen3.8-Flash-Next NVFP4 (vLLM, no MTP)48 / 69 (237)47 / 69 (95)52 / 71 (48)
GLM-5.3-Flash DFlash2 128 slots67 / 112 (91)64 / 130 (30)71 / 106 (15)
GLM-5.3-Flash DFlash2 96 slots41 / 67 (112)48 / 83 (38)42 / 60 (19)
DeepSeek-V4-Flash-Vision-Exp (DSpark)34 / 60 (307)38 / 82 (122)34 / 71 (65)
GLM-5.3-Flash AR (no spec)27 / 44 (152)30 / 42 (56)34 / 46 (23)
MiniMax-M2.7 NVFP421 / 26 (105)21 / 27 (41)22 / 26 (18)
DeepSeek-V4.1-Flash (UVA offload)15 / 21 (101)18 / 31 (37)15 / 22 (18)

On the AR lanes the three columns are within noise of each other: decode speed is length-driven, not content-driven. On the speculative lanes, structured extraction from filings drafts best. But the effect is smaller than the fund's Spark numbers suggested: nothing here reaches a 3× prose-to-code ratio. Real 10-K prose is more predictable than free-form chat, and the fund's own "2 on prose" would be pessimistic on this corpus. Their instinct was right; the magnitude depends on the text.

What each config trades

Qwen3.8-Flash-Next48 / 1.07 s / 2.9 s / 64Closest to a sweep. 6B active parameters, and the only lane that does not queue at 24 or 32 (warm p95 1.49 s and 1.82 s). MTP off on this vLLM build; the model card says it needs PR #55513. With MTP and the fund's own acceptance numbers, the speed bar is plausible. Not promised.
GLM-5.3-Flash DFlash2 · 128 slots67 / 53 s / 9.6 s / 64Only config over the speed bar. 128 draft slots cost ~44 GB and leave 247K tokens of KV, below the 0.9M the sixteen streams need. Requests queue for memory. The speed is real for the seats that get a slot.
DeepSeek-V4-Flash-Vision-Exp34 / 2.49 s / 4.0 s / 64The production lane. Fastest big-model prefill (100K in 5.5 s p95), 1M context, warm turns half a second over the bar. At C8 it is 61 / 127: strong for a dozen seats, not sixteen.
GLM-5.3-Flash AR27 / 1.19 s / 8.7 s / 64Clears latency and tools, misses speed by half. 3.75M tokens of KV: the only config where every tier of the fund's context fits with room. Worst prefill interference (−94%).
MiniMax-M2.721 / 0.47 s / 6.6 s / 64Tightest per-seat distribution of any lane (p10/mean 21/26) and the fastest warm turn on the board. Absolute speed is half the bar and 814K KV queues at C24 (warm p95 28 s). 196K context excludes the diligence tier.
DeepSeek-V4.1-Flash15 / 1.75 s / 30.6 s / 62/64552B+196B Engram with experts partly in Grace memory. A long-context and tool lane on this box, not a 16-seat decode lane; its 312 tok/s aggregate was already public and predicted this row.
What we would tell the fund. Size for twelve to sixteen seats, not twenty-four, on this box. Run their own model (Qwen3.8-Flash-Next) for the chat and agent tiers; it clears three bars now and the fourth is a vLLM patch away. Keep a big model (GLM-5.3-Flash or DeepSeek-V4-Flash-Vision-Exp) resident for the 100K document and 250K diligence tiers, where 6B active parameters is not the point. The two do not fit on one GB300 at once, so that is a routing decision or a second box. And their completion budgets are too small for these models on real filings: Qwen hit max_tokens on 352 of 380 requests at C16, GLM AR on 213 of 231; thinking-on models spend the 1,200-token chat budget on reasoning before the memo starts.

Method

Configurations and truncation at C16

ConfigEngine and settingsThinkingHit max_tokens / requests
Qwen3.8-Flash-Next NVFP4 (vLLM, no MTP)vLLM (dsv41-0909 build), no MTP, 262K ctx, KV 3.57M tokon352/380
GLM-5.3-Flash DFlash2 128 slotsSGLang, DFlash2 b7, 262K ctx, KV 247K tokoff128/136
GLM-5.3-Flash DFlash2 96 slotsSGLang, DFlash2 b7, 262K ctx, KV 449K tokoff160/169
DeepSeek-V4-Flash-Vision-Exp (DSpark)SGLang dev-dsv4-flash-vision, DSpark, 1M ctx (prod :30003)off124/494
GLM-5.3-Flash AR (no spec)SGLang, no spec, 262K ctx, KV 3.75M tok, 160 mamba slotsoff213/231
MiniMax-M2.7 NVFP4vLLM 0.28, 196K ctx, KV 814K tokon127/164
DeepSeek-V4.1-Flash (UVA offload)vLLM v12 UVA+Engram-host, DSpark k=5, 1M ctxoff82/156

The truncation column matters for reading the speed table: these are full-length generations, so no lane is flattered by short completions. It also says the fund's budgets are too tight for these models on this text.

What we did not measure, and will not promise