{"record":{"id":"1248d32ec7635451","repo":"vllm-project/vllm","slug":"elastic-ep-is-not-compatible-with-data-parallel-ex","errorCode":null,"errorMessage":"Elastic EP is not compatible with data_parallel_external_lb or data_parallel_hybrid_lb. Elastic EP relies on a single API server and core client to coordinate scale up/down.","messagePattern":"Elastic EP is not compatible with data_parallel_external_lb or data_parallel_hybrid_lb\\. Elastic EP relies on a single API server and core client to coordinate scale up/down\\.","errorType":"validation","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"vllm/config/parallel.py","lineNumber":852,"sourceCode":"            self.pipeline_parallel_size\n            * self.tensor_parallel_size\n            * self.prefill_context_parallel_size\n        )\n\n        if self.distributed_executor_backend == \"external_launcher\":\n            logger.info(\"Using external launcher for distributed inference.\")\n            self.world_size *= self.data_parallel_size\n\n        if self.enable_elastic_ep:\n            if not self.enable_eplb:\n                raise ValueError(\"Elastic EP is only supported with enable_eplb=True.\")\n            if self.pipeline_parallel_size > 1:\n                raise ValueError(\n                    \"Elastic EP is not supported with pipeline parallelism \"\n                    f\"(pipeline_parallel_size={self.pipeline_parallel_size}).\"\n                )\n            if self.data_parallel_external_lb or self.data_parallel_hybrid_lb:\n                raise NotImplementedError(\n                    \"Elastic EP is not compatible with data_parallel_external_lb \"\n                    \"or data_parallel_hybrid_lb. Elastic EP relies on a single API \"\n                    \"server and core client to coordinate scale up/down.\"\n                )\n            if self.eplb_config.use_async:\n                from vllm.distributed.nixl_utils import is_nixl_available\n\n                if not is_nixl_available():\n                    raise ValueError(\n                        \"Elastic EP with async EPLB requires the NIXL \"\n                        \"package. Either install NIXL or set \"\n                        \"--eplb-config.use_async=false.\"\n                    )\n\n        if self.data_parallel_size > 1 or self.data_parallel_size_local == 0:\n            # Data parallel was specified in the engine args.\n            if self.distributed_executor_backend == \"external_launcher\":\n                # For external launcher,","sourceCodeStart":834,"sourceCodeEnd":870,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/config/parallel.py#L834-L870","documentation":"Elastic EP relies on one API server and core client to coordinate scaling, which is incompatible with the external/hybrid data-parallel load balancer modes where request routing is owned outside the engine. This path raises NotImplementedError, marking an unimplemented combination rather than a user typo.","triggerScenarios":"Launching with --enable-elastic-ep together with --data-parallel-external-lb or --data-parallel-hybrid-lb.","commonSituations":"Production DP deployments fronted by an external LB attempting to add elastic MoE scaling; config templates combining all 'advanced' flags at once.","solutions":["Disable the external/hybrid LB flags (run with a single API server routing to DP ranks internally) when using elastic EP.","Or disable --enable-elastic-ep and keep the external LB architecture with static EP sizing.","Watch vLLM release notes; this combination may be implemented later."],"exampleFix":"# before\nvllm serve model --enable-elastic-ep --data-parallel-external-lb\n# after\nvllm serve model --enable-elastic-ep","handlingStrategy":"validation","validationCode":"def elastic_ep_lb_valid(enable_elastic_ep: bool, ext_lb: bool, hybrid_lb: bool) -> bool:\n    return not enable_elastic_ep or not (ext_lb or hybrid_lb)\n\nassert elastic_ep_lb_valid(True, False, False)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Maintain two mutually exclusive deployment profiles: external/hybrid LB, or elastic EP — never both.","Validate the flag combination in CI with a dry-run config parse before shipping launch scripts."],"tags":["elastic-ep","load-balancing","data-parallel","not-implemented","configuration"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}