sgl-project/sglang · error · ValueError
--enable-dsa-cache-layer-split is not supported with pipelin
Error message
--enable-dsa-cache-layer-split is not supported with pipeline parallelism (pp_size > 1) yet. It requires prefill context parallelism, and CP + PP has not been validated for this feature.
What it means
--enable-dsa-cache-layer-split requires prefill context parallelism, and CP+PP has not been validated for this feature, so it is rejected whenever pipeline parallelism (pp_size > 1) is active.
Source
Thrown at python/sglang/srt/server_args.py:5963
"(or legacy --enable-nsa-prefill-context-parallel with "
"--nsa-prefill-cp-mode round-robin-split)."
)
# Layer split relies on the mooncake all-CP-rank KV/indexer
# transfer path. mori/nixl support is a temporary limitation
# and will be added later by the community.
if (
cfg.enable_dsa_cache_layer_split
and cfg.disaggregation_transfer_backend != "mooncake"
):
raise ValueError(
"--enable-dsa-cache-layer-split currently only supports "
"the mooncake transfer backend (mooncake / mooncake_tcp). "
f"Got --disaggregation-transfer-backend "
f"{cfg.disaggregation_transfer_backend!r}. mori/nixl "
"support will be added later by the community."
)
if cfg.enable_dsa_cache_layer_split and cfg.pp_size > 1:
raise ValueError(
"--enable-dsa-cache-layer-split is not supported with "
"pipeline parallelism (pp_size > 1) yet. It requires "
"prefill context parallelism, and CP + PP has not been "
"validated for this feature."
)
else:
# DeepSeek V3/R1/V3.1
if cfg.cuda_graph_config.prefill.backend != Backend.DISABLED:
logger.info("Piecewise CUDA graph is enabled, use MLA for prefill.")
# The sm100 trtllm_mla fill moved to the override registry
# (arg_groups/overrides.py: _deepseek_family_overrides).
# MLA prefill CP auto-config: the field declarations moved to
# the override registry (arg_groups/overrides.py:
# _deepseek_family_overrides).
if cfg.enable_prefill_cp and self.use_mla_backend():View on GitHub (pinned to 0132848349)
Solutions
- Set --pp-size 1 when using --enable-dsa-cache-layer-split (scale with CP/TP instead)
- Or remove --enable-dsa-cache-layer-split if PP is required
- Track upstream validation of CP+PP for this feature
Example fix
# before --enable-dsa-cache-layer-split --pp-size 2 # after --enable-dsa-cache-layer-split --pp-size 1 --cp-size 2
Defensive patterns
Strategy: validation
Validate before calling
if args.get("enable_dsa_cache_layer_split") and args.get("pp_size", 1) > 1:
raise SystemExit("dsa-cache-layer-split requires pp_size=1; use CP/TP to scale") Prevention
- Prefer CP/TP over PP for models using prefill-CP optimizations
- Validate parallelism dimensions against per-model constraints before cluster launch
When it happens
Trigger: Combining --enable-dsa-cache-layer-split with --pp-size > 1 on a PD prefill worker.
Common situations: Large multi-node deployments that use PP for memory scaling also enabling the DSA cache-layer-split optimization; cluster templates with pp-size preset.
Related errors
- SGLANG_DISAGG_STAGING_BUFFER with pp_size > 1 is only suppor
- Intern-S2-Mobius does not support: " + "; ".join(unsupported
- --enable-dsa-cache-layer-split is only supported for DSA (De
- --enable-dsa-cache-layer-split is not supported on decode wo
- --enable-dsa-cache-layer-split is only supported on PD prefi
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/04b678e9dfee9dee.
Report an issue: GitHub.