I ran 5 models on the same PC. I measured input processing speed, text generation speed and the time until the response began.

I tested Qwen 3.8 Flash on 1 and 2 GPUs. It processed 260,000 input tokens on 1 GPU and 1,047,001 on 2 GPUs.

Measured: 2026-10-26.

I sent 1 request at a time, after warm-up checks. The tables also show the number of runs.

Test setup

I used RTX PRO 6000 Blackwell GPUs. Each has 96 GB of memory. I used 1 or 2 GPUs for each model. The PC has 768 GB of system memory.

FieldValue
CPUAMD EPYC 9175F 16-Core Processor
GPUNVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition × 2
GPU memory96 GB × 2
GPU power limit300 W × 2
System memory768 GB

Terms

Definitions
TermMeaning
TokenA unit the model uses to split and process text.
DecodeText generation speed. This includes reasoning tokens.
PrefillThe speed of processing new input. Reused calculations are not included.
TTFTThe time until the server produces the first token.
MTPA method that predicts several upcoming tokens in advance.
CacheStored calculations that can be reused when processing the same input.

What I tried with Qwen

MTP predicts several upcoming tokens in advance. I used the model’s built-in MTP with 3 proposed tokens per step. I tested a 256K limit on 1 GPU, and 256K and 1M limits on 2 GPUs. I recorded input and output token counts. I also show how much input reused earlier calculations.

Decode is text generation speed. Prefill is input processing speed. TTFT is the time until the first token. tok/s means tokens processed in 1 second.

Results with 2 GPUs

I tested 256K and 1M limits. With the 1M setting, I sent 1,047,001 input tokens and received 128 output tokens. The total stayed within the 1,048,576-token limit.

I used 2 GPUs with MTP3 (TP2). There was 1 run per input. Temperature was 0 and reasoning was low.
Context limit tokensInput tokensReused tokensOutput tokensRunsDecode tok/sPrefill tok/sTTFT seconds
262,14463635121277.5Not measured0.032
1,048,57663635121264.4Not measured0.032
1,048,5761,047,00101281151.610,291101.918

The 1,047,001-token request took 102.799 seconds in total. All 128 output tokens were used for reasoning before the answer. There was no ordinary answer text. This checked whether the model could process a long input. I did not test answer quality. The 2 requests with 63 input tokens fully reused earlier calculations. There was no new input to process, so I do not report Prefill speed for them.

Results with 1 GPU

Qwen generation speed by input length on 1 GPU
Medians and ranges from 3 runs per input on 1 GPU with MTP3 and a 256K limit. The 92-token input was fully reused. Open chart
I used 1 GPU with MTP3. Input and output together could use up to 262,144 tokens. Each value is the median of 3 runs. Temperature was 0 and reasoning was low.
Input tokensReused tokensOutput tokensRunsDecode tok/sDecode range tok/sPrefill tok/sTTFT seconds
92925123237.7227.9–242.3Not measuredAll input reused0.036
4,09605123242.5231.7–247.012,9130.323
260,00005123213.0202.4–218.212,12121.498

For 260,000 input tokens, the median total time was 24.072 seconds. This is the time from sending the request to receiving the full response.

The 92-token input on 1 GPU and the 63-token input on 2 GPUs fully reused earlier calculations. I do not report Prefill speed for them. Rows with 0 reused tokens measure newly processed input.

I adjusted input length by repeating the same word or number before the task. I did not test whether the model could retrieve information from long text or answer correctly.

Context limits and memory

I used the same NVIDIA release of Qwen. TP1 uses 1 GPU; TP2 splits computation across 2 GPUs. On 1 GPU, the total input and output limit was 262,144 tokens. On 2 GPUs with the 1M setting, it was 1,048,576 tokens.

The 1-GPU logs showed 26.82 GiB of embedding weights (PLE) in CPU memory. The runtime allocated 15.09 GiB to KV memory, which stores earlier calculations. The KV pool could hold 819,365 tokens in total. This is separate from the input and output limit for 1 request.

The 1M setting on 2 GPUs used YaRN to extend the original context limit by a factor of 4. I only checked the settings for 512K and 768K. I did not run generation on a GPU with those limits. GPU counts, input and output lengths, cache use and run counts also differ. The speed differences cannot be attributed to the context limit alone.

Results by model

I show Qwen results for 1 and 2 GPUs. GPU counts and input lengths are also listed for the other 4 models. Settings and run counts differ. Speed alone does not show which model is better for a task.

Generation speed and time to first token

Generation speed
Rows with 3 runs show the median and minimum–maximum range. Rows with 1 run show that result. Open chart
Each row lists input, reused tokens, output and run count.
ModelGPUsContext limit tokensInput tokensReused tokensOutput tokensRunsDecode tok/sTTFT ms
Qwen 3.8 Flash NVIDIA1262,1444,09605123242.5322.7
Qwen 3.8 Flash NVIDIA21,048,5761,047,00101281151.6101,918.4
DeepSeek V4.1 Flash 10172524,2888505123220.9176.4
GLM 5.3 Flash NVIDIA2262,14464645123193.921.1
Nemotron 3.5 Super VL1131,0727005123170.4106.6
MiniMax M3.1 Flash 272B2131,0722430512380.581.7
Time to first token
The TTFT axis uses a log scale. Each row lists input length and run count. Open chart

Input processing speed

Input processing speed
Each row lists GPU count, context limit, input and output counts, and run count. Open chart
Each row lists input, reused tokens, output and run count.
ModelGPUsContext limit tokensInput tokensReused tokensOutput tokensRunsPrefill tok/s
Qwen 3.8 Flash NVIDIA1262,1444,0960512312,913
Qwen 3.8 Flash NVIDIA21,048,5761,047,0010128110,291
DeepSeek V4.1 Flash 10172524,2883,447–3,45401637,283
GLM 5.3 Flash NVIDIA2262,1443,484–3,50101638,236
Nemotron 3.5 Super VL1131,0724,005–4,019016313,306
MiniMax M3.1 Flash 272B2131,0723,497–3,52501635,580

Models and settings

Qwen 3.8 Flash NVIDIA

I used 1 GPU with MTP3. The 4,096-token and 260,000-token inputs were processed from scratch. The 92-token input was fully reused from the cache.

FieldValue
QuantizationNVFP4 mixed
Limit on 1 GPU262,144 tokens
Limit on 2 GPUs with 1M1,048,576 tokens
Reasoning settinglow
vLLM0.1.dev21830+g8244d1c44

nvidia/Qwen3.8-Flash-Next-FP4-Local

Revision: b9ce18a6887e18c089fdea8509a33e63429a3300

DeepSeek V4.1 Flash 1017

DSpark5 reached 220.9 tok/s during text generation. Input processing speed was measured separately.

FieldValue
QuantizationEXL3 3.0bpw
Context limit524,288 tokens
Reasoning settinglow
vLLM0.31.1rc1.dev376+g5555a2d8f

diffbot/DeepSeek-V4.1-Flash-EXL3-3bpw-2x-RTX-PRO-6000

Revision: bdc01239200699e48cab9dc3a650d1ead8e562f1

Each value is the median of 3 runs. I measured generation speed and response start time with 512 output tokens. I measured input processing with 16 output tokens. The table also lists input tokens and reused tokens.
Method and input lengthDecode tok/sPrefill tok/sTTFT ms
DSpark5Decode / TTFT: 85 input / 0 reusedPrefill: 3,447–3,454 input / 0 reused220.9213.9–228.57,283176.4
GLM 5.3 Flash NVIDIA

MTP3 reached 193.9 tok/s and Inco DFlash2 reached 176.2 tok/s. I also measured input processing speed and response start time for each method.

FieldValue
QuantizationNVFP4 mixed
Context limit262,144 tokens
Reasoning settinglow
vLLM0.1.dev21830+g8244d1c44.cu134

nvidia/GLM-5.3-Flash-FP4-Local

Revision: 76348ddb2be2e35e39ecfc00e75dc07703f4f3d5

Each value is the median of 3 runs. I measured generation speed and response start time with 512 output tokens. I measured input processing with 16 output tokens. The table also lists input tokens and reused tokens.
Method and input lengthDecode tok/sPrefill tok/sTTFT ms
MTP3Decode / TTFT: 64 input / 64 reusedPrefill: 3,484–3,501 input / 0 reused193.9193.2–194.68,23621.1
Inco DFlash2 (7 proposals)Decode / TTFT: 64 input / 64 reusedPrefill: 3,485–3,497 input / 0 reused176.2175.4–177.78,2759.5
Nemotron 3.5 Super VL

Generation reached 170.4 tok/s with MTP5 and 69.6 tok/s without it. I disabled thinking before the answer. I did not use LiLiCorr.

FieldValue
QuantizationNVFP4 mixed
Context limit131,072 tokens
Reasoning settingoff
vLLM0.32.0

nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4

Revision: 59b8721646c38111a242da18218859fb2b454322

Each value is the median of 3 runs. I measured generation speed and response start time with 512 output tokens. I measured input processing with 16 output tokens. The table also lists input tokens and reused tokens.
Method and input lengthDecode tok/sPrefill tok/sTTFT ms
autoregressiveDecode / TTFT: 70 input / 0 reusedPrefill: 4,011–4,018 input / 0 reused69.669.5–69.613,37770.6
MTP5Decode / TTFT: 70 input / 0 reusedPrefill: 4,005–4,019 input / 0 reused170.4170.0–170.413,306106.6
MiniMax M3.1 Flash 272B

DSpark7 reached 80.5 tok/s and Inco DFlash2 reached 81.7 tok/s. DFlash2 ranged from 76.1 to 92.7 tok/s across 3 runs. Results for different proposal lengths are in the table below.

FieldValue
QuantizationNVFP4/MXFP8
Context limit131,072 tokens
Reasoning settingnative adaptive
vLLM0.1.dev23341+g8744dd2fb.d20261022.cu134

primitive-ai/MiniMax-M3.1-Flash-272B-NVFP4

Revision: 93dda6017e2edf22f51e6bd0814045406d114780

Each value is the median of 3 runs. I measured generation speed and response start time with 512 output tokens. I measured input processing with 16 output tokens. The table also lists input tokens and reused tokens.
Method and input lengthDecode tok/sPrefill tok/sTTFT ms
autoregressiveDecode / TTFT: 243 input / 128 reusedPrefill: 3,511–3,534 input / 128 reused39.139.0–39.15,50471.7
Inco DFlash2 (7 proposals)Decode / TTFT: 243 input / 0 reusedPrefill: 3,501–3,511 input / 0 reused81.776.1–92.75,62181.4
DSpark7Decode / TTFT: 243 input / 0 reusedPrefill: 3,497–3,525 input / 0 reused80.580.2–82.15,58081.7

Changing the number of proposed tokens

I tested DSpark with 3, 5 and 7 proposed tokens per step. I used 2 GPUs and a combined input and output limit of 128K. I measured each proposal length 3 times.

MiniMax generation speed by proposal length
Medians and ranges from 3 runs per proposal length on 2 GPUs with a 128K limit and 512 output tokens. Open chart
I used 512 output tokens and measured each proposal length 3 times. Temperature was 0 and the model chose its reasoning amount automatically. The table also shows the fraction of proposed tokens accepted and the number accepted per step.
Proposed tokensDecode tok/sPrefill tok/sAcceptance rateAccepted per step
373.45,65647.7%1.43
576.35,59036.0%1.80
785.15,57830.4%2.13

Among these 3 settings, 7 proposed tokens gave the highest generation speed. DSpark7 reached 80.5 tok/s in the model comparison and 85.1 tok/s here. These were separate measurements, so I keep the results separate.

Method

I sent 1 request at a time through the API. I calculated speed from the server’s recorded times. Model loading and execution setup time are not included.

Separating generation from input processing

Decode is the output token count minus 1, divided by generation time. Prefill is the number of newly computed input tokens divided by input processing time.

TTFT is the time until the server produces the first token, including a reasoning token. It does not include network time to the user’s device.

Recording input and cache use

For the other 4 models, I measured generation with 512 output tokens. I measured input processing with about 3.4K–4K input tokens and 16 output tokens. Qwen on 1 GPU produced 512 tokens. On 2 GPUs, short inputs produced 512 tokens; the 1,047,001-token input produced 128.

For input processing tests, I changed the start of each input to reduce cache reuse. Reused tokens are not counted as newly processed input. During the 1-GPU tests, another job was running on the other GPU. It may have affected the results.

Separating speed from answer quality

I set temperature to 0. I ignored the end-of-sequence signal (EOS) and generated the requested number of tokens. Decode includes reasoning tokens. This speed does not show whether the answer is correct.

I did not test images, tool calls, concurrent users or sustained load. I checked number-sequence generation in separate requests.

Reasoning settings and token counts

I used reasoning low for Qwen, GLM and DeepSeek. MiniMax used its default adaptive setting. Thinking was disabled for Nemotron.

A token is a unit the model uses to process text. Counts differ with each model’s tokenizer and chat template, even for the same text. Matching the token count does not remove all differences between models.

DeepSeek memory placement

I investigated allocating 92 GiB to GPU0 and 40 GiB to GPU1. I did not run the model with this allocation.

The TP2 implementation I used cannot directly set a different memory budget for each GPU. Experts are parts of the model that share the computation. The GPU reads experts held in CPU memory over PCIe to compute them. The GPU also needs free memory for its KV cache and working space.

What I sent and what the models returned

I show 9 recorded inputs and ordinary responses. Authentication headers, internal addresses, response IDs and reasoning traces are not included. I have not added to or edited the response text.

The examples include number-sequence checks and speed tests with 512 output tokens. Qwen’s number-sequence example used 2 GPUs, MTP3 and a 1M limit. Its code example used 1 GPU, MTP3 and a 256K limit. Each example lists input and output token counts and the output limit.

Qwen 3.8 Flash NVIDIA

Numbers 1–20 · Basic generation check · MTP3

2 GPUs · limit 1,048,576 tokens · MTP3 · 2026-10-26

Recorded token counts
Input 60 / output 79 tokens
Request settings
temperature: 0 reasoning: low
Finish reason
stop
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "model": "qwen38-flash-next-nvidia-vllm",
  "messages": [
    {
      "role": "user",
      "content": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers."
    }
  ],
  "max_tokens": 256,
  "temperature": 0,
  "reasoning_effort": "low"
}

Ordinary response text



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

Code generation · Speed test with 512 output tokens · MTP3

1 GPU · limit 262,144 tokens · MTP3 · 2026-10-26

Recorded token counts
Input 4,096 / output 512 tokens
Request settings
temperature: 0 reasoning: low
Finish reason
length
Output limit
512 tokens

Generation stopped at the output limit. I did not check whether the code was complete or runnable.

I repeated “datum” to make the input 4,096 tokens long. At the end, I asked for Python code. The repeated words were part of the actual request.

Input (request JSON)

{
  "model": "qwen38-flash-next-nvidia-vllm",
  "messages": [
    {
      "role": "user",
      "content": "Benchmark nonce: 47ac3fe5a43946ba83430d0ffe56c94e\nThe following background is neutral padding for a context-length benchmark.\n<context> datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum datum\n</context>\nUse the same task regardless of the padding:\nWrite a complete Python 3 module implementing an in-memory event store. Include immutable events, optimistic concurrency checks, per-stream ordering, replay, snapshots and several tests. Explain the design briefly, then provide all code. Continue until the module and tests are complete."
    }
  ],
  "max_tokens": 512,
  "temperature": 0,
  "ignore_eos": true,
  "stream": true,
  "stream_options": {
    "include_usage": true
  },
  "reasoning_effort": "low"
}

Ordinary response text



## Design Overview

The event store follows the **Event Sourcing** pattern with these core principles:

| Concern | Approach |
|---------|----------|
| **Immutability** | Events and snapshots are `@dataclass(frozen=True)` — once written, never mutated. |
| **Per-stream ordering** | Each stream maintains a monotonically increasing integer version. Events are stored in a dict keyed by `stream_id`. |
| **Optimistic concurrency** | `append()` accepts an `expected_version`; if the current stream version ≠ expected, a `ConcurrencyError` is raised. |
| **Replay** | `read_stream()` returns all events (or a slice) in order. A higher-level `replay()` helper folds events into a state object. |
| **Snapshots** | `save_snapshot()` persists a state + version pair. `replay()` can start from the latest snapshot to avoid re-folding the entire history. |
| **Thread safety** | A single `threading.Lock` guards all mutations. |

---

## Complete Module

```python
"""
in_memory_event_store.py

View this input and response as JSON

DeepSeek V4.1 Flash 1017

Numbers 1–20 · Basic generation check · DSpark5

2 GPUs · limit 524,288 tokens · DSpark5 · 2026-10-26

Recorded token counts
Input 49 / output 57 tokens
Request settings
temperature: not recorded reasoning: not recorded
Finish reason
completed
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "input": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers.",
  "max_output_tokens": 256,
  "model": "deepseek-v41-flash-1017",
  "stream": false
}

Ordinary response text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

GLM 5.3 Flash NVIDIA

Code generation · Speed test with 512 output tokens · MTP3

2 GPUs · limit 262,144 tokens · MTP3 · 2026-10-26

Recorded token counts
Input 64 / output 512 tokens
Request settings
temperature: 0 reasoning: low
Finish reason
length
Output limit
512 tokens

Generation stopped at the output limit. I did not check whether the code was complete or runnable.

Input (request JSON)

{
  "ignore_eos": true,
  "max_tokens": 512,
  "messages": [
    {
      "content": "Write a complete Python 3 module implementing an in-memory event store. Include immutable events, optimistic concurrency checks, per-stream ordering, replay, snapshots and several tests. Explain the design briefly, then provide all code. Continue until the module and tests are complete.",
      "role": "user"
    }
  ],
  "model": "glm53-flash-nvidia-vllm",
  "reasoning_effort": "low",
  "stream": true,
  "stream_options": {
    "include_usage": true
  },
  "temperature": 0
}

Ordinary response text

# In-Memory Event Store — Design Overview

**Core concepts:**

- **Immutable events**: `Event` is a frozen dataclass. Once created, it can't be mutated.
- **Per-stream ordering**: Each stream has its own version number starting at 0. Appends specify an `expected_version` for **optimistic concurrency control** — if another writer appended first, the append fails with `ConcurrencyError`.
- **Global ordering**: Events also get a monotonically increasing global position, useful for projections/replay across all streams.
- **Replay**: `read_stream` returns events for one stream; `read_all` returns everything in global order; `replay` folds events through a user-supplied handler to rebuild state.
- **Snapshots**: A snapshot stores the state of a stream at a given version, so replay can start from the snapshot instead of version 0. Snapshots are also immutable.
- **Thread safety**: A single `RLock` guards all mutations, making the store safe for concurrent use while keeping appends atomic.

```python
"""
inmem_event_store.py

A simple in-memory event store with:
  * immutable events
  * optimistic concurrency control (expected_version checks)
  * per-stream ordering + global ordering
  * replay (per-stream and global)
  * snapshots

Python 3.8+, standard library only.
"""

from __future__ import annotations

import copy
import itertools
import threading
import unittest
from dataclasses import dataclass, field, replace
from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple


# --------------------------------------------------------------------------
# Exceptions
# --------------------------------------------------------------------------

class EventStoreError(Exception):
    """Base class for event store errors."""


class StreamNotFoundError(EventStoreError):
    pass


class ConcurrencyError(EventStoreError):
    def __init__(self, stream_id: str, expected: int, actual: int):
        self.stream_id = stream_id
        self.expected = expected
        self.actual = actual
        super().__init__(
            f"Concurrency conflict on stream '{stream_id}': "
            f"expected version {expected}, actual version {actual}"
        )


class SnapshotVersionError(EventStoreError):
    pass


# --------------------------------------------------------------------------
# Immutable event
# --------------------------------------------------------------------------

@dataclass(frozen=True)
class Event:
    """
    An immutable domain event.

   

View this input and response as JSON

Numbers 1–20 · Basic generation check · MTP3

2 GPUs · limit 262,144 tokens · MTP3 · 2026-10-26

Recorded token counts
Input 31 / output 49 tokens
Request settings
temperature: 0 reasoning: low
Finish reason
stop
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "max_tokens": 256,
  "messages": [
    {
      "content": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers.",
      "role": "user"
    }
  ],
  "model": "glm53-flash-nvidia-vllm",
  "reasoning_effort": "low",
  "temperature": 0
}

Ordinary response text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

Nemotron 3.5 Super VL

Code generation · Speed test with 512 output tokens · MTP5

1 GPU · limit 131,072 tokens · MTP5 · 2026-10-26

Recorded token counts
Input 70 / output 512 tokens
Request settings
temperature: 0 reasoning: not recorded
Finish reason
length
Output limit
512 tokens

Generation stopped at the output limit. I did not check whether the code was complete or runnable.

Input (request JSON)

{
  "chat_template_kwargs": {
    "enable_thinking": false
  },
  "ignore_eos": true,
  "max_tokens": 512,
  "messages": [
    {
      "content": "Write a complete Python 3 module implementing an in-memory event store. Include immutable events, optimistic concurrency checks, per-stream ordering, replay, snapshots and several tests. Explain the design briefly, then provide all code. Continue until the module and tests are complete.",
      "role": "user"
    }
  ],
  "model": "nemotron35-super-vl-nvfp4-vllm",
  "stream": true,
  "stream_options": {
    "include_usage": true
  },
  "temperature": 0
}

Ordinary response text

### Design Overview

This module implements an **in-memory event store** using the Event Sourcing pattern. The core concepts are:

1.  **Immutable Events**: Once an event is appended to a stream, it cannot be modified. It is represented as a frozen dataclass.
2.  **Streams**: A stream is a logical sequence of events identified by a `stream_id`. Events within a stream are strictly ordered by a `version` number.
3.  **Optimistic Concurrency Control (OCC)**: To prevent race conditions where two processes modify the same stream simultaneously, the store uses an `expected_version`. If the current version of the stream does not match the expected version, a `ConcurrencyError` is raised.
4.  **Snapshots**: To avoid replaying thousands of events to reconstruct an aggregate's state, the store supports snapshots. A snapshot captures the state at a specific version. When loading a stream, the store loads the latest snapshot and only replays events occurring after that version.
5.  **Replay**: The ability to iterate through all events in a stream from a specific starting version to the end.

---

### The Module: `event_store.py`

```python
import threading
from dataclasses import dataclass, field
from typing import Any, Callable, Dict, List, Optional, TypeVar, Generic
from uuid import UUID, uuid4

T = TypeVar('T')

class EventStoreError(Exception):
    """Base exception for event store errors."""
    pass

class ConcurrencyError(EventStoreError):
    """Raised when optimistic concurrency check fails."""
    pass

class StreamNotFoundError(EventStoreError):
    """Raised when a stream does not exist."""
    pass

@dataclass(frozen=True)
class Event(Generic[T]):
    """
    An immutable event.
    :param stream_id: The ID of the stream this event belongs to.
    :param version: The sequential version of this event within the stream.
    :param event_type: A string describing the type of event (e.g., 'ItemAdded').
    :param data: The payload of the event.
    :param timestamp: Optional timestamp of occurrence.
    """
    stream_id: str
    version: int
    event_type: str
    data: T
    timestamp: float = field(default_factory=lambda: __import__('time').time())

@dataclass
class Snapshot(Generic[T]):
    """

View this input and response as JSON

Numbers 1–20 · Basic generation check · MTP5

1 GPU · limit 131,072 tokens · MTP5 · 2026-10-26

Recorded token counts
Input 36 / output 51 tokens
Request settings
temperature: 0 reasoning: not recorded
Finish reason
stop
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "chat_template_kwargs": {
    "enable_thinking": false
  },
  "max_tokens": 256,
  "messages": [
    {
      "content": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers.",
      "role": "user"
    }
  ],
  "model": "nemotron35-super-vl-nvfp4-vllm",
  "temperature": 0
}

Ordinary response text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

MiniMax M3.1 Flash 272B

Numbers 1–20 · Basic generation check · autoregressive

2 GPUs · limit 131,072 tokens · autoregressive · 2026-10-26

Recorded token counts
Input 210 / output 57 tokens
Request settings
temperature: 0 reasoning: not recorded
Finish reason
stop
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "max_tokens": 256,
  "messages": [
    {
      "content": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers.",
      "role": "user"
    }
  ],
  "model": "minimax-m31-flash-272b-nvfp4-vllm",
  "temperature": 0
}

Ordinary response text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

Numbers 1–20 · Basic generation check · DSpark7

2 GPUs · limit 131,072 tokens · DSpark7 · 2026-10-26

Recorded token counts
Input 210 / output 60 tokens
Request settings
temperature: 0 reasoning: not recorded
Finish reason
stop
Output limit
256 tokens

I checked whether the model returned a number sequence. The output settings differ from the speed tests.

Input (request JSON)

{
  "max_tokens": 256,
  "messages": [
    {
      "content": "Write the numbers from 1 to 20, separated by spaces. Output only those numbers.",
      "role": "user"
    }
  ],
  "model": "minimax-m31-flash-272b-nvfp4-vllm",
  "temperature": 0
}

Ordinary response text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

View this input and response as JSON

Test data and references

The ZIP includes 135 request records, including warm-ups.

What I found

I tested Qwen 3.8 Flash on 2 GPUs with a 1M context limit. It processed 1,047,001 input tokens. In 1 run, input processing reached 10,291 tok/s and generation reached 151.6 tok/s. The first token took 101.918 seconds; the full request took 102.799 seconds.

With 1 GPU and a 256K limit, generation reached 242.5 tok/s for 4,096 input tokens and 213.0 tok/s for 260,000. These are medians of 3 runs for each input length.

Processing a long input does not establish answer quality. I did not test retrieval from long text or speed with concurrent users. Answer quality needs to be checked with data suited to the intended task.