{"record":{"id":"90ccfca621309254","repo":"sgl-project/sglang","slug":"moe-a2a-backend-pplx-only-supports-low-latency-m","errorCode":null,"errorMessage":"moe_a2a_backend='pplx' only supports low-latency mode; set --deepep-mode to 'low_latency' or 'auto'.","messagePattern":"moe_a2a_backend='pplx' only supports low-latency mode; set --deepep-mode to 'low_latency' or 'auto'\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":7809,"sourceCode":"                    deepep_mode=\"normal\",\n                )\n                logger.warning(\"auto set deepep_mode=`normal` for MORI EP\")\n\n            # Check chunked prefill for mori\n            # Skip validation if chunked prefill is disabled (i.e., size <= 0).\n            # Skip validation if disaggregation mode is decode.\n            if cfg.chunked_prefill_size > 0 and cfg.disaggregation_mode != \"decode\":\n                assert (\n                    self._required_mori_dispatch_tokens_per_rank()\n                ) <= envs.SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK.get(), (\n                    \"SGLANG_MORI_NUM_MAX_DISPATCH_TOKENS_PER_RANK (default 4096) \"\n                    \"must be >= the per-rank MoRI dispatch tokens \"\n                    \"(chunked_prefill_size by default)\"\n                )\n\n        if a2a_backend == \"pplx\":\n            if cfg.deepep_mode == \"normal\":\n                raise ValueError(\n                    \"moe_a2a_backend='pplx' only supports low-latency mode; \"\n                    \"set --deepep-mode to 'low_latency' or 'auto'.\"\n                )\n            if cfg.deepep_mode == \"auto\":\n                self._declare(\n                    \"_handle_a2a_moe\",\n                    deepep_mode=\"low_latency\",\n                )\n                logger.warning(\"auto set deepep_mode=`low_latency` for PPLX EP\")\n            # pplx-kernels' AllToAll needs numDPGroups (== attention dp_size) > 1;\n            # without DP attention numDPGroups == 1 and construction fails deep in\n            # the kernel. This also implies ep_size >= 2.\n            assert resolved_view(self).enable_dp_attention and cfg.dp_size >= 2, (\n                \"moe_a2a_backend='pplx' requires --enable-dp-attention with at \"\n                \"least 2 DP groups (--dp-size >= 2).\"\n            )\n            # pplx runs the masked DeepGEMM expert path (sm_90a): reject other\n            # runners and resolve auto -> deep_gemm. Unquantized bf16 pplx needs","sourceCodeStart":7791,"sourceCodeEnd":7827,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L7791-L7827","documentation":"Raised when --moe-a2a-backend pplx is used with --deepep-mode normal. The pplx (ParallelRL) a2a backend only implements the low-latency masked dispatch path. 'auto' mode is auto-declared to low_latency, so only an explicit 'normal' triggers the error.","triggerScenarios":"Launching with --moe-a2a-backend pplx and --deepep-mode normal.","commonSituations":"Migrating a pplx-based RL serving stack onto a config template that pinned --deepep-mode normal for prefill-heavy workloads; mixing flags from different deployment playbooks.","solutions":["Set --deepep-mode low_latency","Set --deepep-mode auto (resolver forces low_latency for pplx)","If normal-mode dispatch is required, use --moe-a2a-backend deepep instead of pplx"],"exampleFix":"# before\n--moe-a2a-backend pplx --deepep-mode normal\n# after\n--moe-a2a-backend pplx --deepep-mode low_latency","handlingStrategy":"validation","validationCode":"if a2a_backend == \"pplx\" and deepep_mode == \"normal\":\n    deepep_mode = \"low_latency\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use --deepep-mode auto with pplx so the resolver picks correctly","Keep a matrix of a2a-backend vs supported deepep modes in deployment docs"],"tags":["pplx","deepep-mode","moe","a2a-backend","server-args"],"backgroundTag":"unsupported-configuration-combo","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}