Issues / #3023

#3023 Official v0.1.45 runs NVFP4 but is ~17% slower than the strata-nvfp4 branch (type-40 experts not covered by EXPDEC/B6; no w4a4x2 prefill)

open · @wangzc1997 · 0 comentários · No GitHub

BenchmarksSetup & installServer & APINVIDIA / CUDAModels & quantsDocumentationWindows

Descrição

## Summary

Official Strata v0.1.45 runs our existing NVFP4 GPTQ model out of the box (no re-download/conversion, all three APIs + tool calling pass), but decode throughput sits **~17–21% below the community `sergqwer/strata-nvfp4` branch**, and the 5 CUDA toggles only recover ~5.8% on the 32K-prefill case. Two kernel-coverage gaps explain most of it:

1. **EXPDEC / B6 expert kernels do not cover type-40 (NVFP4) experts.** EXPDEC gate/up currently covers IQ types (16/17/18/21/22…), and our model's NVFP4 experts are type 40 — the engine log literally prints `gate/up type 40 not covered`, `down type 40 not covered`, falling back to the stock NVFP4 expert kernels. See [iq_kernels.cu#L3288](https://github.com/Niko1221/Strata/blob/v0.1.45/src/kernels/cuda/iq_kernels.cu#L3288) and [native_mmvq.cu#L1315](https://github.com/Niko1221/Strata/blob/v0.1.45/src/kernels/cuda/native_mmvq.cu#L1315).
2. **No `w4a4x2` Blackwell prefill path.** The branch defaults to a two-FP4-product `w4a4x2` MoE prefill on Blackwell ([moe_mmq.cu#L257](https://github.com/sergqwer/strata-nvfp4/blob/v0.1.44.1-nvfp4.2/src/prefill/moe_mmq.cu#L257)); official offers only w4a8/w4a4/fp16 with w4a8 default ([setup.py#L201](https://github.com/Niko1221/Strata/blob/v0.1.45/setup.py#L201) confirms the model itself is officially supported).

So newer version ≠ strict superset in performance for NVFP4 models.

## Environment

- Windows 11, RTX 5090 32GB (single GPU), Core Ultra 9 285K, 192 GiB DDR5-5600
- Model: `Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata` (dense GGUF + FP8 PLE + BF16 embedding + NVFP4 experts.bin, type 40), same files reused across all three runs
- Runs compared: **A)** community branch `v0.1.44.1-nvfp4.2` (current daily driver), **B)** official v0.1.45 with settings migrated from A, **C)** official + the 5 CUDA toggles (`STRATA_ATTN_DAILY`, `STRATA_QSA_ROWS`, `STRATA_SIDE_MIXER`, `STRATA_EXPDEC`, `STRATA_B6_MMVQ_ROWS`)
- Method: temp 0, fixed seed, thinking off, prompt cache cleared per request, 512 output tokens, n=3 per case. First pass with automatic PCIe split showed official still warming up (fraction drifted 0.25→0.5), so the re-run below fixes `strata_tune.pcie_frac=0.5` after warm-up on both Chinese and English.

## Results (medians of 3, warmed, PCIe fraction fixed at 0.5)

| Case | Branch (A) | Official (B) | Official+CUDA (C) | C vs B | C vs A |
|---|---|---|---|---|---|
| Short zh decode | 162.1 | 132.0 | 133.9 | +1.4% | −17.4% |
| Short en decode | 157.6 | 124.3 | 124.1 | −0.2% | −21.3% |
| zh decode after ~32K prefill | 161.2 | 126.2 | 133.5 | +5.8% | −17.2% |
| 32K prefill speed (tok/s) | 7,793.5 | 6,339.0 | 6,339.3 | ~0% | −18.7% |

## Feature requests

- Extend EXPDEC / B6 coverage to type-40 NVFP4 expert tensors (gate/up/down), so `STRATA_EXPDEC` actually applies to officially-supported NVFP4 models instead of silently logging `type 40 not covered`.
- Port the `w4a4x2` Blackwell MoE prefill (or an equivalent two-FP4-product path) into official, since 32K prefill is ~19% behind the branch today.
- Optional: a short note in [docs/NVFP4.md](https://github.com/Niko1221/Strata/blob/v0.1.45/docs/NVFP4.md) listing which toggles do/don't affect type-40 experts, so users don't expect IQ3_S gains on NVFP4.

## Caveats

This is a whole-stack A/B/C comparison, not a per-kernel ablation: the community engine is built with CUDA 13.3 vs official 13.0, prefill paths, default fusions and auto expert-cache slot counts differ. Benchmarks run with thinking disabled; daily medium-thinking behavior may differ. Compatibility (not quality) was verified across OpenAI Chat / Anthropic Messages / Responses + tool calls on all three runs; image input and full task quality were not A/B'd.

No site

Links install, modelos, releases.