{"record":{"id":"cdf938c120a4cab0","repo":"vllm-project/vllm","slug":"num-redundant-experts-is-set-to-self-eplb-config","errorCode":null,"errorMessage":"num_redundant_experts is set to {self.eplb_config.num_redundant_experts} but EPLB is not enabled. Either enable EPLB or unset num_redundant_experts.","messagePattern":"num_redundant_experts is set to (.+?) but EPLB is not enabled\\. Either enable EPLB or unset num_redundant_experts\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"vllm/config/parallel.py","lineNumber":517,"sourceCode":"            if not self.enable_expert_parallel:\n                raise ValueError(\"enable_expert_parallel must be True to use EPLB.\")\n            # The EP group spans the TP x PCP x DP ranks. EPLB therefore needs\n            # TP, PCP, or DP > 1.\n            if (\n                self.tensor_parallel_size\n                * self.prefill_context_parallel_size\n                * self.data_parallel_size\n                <= 1\n            ):\n                raise ValueError(\n                    \"EPLB requires tensor, prefill-context, or data parallelism, \"\n                    f\"but got TP={self.tensor_parallel_size}, \"\n                    f\"PCP={self.prefill_context_parallel_size}, \"\n                    f\"DP={self.data_parallel_size}.\"\n                )\n        else:\n            if self.eplb_config.num_redundant_experts != 0:\n                raise ValueError(\n                    \"num_redundant_experts is set to \"\n                    f\"{self.eplb_config.num_redundant_experts} but EPLB is not \"\n                    \"enabled. Either enable EPLB or unset \"\n                    \"num_redundant_experts.\"\n                )\n\n        tp = self.tensor_parallel_size\n        pcp = self.prefill_context_parallel_size\n        dcp = self.decode_context_parallel_size\n        if pcp > 1 and self.data_parallel_size > 1:\n            raise ValueError(\"PCP does not support data parallelism yet.\")\n        if pcp == 1:\n            # DCP reuses the TP ranks when PCP is disabled.\n            if tp % dcp != 0:\n                raise ValueError(f\"tp_size={tp} must be divisible by dcp_size={dcp}.\")\n        elif dcp not in (1, pcp, tp * pcp):\n            raise ValueError(\n                \"When PCP is enabled, DCP must be disabled, span the PCP \"","sourceCodeStart":499,"sourceCodeEnd":535,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/parallel.py#L499-L535","documentation":"num_redundant_experts is an EPLB-only setting (spare experts used during rebalancing). When enable_eplb is False, ParallelConfig rejects any eplb_config whose num_redundant_experts != 0 to prevent silently ignored redundancy configuration.","triggerScenarios":"Passing an EPLB config JSON with num_redundant_experts > 0 (e.g. --eplb-config '{\"num_redundant_experts\": 8, ...}') without --enable-eplb.","commonSituations":"Sharing an eplb-config file across deployments where some do not enable EPLB; disabling EPLB temporarily for a/b comparison while keeping the config file in the command line.","solutions":["Add --enable-eplb if you actually want redundant experts.","Or remove the eplb-config / set num_redundant_experts to 0 in the JSON when EPLB is off."],"exampleFix":"# before\nvllm serve model --eplb-config '{\"num_redundant_experts\": 8}'\n# after\nvllm serve model --enable-eplb --eplb-config '{\"num_redundant_experts\": 8}'","handlingStrategy":"validation","validationCode":"def redundant_experts_valid(enable_eplb: bool, eplb_config) -> bool:\n    return enable_eplb or eplb_config is None or eplb_config.num_redundant_experts == 0","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only reference an eplb-config file in commands that also set --enable-eplb.","Version-control per-deployment config files rather than sharing one EPLB file everywhere."],"tags":["eplb","moe","configuration"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}