Issues / #3258
#3258 Strata Benchmark Report — Qwen3.8 Flash Next (Unsloth UD-Q4_K_XL) on 0.1.45, with --vision=cpu, 260+ kombinations
closed · @DrLove73 · 1 コメント · GitHub で見る
本文
# Strata Benchmark Report — Qwen3.8 Flash Next (Unsloth UD-Q4_K_XL) on 0.1.45, with --vision=cpu, 260+ kombinations **Model family:** Qwen3.8-Flash-Next **Quantization:** Unsloth Dynamic UD-Q4_K_XL (4-bit, K-quant experts) **Engine:** Strata 0.1.45 (llama.cpp 3cf0325) **Hardware:** RTX PRO 4000 Blackwell (24 GB VRAM), Intel Xeon Gold 6138, 220 GB RAM **Dates:** 2026-10-17 (Legacy), 2026-10-19 (Strata 0.1.45 `vision=cpu` re-run) **Contexts:** 128K, 256K, 384K, 512K **Total runs:** 200+ ## Summary Peak decode is **42.70 tok/s at 256K**. Unlike the Swift IQ3_S model, offloading the vision encoder to the CPU (`vision=cpu`) **did not improve performance** for UD-Q4_K_XL and actually slightly degraded it at 256K (39.30 vs 42.70 tok/s). This is likely because the 111 GB model footprint leaves the expert cache severely VRAM-starved regardless of the ~1.5 GB saved from the vision encoder. However, performance remains remarkably stable at ~35-40 tok/s across all contexts up to 512K. ## Sweep configuration ``` CONTEXTS = 131072 262144 393216 524288 PARALLEL_VALUES = 1 2 4 VISION_VALUES = cpu / off / on KV_VALUES = int8 q4_0 k8v4 PREFILL_VALUES = 32768 65536 auto KV_RESIDENT = 32768 65536 SPEC = 4 ADAPT_DECAY = 0.97 ADAPT_SWAPS = 160 ``` ## Results — Best config per context | Context | Config (kv, prefill, kvr, vision) | TTFT | Decode | run_id | |---|---|---|---|---| | 128K | q4_0, 32768, 32768, cpu | 56.9 s | **40.20 tok/s** | 1-1-c-q-32-32-4-97-160 | | 256K | q4_0, 32768, 32768, off | 124.1 s | **42.70 tok/s** | 2-1-n-q-32-32-4-97-160 | | 384K | k8v4, auto, 32768, off | 303.2 s | **38.92 tok/s** | 3-1-n-k-a-32-4-97-160 | | 512K | int8, auto, 32768, off | 417.3 s | **37.50 tok/s** | 4-1-n-i-a-32-4-97-160 | ## Vision Mode Impact (The anomaly) While `vision=cpu` helped Swift, it slightly hurts Q4_K_XL due to the sheer size of the model's experts. | Context | Best Config (kv, prefill) | vision=off | vision=cpu | Impact | |---|---|---|---|---| | 128K | q4_0, 32768 | 38.80 | **40.20** | +3.6% | | 256K | int8, 32768 | **42.70** *(q4_0)* | 39.30 | -8.0% | | 384K | q4_0, 65536 | **38.65** | 36.39 | -5.8% | | 512K | q4_0, 32768 | **37.23** | 36.66 | -1.5% | *Note: The VRAM savings from the CPU encoder are not enough to unlock a new tier of expert caching for a 111 GB model on a 24 GB GPU.* ## Key findings 1. **~42 tok/s peak** — Q4_K_XL is roughly half the decode speed of Swift IQ3_S at equivalent context. Expected: more bits per expert, more RAM pressure. 2. **256K is the sweet spot**, but performance is essentially flat (37–43 tok/s) from 128K to 512K. 3. **KV type shifts by context**: - 128K–256K: `q4_0` (best balance of memory and speed). - 384K+: `k8v4` or `int8` (better streaming when VRAM is tight). 4. **prefill=32768** wins at 128K–256K; `auto` wins at 384K–512K. 5. **Parallelism hurts badly** — `batch=2` drops speed by ~20-30%, and `batch=4` by up to 45% (e.g., 42.70 down to 24.19 at 256K). 6. **Quality Check needed**: Unlike Swift, we do not have NIAH quality results for Unsloth. This should be added to verify if Q4_K_XL's higher precision justifies the ~50% speed penalty. ## Recommended production configs | Use case | Config | |---|---| | Chat (128K) | `kv=q4_0, prefill=32768, kvr=32768, vision=cpu` | | Long analysis (256K) | `kv=q4_0, prefill=32768, kvr=32768, vision=off` | | Document QA (512K) | `kv=int8, prefill=auto, kvr=32768, vision=off` | ### Representative Results & Speed Degradation Analysis (Q4_K_XL) | Scenario / Purpose | Date | Context | KV / Prefill / KVR | TTFT (s) | Decode (tok/s) | run_id | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | **128K - Best CPU Vision** | Oct 19 | 131,072 | `q4_0` / `32768` / `32768` | 56.9 | **40.20** | 1-1-c-q-32-32-4-97-160 | | 128K - Best OFF Vision | Oct 19 | 131,072 | `q4_0` / `32768` / `32768` | 57.9 | 38.80 | 1-1-n-q-32-32-4-97-160 | | 128K - Best ON Vision | Oct 17 | 131,072 | `int8` / `auto` / `32768` | 93.3 | 35.79 | 1-1-n-i-a-32-4-97-160 | | 128K - Batch 2 Penalty | Oct 17 | 131,072 | `int8` / `32768` / `32768` | 57.9 | 28.89 | 1-2-n-i-32-32-4-97-160 | | 128K - Batch 4 Penalty | Oct 17 | 131,072 | `k8v4` / `32768` / `32768` | 69.8 | 22.64 | 1-4-n-k-32-32-4-97-160 | | **256K - Absolute Peak (OFF)** | Oct 17 | 262,144 | `q4_0` / `32768` / `32768` | 124.1 | **42.70** | 2-1-n-q-32-32-4-97-160 | | 256K - Best CPU Vision | Oct 19 | 262,144 | `int8` / `32768` / `65536` | 110.5 | 39.30 | 2-1-c-i-32-64-4-97-160 | | 256K - CPU Vision (`q4_0`) | Oct 19 | 262,144 | `q4_0` / `32768` / `32768` | 124.8 | 38.92 | 2-1-c-q-32-32-4-97-160 | | 256K - Best ON Vision | Oct 17 | 262,144 | `int8` / `32768` / `32768` | 109.9 | 38.23 | 2-1-y-i-32-32-4-97-160 | | 256K - Batch 2 Penalty | Oct 17 | 262,144 | `q4_0` / `32768` / `65536` | 140.4 | 34.49 | 2-2-n-q-32-64-4-97-160 | | 256K - Batch 4 Penalty | Oct 17 | 262,144 | `q4_0` / `32768` / `32768` | 145.6 | 24.19 | 2-4-n-q-32-32-4-97-160 | | **384K - Best OFF Vision** | Oct 18 | 393,216 | `k8v4` / `auto` / `32768` | 303.2 | **38.92** | 3-1-n-k-a-32-4-97-160 | | 384K - Best CPU Vision | Oct 19 | 393,216 | `q4_0` / `65536` / `65536` | 193.2 | 36.39 | 3-1-c-q-64-64-4-97-160 | | 384K - CPU Vision (`q4_0`) | Oct 19 | 393,216 | `q4_0` / `32768` / `65536` | 182.4 | 36.07 | 3-1-c-q-32-64-4-97-160 | | 384K - Best ON Vision | Oct 18 | 393,216 | `k8v4` / `32768` / `32768` | 213.1 | 34.68 | 3-1-y-k-32-32-4-97-160 | | **512K - Best OFF Vision** | Oct 18 | 524,288 | `int8` / `auto` / `32768` | 417.3 | **37.50** | 4-1-n-i-a-32-4-97-160 | | 512K - Best CPU Vision | Oct 19 | 524,288 | `q4_0` / `65536` / `32768` | 262.4 | 36.66 | 4-1-c-q-64-32-4-97-160 | | 512K - CPU Vision (`q4_0`) | Oct 19 | 524,288 | `q4_0` / `32768` / `32768` | 283.4 | 36.05 | 4-1-c-q-32-32-4-97-160 | | 512K - Best ON Vision | Oct 18 | 524,288 | `q4_0` / `auto` / `32768` | 424.8 | 35.89 | 4-1-y-q-a-32-4-97-160 | | 512K - Batch 2 Penalty | Oct 18 | 524,288 | `int8` / `auto` / `65536` | 519.6 | 24.62 | 4-1-n-q-a-64-4-97-160 | #### Key Takeaways from Representative Data (Q4_K_XL): * **Vision CPU vs OFF Anomaly:** Unlike Swift IQ3_S, `vision=cpu` does *not* yield a massive speedup for this model. The 111 GB footprint means experts are starved for VRAM regardless. At 256K, `vision=off` actually wins (42.70 vs 38.92 tok/s). * **Severe Batch Penalties:** Adding parallel slots destroys throughput. At 256K, `batch=4` slashes decode speed by almost half (42.70 down to 24.19 tok/s). * **KV Cache Scaling:** `q4_0` is optimal for 128K-256K. At 384K+, `k8v4` and `int8` take over, likely due to more efficient streaming when VRAM is pushed to the absolute limit.
関連リンク
インストール・モデル・リリースへの站内リンク。