ReplaySSM makes autoregressive and speculative decoding faster for hybrid models (Mamba2, Gated DeltaNet) by caching recent SSM inputs in a small ring buffer instead of writing the recurrent state back to HBM every decode step.
π Blog post: ReplaySSM: Cache SSM Inputs, Not State Β Β·Β π Upstreaming to vLLM: RFC #47572, PR #47576
This repository is the original research reference, based on vLLM (Apache-2.0) at upstream commit
37ce34922; the productized version is being contributed upstream via the links above. See the upstream vLLM README below for general install and usage.
Scripts under benchmarks/replayssm/ reproduce the blog numbers:
# E2E autoregressive decode speedup: ReplaySSM vs the standard SSM kernel (on single H100)
python benchmarks/replayssm/e2e_decode_speedup.py --model-id nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
python benchmarks/replayssm/e2e_decode_speedup.py --model-id Qwen/Qwen3.5-4B --buffer-len 16
# E2E speculative-decode throughput: AR vs standard-spec vs ReplaySSM-spec (on single B300)
python benchmarks/replayssm/e2e_spec_decode_throughput.py --batch-size 512 \
--model-id nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4
python benchmarks/replayssm/e2e_spec_decode_throughput.py --batch-size 512 \
--model-id nvidia/Qwen3.5-122B-A10B-NVFP4 --spec-method qwen3_next_mtp
Blackwell / NVFP4 note: the FP4-MoE FlashInfer autotuner can be unstable under CUDA-graph capture on the pre-release Blackwell path, so the benchmark scripts disable it by default (override with
--no-disable-flashinfer-autotune).
| flag | meaning & constraints |
|---|---|
--use-replayssm | ReplaySSM AR decode kernel. AR only |
--use-replayssm-spec | ReplaySSM cached spec kernel. |
--replayssm-buffer-len N | ring-buffer capacity. |
--replayssm-route {output_only,state_and_output} | AR compute route (only with --use-replayssm); default output_only. |
ReplaySSM is implemented in Triton kernels.
Kernels β Mamba2 (vllm/model_executor/layers/mamba/ops/)
selective_state_update_replayssm_output_only.py β AR decode, output_only route (default). Entry: selective_state_update_replayssm_output_only.selective_state_update_replayssm_state_and_output.py β AR decode, state_and_output route. Entry: selective_state_update_replayssm_state_and_output.selective_state_update_replayssm_spec.py β speculative decode on a circular buffer. Entry: selective_state_update_replayssm_spec; cursors commit_replayssm_spec / reset_replayssm_spec_cursors.Kernels β Gated DeltaNet (GDN) (vllm/model_executor/layers/fla/ops/)
fused_recurrent_replayssm.py β AR decode. Entry: fused_recurrent_gated_delta_rule_replayssm.gdn_replayssm_spec_decode.py β speculative decode on a circular buffer. Entry: gdn_replayssm_spec_decode; cursors commit_gdn_replayssm_spec / reset_gdn_replayssm_spec_cursors.Everything below is the upstream vLLM README.
| Documentation | Blog | Paper | Twitter/X | User Forum | Developer Slack |
π₯ We have built a vLLM website to help you get started with vLLM. Please visit vllm.ai to learn more. For events, please visit vllm.ai/events to join us.
vLLM is a fast and easy-to-use library for LLM inference and serving.
Originally developed in the Sky Computing Lab at UC Berkeley, vLLM has grown into one of the most active open-source AI projects built and maintained by a diverse community of many dozens of academic institutions and companies from over 2000 contributors.
vLLM is fast with:
vLLM is flexible and easy to use with:
vLLM seamlessly supports 200+ model architectures on Hugging Face, including:
Find the full list of supported models here.
Install vLLM with uv (recommended) or pip:
uv pip install vllm
Or build from source for development.
Visit our documentation to learn more.
We welcome and value any contributions and collaborations. Please check out Contributing to vLLM for how to get involved.
If you use vLLM for your research, please cite our paper:
@inproceedings{kwon2023efficient,
title={Efficient Memory Management for Large Language Model Serving with PagedAttention},
author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},
booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},
year={2023}
}
(top 30 of 461)
Python
84.3%
Rust
5.3%
Cuda
5.2%
C++
3.7%
ReplaySSM makes autoregressive and speculative decoding faster for hybrid models (Mamba2, Gated DeltaNet) by caching recent SSM inputs in a small ring buffer instead of writing the recurrent state back to HBM every decode step.
π Blog post: ReplaySSM: Cache SSM Inputs, Not State Β Β·Β π Upstreaming to vLLM: RFC #47572, PR #47576
This repository is the original research reference, based on vLLM (Apache-2.0) at upstream commit
37ce34922; the productized version is being contributed upstream via the links above. See the upstream vLLM README below for general install and usage.
Scripts under benchmarks/replayssm/ reproduce the blog numbers:
# E2E autoregressive decode speedup: ReplaySSM vs the standard SSM kernel (on single H100)
python benchmarks/replayssm/e2e_decode_speedup.py --model-id nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
python benchmarks/replayssm/e2e_decode_speedup.py --model-id Qwen/Qwen3.5-4B --buffer-len 16
# E2E speculative-decode throughput: AR vs standard-spec vs ReplaySSM-spec (on single B300)
python benchmarks/replayssm/e2e_spec_decode_throughput.py --batch-size 512 \
--model-id nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4
python benchmarks/replayssm/e2e_spec_decode_throughput.py --batch-size 512 \
--model-id nvidia/Qwen3.5-122B-A10B-NVFP4 --spec-method qwen3_next_mtp
Blackwell / NVFP4 note: the FP4-MoE FlashInfer autotuner can be unstable under CUDA-graph capture on the pre-release Blackwell path, so the benchmark scripts disable it by default (override with
--no-disable-flashinfer-autotune).
| flag | meaning & constraints |
|---|---|
--use-replayssm | ReplaySSM AR decode kernel. AR only |
--use-replayssm-spec | ReplaySSM cached spec kernel. |
--replayssm-buffer-len N | ring-buffer capacity. |
--replayssm-route {output_only,state_and_output} | AR compute route (only with --use-replayssm); default output_only. |
ReplaySSM is implemented in Triton kernels.
Kernels β Mamba2 (vllm/model_executor/layers/mamba/ops/)
selective_state_update_replayssm_output_only.py β AR decode, output_only route (default). Entry: selective_state_update_replayssm_output_only.selective_state_update_replayssm_state_and_output.py β AR decode, state_and_output route. Entry: selective_state_update_replayssm_state_and_output.selective_state_update_replayssm_spec.py β speculative decode on a circular buffer. Entry: selective_state_update_replayssm_spec; cursors commit_replayssm_spec / reset_replayssm_spec_cursors.Kernels β Gated DeltaNet (GDN) (vllm/model_executor/layers/fla/ops/)
fused_recurrent_replayssm.py β AR decode. Entry: fused_recurrent_gated_delta_rule_replayssm.gdn_replayssm_spec_decode.py β speculative decode on a circular buffer. Entry: gdn_replayssm_spec_decode; cursors commit_gdn_replayssm_spec / reset_gdn_replayssm_spec_cursors.Everything below is the upstream vLLM README.
| Documentation | Blog | Paper | Twitter/X | User Forum | Developer Slack |
π₯ We have built a vLLM website to help you get started with vLLM. Please visit vllm.ai to learn more. For events, please visit vllm.ai/events to join us.
vLLM is a fast and easy-to-use library for LLM inference and serving.
Originally developed in the Sky Computing Lab at UC Berkeley, vLLM has grown into one of the most active open-source AI projects built and maintained by a diverse community of many dozens of academic institutions and companies from over 2000 contributors.
vLLM is fast with:
vLLM is flexible and easy to use with:
vLLM seamlessly supports 200+ model architectures on Hugging Face, including:
Find the full list of supported models here.
Install vLLM with uv (recommended) or pip:
uv pip install vllm
Or build from source for development.
Visit our documentation to learn more.
We welcome and value any contributions and collaborations. Please check out Contributing to vLLM for how to get involved.
If you use vLLM for your research, please cite our paper:
@inproceedings{kwon2023efficient,
title={Efficient Memory Management for Large Language Model Serving with PagedAttention},
author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},
booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},
year={2023}
}
(top 30 of 461)
Python
84.3%
Rust
5.3%
Cuda
5.2%
C++
3.7%