Skip to content

Speedy 0.3.1

Choose a tag to compare

@DevDock-AI DevDock-AI released this 05 Nov 06:58
· 5 commits to main since this release

Qwen3.8-Flash-Next (125B MoE) on one or two consumer RTX cards. Fixes for long sessions and long prompts, tool-call parsing fixes, and a new ready-made engine for RTX 20 (Turing) cards.

Downloads

File For
strata-linux-x64-rtx20.zip / strata-windows-x64-rtx20.zip New: RTX 20 series (sm_75: 2060, 2070, 2080, 2080 Ti, Titan RTX), built, not tested yet
strata-linux-x64-rtx30.zip / strata-windows-x64-rtx30.zip RTX 30 series (sm_86), tested on 2x RTX 3080
strata-linux-x64-rtx40.zip / strata-windows-x64-rtx40.zip RTX 40 series (sm_89), built, not tested yet
strata-linux-x64-rtx50.zip / strata-windows-x64-rtx50.zip RTX 50 series (sm_120), built, not tested yet

CUDA 13, NVIDIA driver 580+. python setup.py picks the zip for your card automatically, now including RTX 20 cards.

RTX 20 note: Turing has no BF16/TF32 tensor cores, so a few kernels use fp32 fallbacks and prompt reads are slower than on RTX 30. Most RTX 20 cards have 8 GB; 11-12 GB or more is recommended. Reports from RTX 20/40/50 owners are welcome.

Fixes

  • Long prompts on the layer-major prefill path (#4, thanks @WilliamStone): with STRATA_PF_GROUP_SCRATCH=1, a large routed expert group could overflow the MoE scratch and turn the layer into NaN rows, stopping the engine on prompts of ~29K tokens and up (HTTP 503). Oversized groups are now split. Prefill speed unchanged.
  • Long sessions slowly losing their expert cache (upstream #4844): under --pipeline-windows 2 with --adapt-async, a stale copy-back range made the engine read experts from the model file again after warm-up. Now 0 file reads after 190K exchanges.
  • Split-window DMA ordering (upstream #5096): an empty group no longer overtakes the earlier group's uploads.
  • Expert cache auto keeps the ~256 MiB the allocator needs after it (#4474). On 10 GB cards set --vram-reserve-mib lower (we use 444) to keep the same slot count.
  • The engine waits up to 20 s for RAM to be given back by an earlier engine instead of failing (#4051); clearer memlock / PLE lock messages (#4671, #4846).
  • Layer-major prefill copies an expert with no mapped blob from its source instead of ending the request (#4695).

Tool calls and the server

  • Tool-call recovery is on by default: damaged arguments, a stray closing think tag or a missing </function> no longer lose the call (#4427, #4077); "tool_call_recovery": false turns it off.
  • A tool the conversation already called counts as declared on all routes (#4663); tools.write / functions.write / default_api.write map to the declared tool (#4751).
  • Calls shown inside code fences or quotes are not run (#4702, #4703); a file that lists closing tags is written whole (#4701); quoted tool-call text in a string argument stays exact (#4078).
  • /v1/messages context overflow uses Anthropic's wording, so Claude Code compacts instead of retrying (#4838).
  • Repeat / frequency / presence penalties count the reply's tokens, not the end of the prompt (#4590; STRATA_PENALTY_PROMPT=1 restores the old window).

Performance

  • Hyper-connection read kernels for 5-8 token launches: decode at c=8 +5-7 %, same bits.
  • Opt-in tensor-core GDN scan on 99 KB cards (STRATA_GDN_TC, STRATA_GDN_CONVL2=2), pinned per preset for 2x RTX 3080.

Build

  • HIP build fixes (vmm_chunk_new, alignas on int4 arrays); CI builds HIP by hand.