[Bugfix] Fix `--data-parallel-start-rank 0` being treated as unset in `create_engine_config` (#47692)
Signed-off-by: Syed Ali Jaseem <syedali0057@gmail.com> Co-authored-by: Claude <noreply@anthropic.com>
Ali Jaseem committed
Aug 13, 2026 at 10:12 UTC
64ca614fe49bfce92b0f5eb69625021297a7e003
2 files changed
+21
-2
tests/v1/engine/test_engine_args.py
+17
@@ -99,3 +99,20 @@ def test_mm_prefix_lm_raises_batched_tokens_floor():
99
vllm_config = engine_args.create_engine_config(UsageContext.OPENAI_API_SERVER)
100
101
assert vllm_config.scheduler_config.max_num_batched_tokens >= 2496
102
+
103
+
104
+def test_data_parallel_start_rank_zero_infers_hybrid_lb():
105
+ """An explicit --data-parallel-start-rank 0 must be treated the same as
106
+ any other explicit start rank when inferring hybrid LB mode, not as
107
+ "unset" (regression test for a truthiness-vs-`is not None` bug).
108
+ """
109
+ engine_args = EngineArgs(
110
+ model="facebook/opt-125m",
111
+ data_parallel_size=4,
112
+ data_parallel_size_local=2,
113
+ data_parallel_start_rank=0,
114
+ )
115
+ vllm_config = engine_args.create_engine_config(UsageContext.OPENAI_API_SERVER)
116
+
117
+ assert vllm_config.parallel_config.data_parallel_hybrid_lb is True
118
+ assert vllm_config.parallel_config.data_parallel_rank == 0
vllm/engine/arg_utils.py
+4
-2
@@ -2158,7 +2158,7 @@ class EngineArgs:
2158
elif self.data_parallel_size_local is not None:
2159
data_parallel_size_local = self.data_parallel_size_local
2160
2161
- if self.data_parallel_start_rank and not headless:
2161
+ if self.data_parallel_start_rank is not None and not headless:
2162
# Infer hybrid LB mode.
2163
self.data_parallel_hybrid_lb = True
2164
@@ -2177,7 +2177,9 @@ class EngineArgs:
2177
self.data_parallel_hybrid_lb = False
2178
2179
self.data_parallel_rank = (
2180
- self.data_parallel_start_rank or inferred_data_parallel_rank
2180
+ self.data_parallel_start_rank
2181
+ if self.data_parallel_start_rank is not None
2182
+ else inferred_data_parallel_rank
2183
)
2184
if self.nnodes > 1:
2185
logger.info(