Skip to content

Expose native FP32 recurrent state storage for ExLlamaV3 - #503

Merged
turboderp merged 1 commit into
theroyallab:mainfrom
Tsury:fp32-recurrent-state-option
Oct 19, 2026
Merged

turboderp merged 1 commit into
theroyallab:mainfrom
Tsury:fp32-recurrent-state-option

Conversation

@Tsury

@Tsury Tsury commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

ExLlamaV3 1.6.3 defaults GatedDeltaNet/KDA recurrent state storage to FP16 and exposes Cache(recurrent_dtype=torch.float) for FP32. Tabby currently cannot select that native option, so upgrading an existing FP32 setup silently changes its storage precision.

Add model.recurrent_state_fp32 and the corresponding model-load field. The default remains false, preserving current upstream behavior. When true, forward torch.float through the shared cache constructor for main and draft caches, including quantized K/V modes. This changes recurrent storage only; scans still compute in FP32. FP32 doubles recurrent state and checkpoint memory relative to FP16.

Validation: eight isolated cache-forwarding cases cover default/explicit FP16, FP32, quantized K/V, and main/draft paths. A real 48-layer recurrent CUDA model on ExLlamaV3 1.6.3 / Torch 2.13.0 loaded with all 48 initialized recurrent tensors in torch.float32 (301,989,888 bytes). Coding, image, eight tool-use cases, a 40,934-token dispersed lookup and warm continuation passed. JSON grammar, stream cancellation, and the next request also passed. These are brief compatibility observations, not broad quality or speed claims.

@turboderp
turboderp merged commit 7ade5dd into theroyallab:main Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants