sgl-project/sglang · error · RuntimeError
PD disagg: PP>1 not supported for MiniMax sparse index yet.
Error message
PD disagg: PP>1 not supported for MiniMax sparse index yet.
What it means
MiniMax sparse index (minimax_index_k) state transfer does not support pipeline parallelism: if pp_size > 1 on the prefill side, the sender aborts. The sparse index is a single global structure that has no per-PP-rank partitioning in the transfer path yet.
Source
Thrown at python/sglang/srt/disaggregation/mori/conn.py:1379
dst_state_indices: npt.NDArray[np.int32],
src_state_mem_descs: List[MemoryDesc],
src_state_item_lens: List[int],
dst_state_mem_descs: List[MemoryDesc],
state_type: str,
) -> List[TransferStatus]:
# TP mismatch check for non-MLA SWA
if (
state_type == "swa"
and not self.is_mla_backend
and peer_info.decode_tp_size != self.attn_tp_size
):
raise RuntimeError(
f"PD state transfer does not support TP-mismatched non-MLA SWA models "
f"(prefill_tp_size={self.attn_tp_size}, decode_tp_size={peer_info.decode_tp_size})"
)
if state_type == "minimax_index_k":
if self.pp_size is not None and self.pp_size > 1:
raise RuntimeError(
"PD disagg: PP>1 not supported for MiniMax sparse index yet."
)
if peer_info.decode_tp_size != self.attn_tp_size:
raise RuntimeError(
"PD disagg: heterogeneous TP not supported for MiniMax sparse index yet."
)
common_len = min(src_state_indices.size, dst_state_indices.size)
if (
state_type == "c128_state"
and common_len == 0
and src_state_indices.size == 0
and dst_state_indices.size == 0
):
return []
if common_len == 0 and max(src_state_indices.size, dst_state_indices.size) > 0:
raise RuntimeError(
f"No overlapping state indices for state_type={state_type}"View on GitHub (pinned to 0132848349)
Solutions
- Remove pipeline parallelism (--pp-size 1) on the MiniMax prefill/decode instances
- Scale with TP instead of PP for MiniMax sparse-attention models under disagg
- Wait for upstream support of PP-partitioned MiniMax sparse index transfer
Example fix
# before --disaggregation-prefill --pp-size 2 # after --disaggregation-prefill --pp-size 1 --tp 8
Defensive patterns
Strategy: validation
Validate before calling
if "minimax_index_k" in (kv_args.state_types or []):
assert not (conn.pp_size and conn.pp_size > 1), (
"MiniMax sparse index requires pp_size == 1"
)
Prevention
- Keep --pp-size 1 for MiniMax sparse-attention models under disagg
- Scale MiniMax prefill with TP, not PP
When it happens
Trigger: send_state with state_type=='minimax_index_k' while self.pp_size is set and greater than 1 (prefill launched with --pp-size 2 or more on a MiniMax sparse-attention model).
Common situations: Scaling MiniMax prefill capacity with pipeline parallelism in a PD-disaggregated deployment; works with TP-only but fails once PP is added.
Related errors
- PD disagg: PP>1 not supported for MiniMax sparse index yet.
- PD disagg: heterogeneous TP not supported for MiniMax sparse
- PD disaggregation for MiniMax sparse layers with index value
- PD decode DCP requires an MLA or hybrid-MLA KV pool.
- Unexpected compressed-MLA dst_kv_ptrs length {len(dst_kv_ptr
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/551fa381a17e66e8.
Report an issue: GitHub.