Pull requests / #1986
#1986 Add community benchmark: Quadro RTX 8000 48 GB, UD-Q4_K_XL, 131K (v0.…
open · @aspineux · 0 comentarios · En GitHub
BenchmarksSetup & installMulti-GPUNVIDIA / CUDAModels & quantsDocumentation
Descripción
# Community benchmark: Quadro RTX 8000 48 GB, Xeon E5-2687W 0, Unsloth UD-Q4_K_XL, 131K context (v0.1.42) Results only — one new folder under `bench/results/`, no engine, server or default changes. **Measured on 2026-10-11 by [aspineux](https://github.com/aspineux).** ## Hardware - **GPU** Quadro RTX 8000, 49,152 MiB (Turing, sm_75) — **power-limited to 200 W against a 260 W default**, observed peak 205-224 W, 87-98% utilisation - **PCIe** gen3 x16 at max; engine's startup probe reports 11.5 GB/s host-to-device - **CPU** Intel Xeon E5-2687W 0 @ 3.10 GHz, 8c/16t — **no AVX2 and no AVX-512** (`-march=native` resolves to `sandybridge`; engine `BUILD.json` says `isa_floor: "avx"`), so the CPU expert pool runs the AVX1 path - **RAM** 125.72 GiB, no hugepages · **OS** Ubuntu 24.04.4, kernel 6.8.0-146-generic - **Driver** 580.178.04, engine built against CUDA 12.2 - **Strata** tag `v0.1.42`, commit `61b3fb5d`, source build (`source: local`, `archs: [75]`) ## Model and configuration tested Unsloth **Qwen3.8-Flash-Next UD-Q4_K_XL** (4 GGUF shards, ~111 GB), native-experts pack, `--expert-profile data/expert-profile.bin`, MTP draft head, `--max-context 131072`, `--kv int8`, `--kv-resident 32768`, `--resident-budget-gib 71`, `--expert-cache auto`, `--prefill auto`, `--spec 4`, `--spec-min-p 0.70`, `--pcie-frac 0.32`, `--vram-reserve-mib 700`, `--vision`. One slot (no `--batch`). Server on `127.0.0.1:8080`, no API key. Engine at startup: `expert cache 13099 slots, 38.26 GiB of VRAM`, `R4 hit path ON`, `resident 33.47 GiB, pinned 33.47 GiB in 37 s`, `335 MiB of VRAM free with everything loaded`. ## What was tested # Community benchmark: Quadro RTX 8000 48 GB, Xeon E5-2687W 0, Unsloth UD-Q4_K_XL, 131K context (v0.1.42) Results only — one new folder under `bench/results/`, no engine, server or default changes. **Measured on 2026-10-11 by [aspineux](https://github.com/aspineux).** ## Hardware - **GPU** Quadro RTX 8000, 49,152 MiB (Turing, sm_75) — **power-limited to 200 W against a 260 W default**, observed peak 205-224 W, 87-98% utilisation - **PCIe** gen3 x16 at max; engine's startup probe reports 11.5 GB/s host-to-device - **CPU** Intel Xeon E5-2687W 0 @ 3.10 GHz, 8c/16t — **no AVX2 and no AVX-512** (`-march=native` resolves to `sandybridge`; engine `BUILD.json` says `isa_floor: "avx"`), so the CPU expert pool runs the AVX1 path - **RAM** 125.72 GiB, no hugepages · **OS** Ubuntu 24.04.4, kernel 6.8.0-146-generic - **Driver** 580.178.04, engine built against CUDA 12.2 - **Strata** tag `v0.1.42`, commit `61b3fb5d`, source build (`source: local`, `archs: [75]`) ## Model and configuration tested Unsloth **Qwen3.8-Flash-Next UD-Q4_K_XL** (4 GGUF shards, ~111 GB), native-experts pack, `--expert-profile data/expert-profile.bin`, MTP draft head, `--max-context 131072`, `--kv int8`, `--kv-resident 32768`, `--resident-budget-gib 71`, `--expert-cache auto`, `--prefill auto`, `--spec 4`, `--spec-min-p 0.70`, `--pcie-frac 0.32`, `--vram-reserve-mib 700`, `--vision`. One slot (no `--batch`). Server on `127.0.0.1:8080`, no API key. Engine at startup: `expert cache 13099 slots, 38.26 GiB of VRAM`, `R4 hit path ON`, `resident 33.47 GiB, pinned 33.47 GiB in 37 s`, `335 MiB of VRAM free with everything loaded`. ## What was tested All prompt and decode throughput comes from the engine's own `timings`, never from dividing generated tokens by request time. Every prompt is byte-fresh with a nonce; **`reused 0` on all twelve sweep runs**. | Test | Result | | --- | --- | | Fresh prompt / decode, 3 runs each | 4K: **728.4** / **61.5** tok/s · 32K: **1,012.8** / **53.1** · 128K: **896.5** / **53.2** | | Needle recall (`needle_bench`) | **6 of 6 found** — 32K (32,804 tok) and 128K (125,536 tok), depths 10/50/90 | | Concurrency (`serve_load`, 1/2/4 clients) | 45.0 / 52.7 / 50.8 total tok/s, TTFT p50 0.72 / 3.08 / 7.99 s, 0 errors — flat throughput, one slot queues | | **Soak, 74.9 min, 708 requests** | **708 ok, 0 failures, 0 timeouts.** Decode 73.95 → 75.0 tok/s (first → last decile), quarters 73.9 / 74.3 / 74.4 / 74.2. RAM +0.06 GiB. VRAM free **335 MiB at all 142 samples**. Peak 69 °C | | **Cold engine restart** | `POST /unload` 6.79 s (GPU back to 1 MiB used), `POST /load` **65.7 s**. First touch: 32K 1,019.0 prompt / 59.6 decode tok/s, 128K 899.1 / 59.5 | This answers the open row in `docs/TEST_REQUESTS.md` for a long soak on a resident setup. ## Limitations, stated plainly 1. **The measurement agent shared the engine.** This box serves the agent that ran the scripts (`PI_PROVIDER=strata`, `PI_MODEL=qwen3.8-flash-next-unsloth-ud-q4_k_xl`), so client and subject are the same server. Controls: every measurement in a blocking foreground call, one at a time, plus a per-run check that the engine was idle before the request and that the newest `/metrics` record matches it. **0 of 9 warm sweep runs flagged contaminated.** The soak ran with no other traffic. Please weigh this accordingly. 2. **Warm expert cache for the main sweep.** All nine sweep runs share one long-lived session. Run 1 of each length is clearly slower (32K: 37.7 tok/s at 92.6% hit) than runs 2-3 (55.6 median at ~98% hit); both are reported separately in the README. 3. **The cold arm is a cold *engine*, not a cold boot.** `POST /unload` + `POST /load` restarts the engine process (PID 27516 → 106524, GPU 48,180 → 1 MiB) but the shards stay in the OS page cache, so file reads are warm. 37 s of the 65.7 s is re-creating the page-locked, mapped complement. A reboot number is **not** measured. 4. **200 W power cap** — compare against uncapped Turing cards with that in mind. 5. **Not tested:** cold boot, `--batch` slots and true parallel decode, multi-GPU / `--layer-split`, `--calibrate`, vision requests (encoder configured, no image sent), low-RAM mode, contexts beyond 131,072, quality benchmarks, and any A/B against another build. ## Two observations, as questions rather than findings - **`335 MiB of VRAM free with everything loaded`** with `--expert-cache auto` and `--vram-reserve-mib 700`. `docs/DETAILS.md` names this line as the tell for a cache that leaves no free VRAM and cost 7x decode elsewhere. Here decode is healthy (53-61 tok/s on the sweep, 74.2 tok/s steady across the soak) and the free figure **never moved in 75 minutes**, so I am **not** reporting a degradation — but it sits inside the margin the docs warn about. Would a `--vram-reserve-mib` sweep say the auto sizer is leaving too little on a 48 GB card? - **A freshly restarted engine beat the first run inside the long session.** First touch after the cold restart: 59.6 / 59.5 decode tok/s at 32K / 128K with 98.9% / 99.3% expert hit. First run of each length in the long session: 37.7 / 44.8 tok/s at 92.6% / 96.2% hit. Both are first-touch-for-that-prompt. **n = 1 per cell and prompt lengths differ slightly**, so this is a question: does the resident complement settle differently after ~1,400 mixed requests than after a clean profile-driven start? ## Reproducing `README.md` in the folder lists every command, the exact engine arguments, and the field names and units of each JSON file. Folder is 448 KB — no model files, no packs, no API keys, and the logs contain token counts and timings only, no prompt or answer text.
En el sitio
Enlaces a install, modelos, releases.