[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>
This commit is contained in:
Ali Jaseem
2026-08-13 15:12:26 +00:00
committed by GitHub
co-authored by Claude
parent 80d6d557f3
commit 64ca614fe4
2 changed files with 21 additions and 2 deletions
+17
View File
@@ -99,3 +99,20 @@ def test_mm_prefix_lm_raises_batched_tokens_floor():
vllm_config = engine_args.create_engine_config(UsageContext.OPENAI_API_SERVER)
assert vllm_config.scheduler_config.max_num_batched_tokens >= 2496
def test_data_parallel_start_rank_zero_infers_hybrid_lb():
"""An explicit --data-parallel-start-rank 0 must be treated the same as
any other explicit start rank when inferring hybrid LB mode, not as
"unset" (regression test for a truthiness-vs-`is not None` bug).
"""
engine_args = EngineArgs(
model="facebook/opt-125m",
data_parallel_size=4,
data_parallel_size_local=2,
data_parallel_start_rank=0,
)
vllm_config = engine_args.create_engine_config(UsageContext.OPENAI_API_SERVER)
assert vllm_config.parallel_config.data_parallel_hybrid_lb is True
assert vllm_config.parallel_config.data_parallel_rank == 0
+4 -2
View File
@@ -2158,7 +2158,7 @@ class EngineArgs:
elif self.data_parallel_size_local is not None:
data_parallel_size_local = self.data_parallel_size_local
if self.data_parallel_start_rank and not headless:
if self.data_parallel_start_rank is not None and not headless:
# Infer hybrid LB mode.
self.data_parallel_hybrid_lb = True
@@ -2177,7 +2177,9 @@ class EngineArgs:
self.data_parallel_hybrid_lb = False
self.data_parallel_rank = (
self.data_parallel_start_rank or inferred_data_parallel_rank
self.data_parallel_start_rank
if self.data_parallel_start_rank is not None
else inferred_data_parallel_rank
)
if self.nnodes > 1:
logger.info(