{"record":{"id":"84a5876178ec12e2","repo":"sgl-project/sglang","slug":"pd-disaggregation-for-minimax-sparse-layers-with-i","errorCode":null,"errorMessage":"PD disaggregation for MiniMax sparse layers with index value (index_kv_pool) is not yet supported; only K-only sparse layers are.","messagePattern":"PD disaggregation for MiniMax sparse layers with index value \\(index_kv_pool\\) is not yet supported; only K-only sparse layers are\\.","errorType":"validation","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/disaggregation/utils.py","lineNumber":1008,"sourceCode":"    kv_args.state_data_ptrs = []\n    kv_args.state_data_lens = []\n    kv_args.state_item_lens = []\n    kv_args.state_dim_per_tensor = []\n    kv_args.state_slice_outer_counts = []\n    kv_args.state_layer_ids = []\n    kv_args.is_hybrid_mla_backend = False\n    kv_args.state_conv_shard_groups = []\n\n    if isinstance(token_to_kv_pool, MHATokenToKVPoolMXFP8):\n        append_state_component(\n            kv_args,\n            StateType.BLOCK_SCALE,\n            *token_to_kv_pool.get_kv_scale_buf_infos(),\n        )\n\n    if isinstance(token_to_kv_pool, MiniMaxSparseKVPool):\n        if token_to_kv_pool.index_kv_pool is not None:\n            raise NotImplementedError(\n                \"PD disaggregation for MiniMax sparse layers with index value \"\n                \"(index_kv_pool) is not yet supported; only K-only sparse layers are.\"\n            )\n        if token_to_kv_pool.index_k_pool is not None:\n            dp, dl, il = token_to_kv_pool.get_index_k_state_buf_infos()\n            append_state_component(kv_args, StateType.MINIMAX_INDEX_K, dp, dl, il)\n    elif hasattr(token_to_kv_pool, \"get_state_buf_infos\"):\n        data_ptrs, data_lens, item_lens = token_to_kv_pool.get_state_buf_infos()\n\n        # DeepSeekV4TokenToKVPool inherits BaseSWAKVPool; its heterogeneous\n        # state list is described per-entry via get_state_buf_infos.\n        if isinstance(token_to_kv_pool, BaseSWAKVPool):\n            append_state_component(\n                kv_args, StateType.SWA, data_ptrs, data_lens, item_lens\n            )\n            # MXFP8 KV: each sub-pool's block scales ride as their own component\n            # so they inherit the index payload of the KV they describe.\n            # Only the concrete SWAKVPool owns a full sub-pool; other","sourceCodeStart":990,"sourceCodeEnd":1026,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/disaggregation/utils.py#L990-L1026","documentation":"When preparing disaggregation state transfer args, setup_state_kv_args detects a MiniMaxSparseKVPool and refuses to transfer state if the pool carries an index value pool (index_kv_pool). Only K-only sparse layers have an implemented state-transfer path (StateType.MINIMAX_INDEX_K), so index-value models raise NotImplementedError.","triggerScenarios":"Initializing a disaggregated scheduler (_init_kv_manager) for a MiniMax sparse-attention model whose KV pool was constructed with index_kv_pool set (index-value sparse layers) rather than index_k_pool only.","commonSituations":"Enabling PD disaggregation on a MiniMax sparse-attention variant that uses index-value layers; upgrading a model config that now enables index value heads; feature not yet implemented in this SGLang version.","solutions":["Use a K-only sparse-layer MiniMax configuration (disable index value pool) if the model variant allows it","Run the model without PD disaggregation (single-node serving) until index-value transfer is supported","Track/upgrade to an SGLang release that implements index_kv_pool state transfer"],"exampleFix":"// before\nMiniMaxSparseKVPool(..., index_kv_pool=IndexKVPool(...))  # with --disaggregation-prefill\n// after\nMiniMaxSparseKVPool(..., index_kv_pool=None)  # K-only sparse layers, disaggregation OK","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"def supports_disagg(pool) -> bool:\n    return not (isinstance(pool, MiniMaxSparseKVPool) and pool.index_kv_pool is not None)","tryCatchPattern":"try:\n    setup_state_kv_args(...)\nexcept NotImplementedError as e:\n    logger.error(\"Model variant unsupported for PD disaggregation: %s\", e)\n    sys.exit(1)","preventionTips":["Check index_kv_pool is None before enabling disaggregation on MiniMax sparse models","Watch release notes for index-value transfer support"],"tags":["disaggregation","minimax","sparse-attention","not-implemented"],"backgroundTag":"unsupported-feature-not-implemented","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}