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

The MiniMAX sparse index K sub-pool is a compacted sparse-layer list; with pipeline parallelism > 1 the slicing across PP ranks is invalid, so maybe_send_extra rejects the transfer outright.

Source

Thrown at python/sglang/srt/disaggregation/mooncake/conn.py:1389

                        dst_indices_local = dst_indices_local[: len(src_indices)]
                rc = (
                    self._send_kvcache_generic(
                        mooncake_session_id=req.mooncake_session_id,
                        src_data_ptrs=src_data_ptrs,
                        dst_data_ptrs=dst_data_ptrs,
                        item_lens=src_item_lens,
                        prefill_data_indices=np.array(src_indices, dtype=np.int32),
                        dst_data_indices=np.array(dst_indices_local, dtype=np.int32),
                        executor=executor,
                        state_type=st,
                    )
                    or rc
                )
            elif st == StateType.MINIMAX_INDEX_K:
                # Equal-TP / PP=1 only. Sub-pools are compacted sparse-layer
                # lists, so PP>1 mis-slices and heterogeneous TP is unsupported.
                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 (
                    target_rank_registration_info is not None
                    and self.attn_tp_size
                    != target_rank_registration_info.dst_attn_tp_size
                ):
                    raise RuntimeError(
                        "PD disagg: heterogeneous TP not supported for MiniMax "
                        "sparse index yet."
                    )
                src_indices = list(indices)
                dst_indices_local = list(dst_indices)
                if len(src_indices) > len(dst_indices_local):
                    src_indices = src_indices[: len(dst_indices_local)]
                elif len(src_indices) < len(dst_indices_local):
                    dst_indices_local = dst_indices_local[: len(src_indices)]
                rc = (

View on GitHub (pinned to 0132848349)

Solutions

  1. Set pipeline-parallel size to 1 on both sides
  2. Await upstream support for MiniMax sparse index under PP>1

Example fix

# before
python -m sglang.launch_server --pp-size 2 ...
# after
python -m sglang.launch_server --pp-size 1 ...
Defensive patterns

Strategy: validation

Validate before calling

if state involves MINIMAX_INDEX_K:
    assert pp_size == 1, "MiniMax sparse index requires PP=1 under PD disagg"

Prevention

When it happens

Trigger: PD disaggregation with pp_size > 1 while transferring StateType.MINIMAX_INDEX_K.

Common situations: Running a MiniMax sparse-attention model with --pp-size 2+ on prefill or decode under PD disaggregation.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/4dc5990963dee047. Report an issue: GitHub.