{"record":{"id":"1a09d4d99c8f2dd6","repo":"sgl-project/sglang","slug":"deepep-v2-moe-currently-supports-only-moe-runner","errorCode":null,"errorMessage":"DeepEP v2 MoE currently supports only --moe-runner-backend deep_gemm. Got {resolved_runner!r}. Add a runner adapter before enabling DeepEP v2 with other MoE runners.","messagePattern":"DeepEP v2 MoE currently supports only --moe-runner-backend deep_gemm\\. Got (.+?)\\. Add a runner adapter before enabling DeepEP v2 with other MoE runners\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":7717,"sourceCode":"            self._validate_deepep_v2_model_architecture()\n            if resolved_view(self).enable_deterministic_inference:\n                raise ValueError(\n                    \"DeepEP v2 does not forward deterministic=True to \"\n                    \"ElasticBuffer, so deterministic sorting remains disabled. \"\n                    \"Disable --enable-deterministic-inference or use \"\n                    \"--moe-a2a-backend deepep.\"\n                )\n            # ElasticBuffer requires CUMEM, but not NVLS or its preallocation.\n            os.environ.setdefault(\"NCCL_CUMEM_ENABLE\", \"1\")\n            # Respect model-level runner declarations before resolving auto.\n            resolved_runner = resolved_view(self).moe_runner_backend\n            if resolved_runner == \"auto\":\n                self._declare(\"_handle_a2a_moe\", moe_runner_backend=\"deep_gemm\")\n                logger.warning(\n                    \"DeepEP v2 MoE: resolved --moe-runner-backend auto -> deep_gemm.\"\n                )\n            elif resolved_runner != \"deep_gemm\":\n                raise ValueError(\n                    \"DeepEP v2 MoE currently supports only \"\n                    f\"--moe-runner-backend deep_gemm. Got {resolved_runner!r}. \"\n                    \"Add a runner adapter before enabling DeepEP v2 with other \"\n                    \"MoE runners.\"\n                )\n            if cfg.enable_two_batch_overlap or cfg.enable_single_batch_overlap:\n                raise ValueError(\n                    \"DeepEP v2 MoE has not implemented the TBO/SBO overlap hooks yet. \"\n                    \"Disable --enable-two-batch-overlap and \"\n                    \"--enable-single-batch-overlap when using --moe-a2a-backend deepep_v2.\"\n                )\n            if cfg.enforce_shared_experts_fusion:\n                raise ValueError(\n                    \"DeepEP v2 MoE has not validated fused shared experts yet. \"\n                    \"Remove --enforce-shared-experts-fusion when using \"\n                    \"--moe-a2a-backend deepep_v2.\"\n                )\n            # Prefill reads host counts and is not graph-capturable.","sourceCodeStart":7699,"sourceCodeEnd":7735,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L7699-L7735","documentation":"Raised when deepep_v2 is used with a --moe-runner-backend other than deep_gemm. Only the deep_gemm runner has been adapted to DeepEP v2's dispatch/combine contract; 'auto' is silently coerced to deep_gemm, but any other explicit runner (triton, flashinfer_trtllm, etc.) is rejected.","triggerScenarios":"Launching with --moe-a2a-backend deepep_v2 and an explicit --moe-runner-backend like triton or flashinfer_trtllm.","commonSituations":"Porting a tuned FP8/FP4 serving config that pinned a specific runner (e.g. flashinfer for FP4) onto a deepep_v2 deployment; overriding the runner per-environment without knowing the v2 restriction.","solutions":["Remove the --moe-runner-backend override so 'auto' resolves to deep_gemm","Set --moe-runner-backend deep_gemm explicitly","If you need a different runner, switch to --moe-a2a-backend deepep until an adapter is added"],"exampleFix":"# before\n--moe-a2a-backend deepep_v2 --moe-runner-backend flashinfer_trtllm\n# after\n--moe-a2a-backend deepep_v2 --moe-runner-backend deep_gemm","handlingStrategy":"validation","validationCode":"if a2a_backend == \"deepep_v2\" and moe_runner_backend not in (None, \"auto\", \"deep_gemm\"):\n    raise SystemExit(f\"deepep_v2 supports only deep_gemm runner, got {moe_runner_backend}\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Don't pin --moe-runner-backend in shared scripts; let auto resolve","Document the deepep_v2 -> deep_gemm constraint next to runner overrides"],"tags":["moe","deepep","runner-backend","deep-gemm","server-args"],"backgroundTag":"unsupported-configuration-combo","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}