Hi, thanks for open-sourcing OSCAR. The SGLang-based INT2 KV serving path is very interesting, especially the mixed-KV design with BF16 sink/recent tokens and INT2 long-history KV cache.
I would like to ask whether OSCAR is planned to support speculative decoding in SGLang, such as draft-model speculative decoding or EAGLE/DFLASH/MTP style speculative decoding.
From the current serving example, OSCAR uses options such as:
SGLANG_ENABLE_MIXED_KV_WINDOWS=1
SGLANG_OSCAR_K_ROTATION_PATH=...
SGLANG_OSCAR_V_ROTATION_PATH=...
SGLANG_MIXED_KV_PREFIX_TOKENS=64
SGLANG_MIXED_KV_RECENT_TOKENS=256
--kv-cache-dtype int2
--kv-cache-quant-group-size 128
--decode-attention-backend triton
I have a few questions about the intended roadmap and correct integration design:
-
Is OSCAR + speculative decoding currently supported, or is there a planned timeline for this feature?
-
For speculative decoding, what is the recommended KV-cache lifecycle?
My current understanding is that speculative candidate tokens should probably stay in a temporary high-precision or extra-buffer region before acceptance. Only accepted tokens should be committed into the normal paged KV cache, enter the BF16 recent window first, and later be demoted into OSCAR INT2 history. Rejected candidate KV should be discarded and should not enter prefix cache or INT2 history. Is this the intended direction?
-
For a two-model speculative setup, should OSCAR be applied only to the target model KV cache at first, while the draft model keeps its own normal KV cache? Or do you expect both target and draft KV caches to use OSCAR?
-
For EAGLE-style speculation, are there additional constraints because the draft path is more closely tied to the target model internals?
-
How should SGLANG_MIXED_KV_RECENT_TOKENS interact with unverified speculative tokens? Should speculative tokens count as recent tokens before acceptance, or should they live in a separate temporary region and only enter the mixed-KV window after being accepted?
-
Are there any known issues or recommended design choices for combining OSCAR mixed-KV windows with SGLang speculative decoding extra token slots / lookahead slots?
A possible staged integration plan I am considering is:
- First verify OSCAR INT2 KV serving on the target model without speculation.
- Then enable speculative decoding while keeping unverified speculative KV in a separate temporary BF16 buffer.
- On acceptance, commit only accepted target-model KV into the normal OSCAR mixed-KV cache.
- On rejection, immediately release rejected KV and prevent it from entering prefix cache, page allocation statistics, or INT2 demotion.
- Finally benchmark acceptance rate, memory usage, and decode throughput against BF16 KV + speculative decoding.
Does this match how the OSCAR team would approach the integration?
Any guidance on the expected timeline and recommended implementation direction would be very helpful. OSCAR + speculative decoding seems like a promising combination, since OSCAR reduces long-context KV memory pressure while speculative decoding reduces target-model decoding steps. The main uncertainty is how to correctly handle speculative KV commit/rollback together with OSCAR’s mixed BF16/INT2 cache layout.
Hi, thanks for open-sourcing OSCAR. The SGLang-based INT2 KV serving path is very interesting, especially the mixed-KV design with BF16 sink/recent tokens and INT2 long-history KV cache.
I would like to ask whether OSCAR is planned to support speculative decoding in SGLang, such as draft-model speculative decoding or EAGLE/DFLASH/MTP style speculative decoding.
From the current serving example, OSCAR uses options such as:
I have a few questions about the intended roadmap and correct integration design:
Is OSCAR + speculative decoding currently supported, or is there a planned timeline for this feature?
For speculative decoding, what is the recommended KV-cache lifecycle?
My current understanding is that speculative candidate tokens should probably stay in a temporary high-precision or extra-buffer region before acceptance. Only accepted tokens should be committed into the normal paged KV cache, enter the BF16 recent window first, and later be demoted into OSCAR INT2 history. Rejected candidate KV should be discarded and should not enter prefix cache or INT2 history. Is this the intended direction?
For a two-model speculative setup, should OSCAR be applied only to the target model KV cache at first, while the draft model keeps its own normal KV cache? Or do you expect both target and draft KV caches to use OSCAR?
For EAGLE-style speculation, are there additional constraints because the draft path is more closely tied to the target model internals?
How should
SGLANG_MIXED_KV_RECENT_TOKENSinteract with unverified speculative tokens? Should speculative tokens count as recent tokens before acceptance, or should they live in a separate temporary region and only enter the mixed-KV window after being accepted?Are there any known issues or recommended design choices for combining OSCAR mixed-KV windows with SGLang speculative decoding extra token slots / lookahead slots?
A possible staged integration plan I am considering is:
Does this match how the OSCAR team would approach the integration?
Any guidance on the expected timeline and recommended implementation direction would be very helpful. OSCAR + speculative decoding seems like a promising combination, since OSCAR reduces long-context KV memory pressure while speculative decoding reduces target-model decoding steps. The main uncertainty is how to correctly handle speculative KV commit/rollback together with OSCAR’s mixed BF16/INT2 cache layout.