{"record":{"id":"04d948dbbb82c29a","repo":"sgl-project/sglang","slug":"invalid-deepep-mode-self-deepep-mode","errorCode":null,"errorMessage":"Invalid deepep_mode: {self.deepep_mode}","messagePattern":"Invalid deepep_mode: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/layers/moe/token_dispatcher/deepep.py","lineNumber":1007,"sourceCode":"            topk_weights=topk_weights,\n        )\n        self._combine_intermediate_state = inner_state\n\n    def combine_b(self):\n        self._update_stage(_Stage.AFTER_COMBINE_A, _Stage.INITIAL)\n        inner_state = self._combine_intermediate_state\n        del self._combine_intermediate_state\n        return self._get_impl().combine_b(*inner_state)\n\n    def _get_impl(self) -> _DeepEPDispatcherImplBase:\n        is_extend_in_batch = get_is_extend_in_batch()\n        resolved_deepep_mode = self.deepep_mode.resolve(is_extend_in_batch)\n        if resolved_deepep_mode == DeepEPMode.NORMAL:\n            return self._normal_dispatcher\n        elif resolved_deepep_mode == DeepEPMode.LOW_LATENCY:\n            return self._low_latency_dispatcher\n        else:\n            raise ValueError(f\"Invalid deepep_mode: {self.deepep_mode}\")\n\n    def _update_stage(self, old_stage, new_stage):\n        assert self._stage == old_stage\n        self._stage = new_stage\n\n    def set_quant_config(self, quant_config: dict):\n        super().set_quant_config(quant_config)\n        if self.deepep_mode.enable_low_latency():\n            self._low_latency_dispatcher.set_quant_config(quant_config)\n        if self.deepep_mode.enable_normal():\n            self._normal_dispatcher.set_quant_config(quant_config)\n\n    def set_overlap_args(\n        self, combine_overlap_args: CombineOverlapArgs, meta_overlap_args: dict\n    ):\n        super().set_overlap_args(combine_overlap_args, meta_overlap_args)\n        if self.deepep_mode.enable_low_latency():\n            self._low_latency_dispatcher.set_overlap_args(","sourceCodeStart":989,"sourceCodeEnd":1025,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/layers/moe/token_dispatcher/deepep.py#L989-L1025","documentation":"DeepEPTokenDispatcher._get_impl selects the normal or low-latency sub-dispatcher based on the per-batch resolved DeepEPMode (auto mode resolves extend-vs-decode per batch). Any resolved value other than NORMAL or LOW_LATENCY — notably an unresolved AUTO — raises this ValueError. Called from dispatch_a/b and combine_a/b, so it fires at the first token step.","triggerScenarios":"self.deepep_mode.resolve(is_extend_in_batch) returning AUTO (custom/patched resolve, or a DeepEPMode constructed oddly), or a new enum member added without updating this if-chain; fires on the first dispatch call after construction/CUDA-graph capture.","commonSituations":"Version skew between sglang packages (python vs sgl-kernel vs a fork) where DeepEPMode gained new members; user subclasses overriding resolve(); pickled state from an older version.","solutions":["Upgrade SGLang so all components share one DeepEPMode definition","Pass an explicit non-auto mode: --deepep-mode normal or --deepep-mode low_latency instead of auto, bypassing the ambiguous resolve","If you added a DeepEPMode member, extend _get_impl to map it to a sub-dispatcher"],"exampleFix":"# before\n--deepep-mode auto   # resolve() yields AUTO -> ValueError in _get_impl\n\n# after\n--deepep-mode low_latency  # or normal; explicit mode","handlingStrategy":"validation","validationCode":"from sglang.srt.layers.moe.token_dispatcher.deepep import DeepEPMode\nif deepep_mode == DeepEPMode.AUTO:\n    deepep_mode = DeepEPMode.AUTO_LOW_LATENCY  # or pass explicit --deepep-mode low_latency","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Prefer explicit --deepep-mode over auto in production","Upgrade all sglang components together to keep DeepEPMode in sync"],"tags":["deepep","moe","dispatcher","enum","validation","version-skew"],"backgroundTag":"unsupported-enum-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}