Issues / #2956

#2956 Community benchmark NVFP4 - RTX 5060 Ti 16GB - Ryzen 5600 - 96GB RAM + needle_bench (Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata)

open · @tugurufu-netizen · 0 comentários · No GitHub

BenchmarksSetup & installServer & APIAMD / HIPNVIDIA / CUDAModels & quantsDocumentationWindows

Descrição

# Community benchmark on NVIDIA GeForce RTX 5060 Ti

Measured on 2026-10-17 with `tools/strata_bench.py` (suite 1, 3 runs per test, medians with ranges). Speeds are the engine's own timings; first-token times are measured by the client over HTTP. Speed only: no correctness check was run.

## Hardware and software  

- Mobo B450 => PCIe 3.0
- GPU and VRAM: "second" GPU NVIDIA GeForce RTX 5060 Ti, 16 GiB VRAM
- CPU: AMD Ryzen 5 5600 6-Core Processor (6 cores, 12 threads); installed RAM: 95.9 GiB; storage: not measured
- OS: Windows 10,  GPU driver: 616.92; CUDA: 13.13
- Strata: project 0.1.45, commit 477ac13c; engine 0.1.45
- Background workloads and power limits:  Clean system, "GPU drivers", Tiny wall, MSI monitor. 

## Model and configuration

- Model and quantization: NVFP4 GPTQ (qwen-nvfp4-gptq "96GB" [Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata](https://huggingface.co/Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata))
- Context: 524288 tokens; parallel slots: 1
- Settings: the install's own configuration, unchanged; thinking off for the suite; temperature 0


(Google FL 8 free, suggestions)
- Orca tokenizer reuse 
-  reduced --expert-cache 2048 (JAN +filesystem, Understory, Exa)
- "uncensored": true ( [sergqwer/strata-nvfp4](https://github.com/sergqwer/strata-nvfp4))
-  Turn on swap ssd "for stability"

```text
strata.exe --pack pack --native qwen-nvfp4-gptq-dense.gguf --ple-gguf ple-fp8.gguf --expert-profile expert-profile-nvfp4.bin --expert-profile-save expert-profile-nvfp4.bin --expert-cache 2048 --prefill auto --adapt-async 1 --spec 4 --spec-min-p 0.5 --mtp rt --max-context 524288 --kv q4_0 --kv-resident 32768
```

Environment of the config: `STRATA_PREFILL_CPU_SHARE=0`, `STRATA_ARENA_PIN_GIB=16`, `STRATA_PIN_BY_NEED=1`

## Method

Run by `python tools/strata_bench.py --long` against the HTTP API of a Strata server (started by the benchmark from the install configuration); model loading is not timed. One warm-up chat and a 1K prompt are discarded first. Every prompt starts with a unique tag, so the conversation cache cannot help the fresh-prompt tests.

- short chat: the three questions of `tools/ab_engine.py`, up to 100 new tokens, 3 runs
- 4K / 16K prompts: generated word lists sized by a calibration request, 24 new tokens, 3 fresh prompts each
- agent session: system prompt and four tools, then 5 turns that each add about 1500 words of a project file and continue from the model's own earlier answers (the way agent clients resend a conversation), 64 new tokens per turn, 3 sessions; the cache numbers come from the answer's usage (`cached_tokens`) and timings (`prompt_n`)
- concurrency (when run): N requests sent at the same moment, total tokens over the wall time of the burst, latency over all requests

## Results GPU @2150 /83% Power uv, CPU @1.5GHz

| Configuration | Actual prompt tokens | Reused tokens | Generated tokens | Runs | Prompt tok/s median and range | Decode tok/s median and range | TTFT seconds median and range |
| --- | ---: | ---: | ---: | ---: | --- | --- | --- |
| short chat | 46 (43-51) | 0 | 100 (100-100) | 9 | not measured | 15.6 (13.9-17.1) | 2.43 (2.12-2.73) |
| 4K prompt, fresh | 4019 (4019-4019) | 0 (0-0) | 24 cap | 3 | 342.0 (340.1-342.5) | not measured | 11.84 (11.82-11.91) |
| 16K prompt, fresh | 16058 (16058-16058) | 0 (0-0) | 24 cap | 3 | 571.3 (570.2-572.1) | not measured | 28.21 (28.16-28.25) |
| 32K prompt, fresh | 32049 (32049-32049) | 0 (0-0) | 24 cap | 3 | 578.0 (577.2-578.8) | not measured | 55.59 (55.55-55.69) |
| agent session, follow-up turns | 14583 (14553-14596) at the last turn | see below | up to 64 | 3 | see below | 15.4 (10.3-18.6) | 10.62 (10.34-10.87) |

Ranges are the lowest and highest of the runs; `Runs` counts requests that returned a token.

### Agent session (conversation cache)

Cache hit over the follow-up turns: 68.7 % (68.6-68.8); earlier-turn tokens read again per session: 3 (3-74) (earlier turns that the cache did not hold; the 13719 (13717-13720) new tokens of the files are read once); first turn (nothing cached) first token: 9.06 s (8.99-9.14).

| Turn (run 1) | Prompt tokens | Reused | Read | Prompt tok/s | First token (s) | Decode tok/s |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 0 | 609 | 0 | 609 | 68.3 | 8.988 | 8.8 |
| 1 | 3741 | 621 | 3120 | 293.6 | 10.704 | 12.2 |
| 2 | 5274 | 3804 | 1470 | 143.2 | 10.344 | 14.1 |
| 3 | 8707 | 5338 | 3369 | 312.5 | 10.866 | 16.1 |
| 4 | 11627 | 8765 | 2862 | 271.0 | 10.671 | 15.4 |
| 5 | 14553 | 11654 | 2899 | 276.2 | 10.598 | 12.1 |

Per-request data: `results.json`. Engine log lines from the start: `engine-log-excerpt.txt` (when this run started the server).

--------------------------------------

## Results GPU Default, CPU 3.4GHz

| Configuration | Actual prompt tokens | Reused tokens | Generated tokens | Runs | Prompt tok/s median and range | Decode tok/s median and range | TTFT seconds median and range |
| --- | ---: | ---: | ---: | ---: | --- | --- | --- |
| short chat | 46 (43-51) | 0 | 100 (100-100) | 9 | not measured | 26.1 (24.3-30.9) | 1.27 (1.10-1.39) |
| 4K prompt, fresh | 4019 (4019-4019) | 0 (0-0) | 24 cap | 3 | 363.2 (361.1-363.4) | not measured | 11.13 (11.11-11.19) |
| 16K prompt, fresh | 16058 (16058-16058) | 0 (0-0) | 24 cap | 3 | 627.1 (625.5-628.8) | not measured | 25.66 (25.60-25.73) |
| 32K prompt, fresh | 32049 (32049-32049) | 0 (0-0) | 24 cap | 3 | 635.1 (634.6-635.5) | not measured | 50.56 (50.51-50.60) |
| agent session, follow-up turns | 14586 (14577-14606) at the last turn | see below | up to 64 | 3 | see below | 26.4 (21.8-33.2) | 10.15 (9.94-10.24) |

Ranges are the lowest and highest of the runs; `Runs` counts requests that returned a token.

### Agent session (conversation cache)

Cache hit over the follow-up turns: 68.8 % (68.8-68.8); earlier-turn tokens read again per session: 3 (3-4) (earlier turns that the cache did not hold; the 13719 (13718-13719) new tokens of the files are read once); first turn (nothing cached) first token: 8.47 s (8.42-8.55).

| Turn (run 1) | Prompt tokens | Reused | Read | Prompt tok/s | First token (s) | Decode tok/s |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 0 | 609 | 0 | 609 | 72.8 | 8.418 | 21.2 |
| 1 | 3761 | 638 | 3123 | 309.6 | 10.147 | 21.8 |
| 2 | 5294 | 3824 | 1470 | 148.3 | 9.959 | 26.1 |
| 3 | 8727 | 5358 | 3369 | 330.7 | 10.244 | 30.9 |
| 4 | 11634 | 8772 | 2862 | 284.5 | 10.115 | 28.9 |
| 5 | 14577 | 11678 | 2899 | 287.1 | 10.152 | 26.2 |



## python tools/needle_bench.py (only for test correctness, "eco mode")
 | Context | Depth | Status | Prompt Tokens | Time | Gen. Speed | Expert Cache Hit |
| :--- | :---: | :---: | ---: | ---: | ---: | ---: |
| 32k | 10% | FOUND | 32,792 | 53 s | 17.4 tok/s | 25.9% |
| 32k | 50% | FOUND | 32,792 | 52 s | 20.8 tok/s | 27.2% |
| 32k | 90% | FOUND | 32,793 | 52 s | 15.9 tok/s | 33.9% |
| 128k | 10% | FOUND | 127,535 | 199 s | 12.7 tok/s | 41.8% |
| 128k | 50% | FOUND | 127,533 | 200 s | 11.1 tok/s | 46.9% |
| 128k | 90% | FOUND | 127,533 | 176 s | 14.2 tok/s | 57.1% |
| 256k | 10% | FOUND | 261,213 | 392 s | 13.3 tok/s | 58.1% |
| 256k | 50% | FOUND | 261,213 | 392 s | 16.0 tok/s | 64.7% |
| 256k | 90% | FOUND | 261,214 | 392 s | 20.0 tok/s | 66.1% |
| 520k | 10% | FOUND | 517,676 | 863 s | 19.2 tok/s | 68.7% |
| 520k | 50% | FOUND | 517,676 | 863 s | 18.1 tok/s | 64.9% |
| 520k | 90% | FOUND | 517,677 | 862 s | 18.4 tok/s | 68.1% |

## Correctness and limitations

Not measured: this is a speed suite. The conversation uses the model's own replies, so token counts differ a little between runs. Machine details come from the server, `nvidia-smi`/`rocm-smi` and the OS; background load and power limits are not recorded. Total time of the suite: 656 s.

## MSI Monitor  Eco + Normal

<img width="1641" height="650" alt="Image" src="https://github.com/user-attachments/assets/6588a854-6cce-456a-ad2d-c816911021c9" />

------------------------
### Technical Summary: NVFP4 Integration & Constraints on Consumer Rigs (Strata v0.1.45)

- **Expert Cache Reduction (`--expert-cache 2048`):** 
  Active MCP servers (`filesystem`, `Understory`, `Exa`) and system prompts inject heavy token payloads (~4k+ tokens per turn) containing JSON schemas. This spikes memory pressure during prefill and MTP verification (`verify: instantiate: out of memory`). Lowering the cache from +- 3000 to 2048 reclaims ~1.6 GB VRAM headroom.
- **Orca Tokenizer Reuse:** 
  The `Qwen3.8-Flash-Next` architecture shares an identical BPE vocabulary structure (152k tokens). Reusing asset files (`vocab.json`, `tokenizer.json`, `merges.txt`) from the Orca IQ3_XXS pack satisfies `server.py` validation without redundant file duplication.
- **Windows WDDM Commit Accounting vs Physical RAM:** 
  The model (63.3 GiB) + 524k KV cache (3.38 GiB) fit entirely within 96 GB physical DDR4 RAM, leaving ~16 GB free. However, the CUDA runtime and WDDM demand a high virtual memory commitment threshold (*Commit Charge*). A static pagefile acts purely as a virtual "accounting receipt" satisfying `Commit Charge`, while pages remain hardware-locked in physical RAM via `SeLockMemoryPrivilege` and `VirtualLock` (ensuring zero SSD I/O thrashing).


[README ECO GPU + CPU  Undervolt.md](https://github.com/user-attachments/files/33606288/README.ECO.GPU.%2B.CPU.Undervolt.md)
[results  ECO GPU + CPU  Undervolt.json](https://github.com/user-attachments/files/33606287/results.ECO.GPU.%2B.CPU.Undervolt.json)

[README default.md](https://github.com/user-attachments/files/33606292/README.default.md)
[results default.json](https://github.com/user-attachments/files/33606291/results.default.json)

[needle b.txt](https://github.com/user-attachments/files/33608083/needle.b.txt)

No site

Links install, modelos, releases.