Local LLM Comparison, October 2026 | Qwen, DeepSeek, GLM, Nemotron, and MiniMax
Speed measurements for local LLM deployment. I ran five models on RTX PRO 6000, including Qwen at 256K on one GPU and 1M on two GPUs.
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.
| Field | Value |
|---|---|
| CPU | AMD EPYC 9175F 16-Core Processor |
| GPU | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition × 2 |
| GPU memory | 96 GB × 2 |
| GPU power limit | 300 W × 2 |
| System memory | 768 GB |
Terms
Definitions
| Term | Meaning |
|---|---|
| Token | A unit the model uses to split and process text. |
| Decode | Text generation speed. This includes reasoning tokens. |
| Prefill | The speed of processing new input. Reused calculations are not included. |
| TTFT | The time until the server produces the first token. |
| MTP | A method that predicts several upcoming tokens in advance. |
| Cache | Stored 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.
| Context limit tokens | Input tokens | Reused tokens | Output tokens | Runs | Decode tok/s | Prefill tok/s | TTFT seconds |
|---|---|---|---|---|---|---|---|
| 262,144 | 63 | 63 | 512 | 1 | 277.5 | Not measured | 0.032 |
| 1,048,576 | 63 | 63 | 512 | 1 | 264.4 | Not measured | 0.032 |
| 1,048,576 | 1,047,001 | 0 | 128 | 1 | 151.6 | 10,291 | 101.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
| Input tokens | Reused tokens | Output tokens | Runs | Decode tok/s | Decode range tok/s | Prefill tok/s | TTFT seconds |
|---|---|---|---|---|---|---|---|
| 92 | 92 | 512 | 3 | 237.7 | 227.9–242.3 | Not measuredAll input reused | 0.036 |
| 4,096 | 0 | 512 | 3 | 242.5 | 231.7–247.0 | 12,913 | 0.323 |
| 260,000 | 0 | 512 | 3 | 213.0 | 202.4–218.2 | 12,121 | 21.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
| Model | GPUs | Context limit tokens | Input tokens | Reused tokens | Output tokens | Runs | Decode tok/s | TTFT ms |
|---|---|---|---|---|---|---|---|---|
| Qwen 3.8 Flash NVIDIA | 1 | 262,144 | 4,096 | 0 | 512 | 3 | 242.5 | 322.7 |
| Qwen 3.8 Flash NVIDIA | 2 | 1,048,576 | 1,047,001 | 0 | 128 | 1 | 151.6 | 101,918.4 |
| DeepSeek V4.1 Flash 1017 | 2 | 524,288 | 85 | 0 | 512 | 3 | 220.9 | 176.4 |
| GLM 5.3 Flash NVIDIA | 2 | 262,144 | 64 | 64 | 512 | 3 | 193.9 | 21.1 |
| Nemotron 3.5 Super VL | 1 | 131,072 | 70 | 0 | 512 | 3 | 170.4 | 106.6 |
| MiniMax M3.1 Flash 272B | 2 | 131,072 | 243 | 0 | 512 | 3 | 80.5 | 81.7 |
Input processing speed
| Model | GPUs | Context limit tokens | Input tokens | Reused tokens | Output tokens | Runs | Prefill tok/s |
|---|---|---|---|---|---|---|---|
| Qwen 3.8 Flash NVIDIA | 1 | 262,144 | 4,096 | 0 | 512 | 3 | 12,913 |
| Qwen 3.8 Flash NVIDIA | 2 | 1,048,576 | 1,047,001 | 0 | 128 | 1 | 10,291 |
| DeepSeek V4.1 Flash 1017 | 2 | 524,288 | 3,447–3,454 | 0 | 16 | 3 | 7,283 |
| GLM 5.3 Flash NVIDIA | 2 | 262,144 | 3,484–3,501 | 0 | 16 | 3 | 8,236 |
| Nemotron 3.5 Super VL | 1 | 131,072 | 4,005–4,019 | 0 | 16 | 3 | 13,306 |
| MiniMax M3.1 Flash 272B | 2 | 131,072 | 3,497–3,525 | 0 | 16 | 3 | 5,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.
| Field | Value |
|---|---|
| Quantization | NVFP4 mixed |
| Limit on 1 GPU | 262,144 tokens |
| Limit on 2 GPUs with 1M | 1,048,576 tokens |
| Reasoning setting | low |
| vLLM | 0.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.
| Field | Value |
|---|---|
| Quantization | EXL3 3.0bpw |
| Context limit | 524,288 tokens |
| Reasoning setting | low |
| vLLM | 0.31.1rc1.dev376+g5555a2d8f |
diffbot/DeepSeek-V4.1-Flash-EXL3-3bpw-2x-RTX-PRO-6000
Revision: bdc01239200699e48cab9dc3a650d1ead8e562f1
| Method and input length | Decode tok/s | Prefill tok/s | TTFT ms |
|---|---|---|---|
| DSpark5Decode / TTFT: 85 input / 0 reusedPrefill: 3,447–3,454 input / 0 reused | 220.9213.9–228.5 | 7,283 | 176.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.
| Field | Value |
|---|---|
| Quantization | NVFP4 mixed |
| Context limit | 262,144 tokens |
| Reasoning setting | low |
| vLLM | 0.1.dev21830+g8244d1c44.cu134 |
nvidia/GLM-5.3-Flash-FP4-Local
Revision: 76348ddb2be2e35e39ecfc00e75dc07703f4f3d5
| Method and input length | Decode tok/s | Prefill tok/s | TTFT ms |
|---|---|---|---|
| MTP3Decode / TTFT: 64 input / 64 reusedPrefill: 3,484–3,501 input / 0 reused | 193.9193.2–194.6 | 8,236 | 21.1 |
| Inco DFlash2 (7 proposals)Decode / TTFT: 64 input / 64 reusedPrefill: 3,485–3,497 input / 0 reused | 176.2175.4–177.7 | 8,275 | 9.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.
| Field | Value |
|---|---|
| Quantization | NVFP4 mixed |
| Context limit | 131,072 tokens |
| Reasoning setting | off |
| vLLM | 0.32.0 |
nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP4
Revision: 59b8721646c38111a242da18218859fb2b454322
| Method and input length | Decode tok/s | Prefill tok/s | TTFT ms |
|---|---|---|---|
| autoregressiveDecode / TTFT: 70 input / 0 reusedPrefill: 4,011–4,018 input / 0 reused | 69.669.5–69.6 | 13,377 | 70.6 |
| MTP5Decode / TTFT: 70 input / 0 reusedPrefill: 4,005–4,019 input / 0 reused | 170.4170.0–170.4 | 13,306 | 106.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.
| Field | Value |
|---|---|
| Quantization | NVFP4/MXFP8 |
| Context limit | 131,072 tokens |
| Reasoning setting | native adaptive |
| vLLM | 0.1.dev23341+g8744dd2fb.d20261022.cu134 |
primitive-ai/MiniMax-M3.1-Flash-272B-NVFP4
Revision: 93dda6017e2edf22f51e6bd0814045406d114780
| Method and input length | Decode tok/s | Prefill tok/s | TTFT ms |
|---|---|---|---|
| autoregressiveDecode / TTFT: 243 input / 128 reusedPrefill: 3,511–3,534 input / 128 reused | 39.139.0–39.1 | 5,504 | 71.7 |
| Inco DFlash2 (7 proposals)Decode / TTFT: 243 input / 0 reusedPrefill: 3,501–3,511 input / 0 reused | 81.776.1–92.7 | 5,621 | 81.4 |
| DSpark7Decode / TTFT: 243 input / 0 reusedPrefill: 3,497–3,525 input / 0 reused | 80.580.2–82.1 | 5,580 | 81.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.
| Proposed tokens | Decode tok/s | Prefill tok/s | Acceptance rate | Accepted per step |
|---|---|---|---|---|
| 3 | 73.4 | 5,656 | 47.7% | 1.43 |
| 5 | 76.3 | 5,590 | 36.0% | 1.80 |
| 7 | 85.1 | 5,578 | 30.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
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 20Code generation · Speed test with 512 output tokens · MTP3
1 GPU · limit 262,144 tokens · MTP3 · 2026-10-26
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.pyDeepSeek V4.1 Flash 1017
Numbers 1–20 · Basic generation check · DSpark5
2 GPUs · limit 524,288 tokens · DSpark5 · 2026-10-26
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 20GLM 5.3 Flash NVIDIA
Code generation · Speed test with 512 output tokens · MTP3
2 GPUs · limit 262,144 tokens · MTP3 · 2026-10-26
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.
Numbers 1–20 · Basic generation check · MTP3
2 GPUs · limit 262,144 tokens · MTP3 · 2026-10-26
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 20Nemotron 3.5 Super VL
Code generation · Speed test with 512 output tokens · MTP5
1 GPU · limit 131,072 tokens · MTP5 · 2026-10-26
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]):
"""
Numbers 1–20 · Basic generation check · MTP5
1 GPU · limit 131,072 tokens · MTP5 · 2026-10-26
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 20MiniMax M3.1 Flash 272B
Numbers 1–20 · Basic generation check · autoregressive
2 GPUs · limit 131,072 tokens · autoregressive · 2026-10-26
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 20Numbers 1–20 · Basic generation check · DSpark7
2 GPUs · limit 131,072 tokens · DSpark7 · 2026-10-26
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 20Test data and references
- All test data (ZIP)
- Results by model and setting (CSV)
- Qwen · 1 GPU · 256K (CSV)
- Qwen · 2 GPUs · 256K and 1M (CSV)
- MiniMax · proposal lengths 3, 5 and 7 (CSV)
- 9 input/output pairs (JSON)
The ZIP includes 135 request records, including warm-ups.
- diffbot model and recipe
- diffbot speed methodology
- NVIDIA Qwen target
- NVIDIA GLM target
- Inco GLM DFlash2
- MiniMax pruned NVFP4 target
- Inco MiniMax DFlash2
- RadixArk MiniMax DFlash2, inspected but not GPU-tested
- NVIDIA Nemotron target and native MTP
- NVIDIA LiLiCorr alternative, not selected
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.