Cumulative release since tqp-v0.2.0. All changes verified on RTX 5090 (CUDA sm_120), M5 Max (Metal), and community hardware as noted.
New features
- DFlash speculative decoding (#201) — upstream ggml-org#22105 + ggml-org#25110 cherry-picked, with a minimal
n_embd_inp_enchparams shim (no unrelated eagle3 changes), the K/V-rotation unallocated-buffer guard its KV-injection pass requires, andspec-draft-p-minsupport - Server slot save/restore across restarts (#206, @apollo-mg) — context checkpoints persist to a versioned
.ckptsidecar next to the slot state file, so a restored slot resumes with a delta prefill instead of a full re-prefill (measured ~720x on a 100K-token session). SWA / hybrid-recurrent models benefit; graceful fallback when no sidecar exists. Usage documented in the README
Fixes
- 16 upstream P0/high-P1 cherry-picks (#202), including: Gemma-4 E4B MTP FlashAttention hard-crash, FA KQ-mask int64 stride overflow at long context, CUDA binbcast silent corruption past 2^31 elements, unauthenticated remote DoS via unbounded
n_discardin server context shift, FA V-type validation (mixed KV combos now CPU-fallback instead of crashing), tool-call whitespace corruption on the OpenAI-compat path, Vulkan FA fp16 softmax overflow, SVE dot-product fix, two OOB reads (UGM tokenizer, ngram-map), tensor-parallel +-ncmoeMoE abort, Vulkan CEIL_DIV overflow - Vulkan turbo4 block layout + centroid table resync (#204, @Defilan) — Vulkan shaders were striding turbo4 KV 2 bytes long per block and dequantizing against stale centroids after the turbo4 rework; fixed a runaway-then-SIGSEGV on gfx1151 at 131K ctx (test-backend-ops: 0/528 before, 528/528 after)
- Draft model load crash (#210, fixes #209) — loading a separate
-mddraft after the memory fitter packed VRAM produced NaN device-split points and avector::_M_range_checkabort; uniform-split fallback added. Separate-draft speculative decoding (draft-simple, DFlash) now works end to end - sm_60 / P100 carved out of FAST_FP16 paths (#212, @apollo-mg) — fp32 arithmetic like sm_61; median KLD 0.002298 -> 0.000001 on P100 with throughput inside noise
- turbo2 fused-MMA decode gated to head_dim 128 (from the #197 follow-up) — keeps the large hd128 depth win (up to +69% at 131K) while eliminating a 1-2.5% decode regression on bandwidth-limited GPUs at hd256 (verified by @everson on RTX 5060 Ti)
Docs
- README: server slot save/restore + checkpoint sidecar usage, including which model families it applies to
Prebuilts
| Platform | Asset |
|---|---|
| Linux x64 CPU | turboquant-plus-tqp-v0.3.0-linux-x64-cpu.tar.gz |
| Linux x64 Vulkan | turboquant-plus-tqp-v0.3.0-linux-x64-vulkan.tar.gz |
| macOS Apple Silicon (Metal) | turboquant-plus-tqp-v0.3.0-macos-arm64-metal.tar.gz |
| Windows x64 CUDA 12.4 | turboquant-plus-tqp-v0.3.0-windows-x64-cuda12.4.zip |
Thanks to @apollo-mg, @Defilan, @everson, @JakeATX, and @ciru-ai for contributions and testing this cycle.