{"record":{"id":"4dc5990963dee047","repo":"sgl-project/sglang","slug":"pd-disagg-pp-1-not-supported-for-minimax-sparse-i","errorCode":null,"errorMessage":"PD disagg: PP>1 not supported for MiniMax sparse index yet.","messagePattern":"PD disagg: PP>1 not supported for MiniMax sparse index yet\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/disaggregation/mooncake/conn.py","lineNumber":1389,"sourceCode":"                        dst_indices_local = dst_indices_local[: len(src_indices)]\n                rc = (\n                    self._send_kvcache_generic(\n                        mooncake_session_id=req.mooncake_session_id,\n                        src_data_ptrs=src_data_ptrs,\n                        dst_data_ptrs=dst_data_ptrs,\n                        item_lens=src_item_lens,\n                        prefill_data_indices=np.array(src_indices, dtype=np.int32),\n                        dst_data_indices=np.array(dst_indices_local, dtype=np.int32),\n                        executor=executor,\n                        state_type=st,\n                    )\n                    or rc\n                )\n            elif st == StateType.MINIMAX_INDEX_K:\n                # Equal-TP / PP=1 only. Sub-pools are compacted sparse-layer\n                # lists, so PP>1 mis-slices and heterogeneous TP is unsupported.\n                if self.pp_size is not None and self.pp_size > 1:\n                    raise RuntimeError(\n                        \"PD disagg: PP>1 not supported for MiniMax sparse index yet.\"\n                    )\n                if (\n                    target_rank_registration_info is not None\n                    and self.attn_tp_size\n                    != target_rank_registration_info.dst_attn_tp_size\n                ):\n                    raise RuntimeError(\n                        \"PD disagg: heterogeneous TP not supported for MiniMax \"\n                        \"sparse index yet.\"\n                    )\n                src_indices = list(indices)\n                dst_indices_local = list(dst_indices)\n                if len(src_indices) > len(dst_indices_local):\n                    src_indices = src_indices[: len(dst_indices_local)]\n                elif len(src_indices) < len(dst_indices_local):\n                    dst_indices_local = dst_indices_local[: len(src_indices)]\n                rc = (","sourceCodeStart":1371,"sourceCodeEnd":1407,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/disaggregation/mooncake/conn.py#L1371-L1407","documentation":"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.","triggerScenarios":"PD disaggregation with pp_size > 1 while transferring StateType.MINIMAX_INDEX_K.","commonSituations":"Running a MiniMax sparse-attention model with --pp-size 2+ on prefill or decode under PD disaggregation.","solutions":["Set pipeline-parallel size to 1 on both sides","Await upstream support for MiniMax sparse index under PP>1"],"exampleFix":"# before\npython -m sglang.launch_server --pp-size 2 ...\n# after\npython -m sglang.launch_server --pp-size 1 ...","handlingStrategy":"validation","validationCode":"if state involves MINIMAX_INDEX_K:\n    assert pp_size == 1, \"MiniMax sparse index requires PP=1 under PD disagg\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add a launch-time guard combining model family and pp-size"],"tags":["pd-disagg","minimax","pipeline-parallel","sparse-attention"],"backgroundTag":"unsupported-parallelism-config","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}