sgl-project/sglang · error · ValueError
--enable-linear-replayssm is not supported under PD disaggre
Error message
--enable-linear-replayssm is not supported under PD disaggregation yet (follow-up). Got --disaggregation-mode={cfg.disaggregation_mode!r}. What it means
ReplaySSM is not yet supported under prefill/decode (PD) disaggregation: the disaggregated decode pool (HybridMambaDecodeReqToTokenPool) is not wired for the ReplaySSM ring and the disagg cache/coordination flow is unvalidated, so enabling it would silently no-op or misbehave. The check rejects any --disaggregation-mode other than null.
Source
Thrown at python/sglang/srt/server_args.py:6956
f"--linear-attn-decode-backend={decode!r}."
)
from sglang.srt.arg_groups.overrides import (
mamba_extra_buffer_of,
)
if mamba_extra_buffer_of(resolved_view(self)):
raise ValueError(
"--enable-linear-replayssm requires --mamba-radix-cache-strategy "
"no_buffer (the default); the extra_buffer ping-pong "
"donation path is not yet supported (follow-up). Got "
f"--mamba-radix-cache-strategy={cfg.mamba_radix_cache_strategy!r}."
)
if cfg.disaggregation_mode != "null":
# The disaggregated decode pool (HybridMambaDecodeReqToTokenPool)
# is not wired for the ReplaySSM ring, so the flag would silently
# no-op there; disagg also runs a different cache/coordination
# flow that is not yet validated for ReplaySSM (follow-up).
raise ValueError(
"--enable-linear-replayssm is not supported under PD "
"disaggregation yet (follow-up). Got "
f"--disaggregation-mode={cfg.disaggregation_mode!r}."
)
if cfg.linear_replayssm_cache_len < 1:
raise ValueError(
"--linear-replayssm-cache-len must be >= 1, got "
f"{cfg.linear_replayssm_cache_len}."
)
# ReplaySSM spec-verify (Part B of #28511): linear-chain target verify via
# fold-every-commit -- the verify stores each draft step's raw inputs into
# the per-slot (rawv, rawk, g, beta) window and the commit replays the
# accepted prefix into the fp32 checkpoint. The intra-window interaction
# uses a strictly-lower causal mask, so it is valid ONLY for a linear
# draft chain (speculative_eagle_topk in {None, 1}, i.e. NEXTN / MTP);
# EAGLE tree verify (topk > 1) must fall back to the recurrent verify.
# GDN sizes the window to the draft maximum; KDA (kda_backend) keeps aView on GitHub (pinned to 0132848349)
Solutions
- Run ReplaySSM without PD disaggregation: remove --disaggregation-mode (or set null)
- Or remove --enable-linear-replayssm on disagg deployments until support lands (follow-up)
Example fix
# before --enable-linear-replayssm --disaggregation-mode decode # after --enable-linear-replayssm
Defensive patterns
Strategy: validation
Validate before calling
def validate(disagg_mode, enable_replayssm):
return not enable_replayssm or disagg_mode == "null" Type guard
def is_standalone(mode: str) -> bool: return mode == "null"
Prevention
- Check feature support matrix before enabling experimental flags on disagg deployments
- Keep disagg and single-node launch configs separate
When it happens
Trigger: --enable-linear-replayssm together with --disaggregation-mode prefill or decode.
Common situations: Enabling ReplaySSM on an existing PD-disaggregated deployment; adding disagg flags to a single-node ReplaySSM benchmark config.
Related errors
- --enable-linear-replayssm-spec is not supported on a PD pref
- Cosmos3 action generation does not support sequence parallel
- SANA-WM does not support tensor parallelism yet. Use --num-g
- SANA-WM does not support temporal sequence parallelism yet.
- MiniCPM sparse attention does not support PD disaggregation
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/562d787d51cd3f20.
Report an issue: GitHub.