vllm-project/vllm · error · ValueError
data_parallel_size_local ({self.data_parallel_size_local}) m
Error message
data_parallel_size_local ({self.data_parallel_size_local}) must be <= data_parallel_size ({self.data_parallel_size}) What it means
data_parallel_size_local bounds how many of the data-parallel ranks run on this node. ParallelConfig rejects it when it exceeds the total data_parallel_size, since a per-node count cannot be larger than the global count.
Source
Thrown at vllm/config/parallel.py:476
)
if self.enable_fault_tolerance and self._api_process_count > 1:
raise ValueError(
"Fault tolerance requires a single API server process "
f"(--api-server-count=1), but got {self._api_process_count}. "
"The FT system assumes one AsyncMPClient manages all engines."
)
if self.all2all_backend in ["pplx", "naive"]:
logger.warning(
"The '%s' all2all backend has been removed. "
"Falling back to 'allgather_reducescatter'.",
self.all2all_backend,
)
self.all2all_backend = "allgather_reducescatter"
if self.data_parallel_size_local > self.data_parallel_size:
raise ValueError(
f"data_parallel_size_local ({self.data_parallel_size_local}) "
f"must be <= data_parallel_size ({self.data_parallel_size})"
)
if self.data_parallel_size <= 1 and self.data_parallel_external_lb:
raise ValueError(
"data_parallel_external_lb can only be set when data_parallel_size > 1"
)
if not self.numa_bind and (
self.numa_bind_nodes is not None or self.numa_bind_cpus is not None
):
raise ValueError(
"numa_bind_nodes and numa_bind_cpus require numa_bind=True."
)
if self.enable_eplb:
if not current_platform.is_cuda_alike():View on GitHub (pinned to c794754062)
Solutions
- Raise --data-parallel-size to at least the local value, e.g. --data-parallel-size 4 --data-parallel-size-local 4.
- Or lower --data-parallel-size-local so it is <= data_parallel_size.
- Leave data_parallel_size_local unset (0) on single-node setups so vLLM treats all DP ranks as local.
Example fix
# before --data-parallel-size 2 --data-parallel-size-local 4 # after --data-parallel-size 4 --data-parallel-size-local 4
Defensive patterns
Strategy: validation
Validate before calling
def dp_sizes_valid(dp_size: int, dp_size_local: int) -> bool:
return dp_size_local <= dp_size
assert dp_sizes_valid(4, 4) Prevention
- On single nodes, leave --data-parallel-size-local unset.
- Derive dp_size from sum of per-node local values in multi-node scripts so they cannot diverge.
When it happens
Trigger: Passing --data-parallel-size-local greater than --data-parallel-size, e.g. local=4 with size=2.
Common situations: Editing a multi-node launch script and shrinking --data-parallel-size without updating the local value; assuming data_parallel_size_local is an independent knob rather than a sub-count of the global DP size.
Related errors
- data_parallel_external_lb can only be set when data_parallel
- PCP does not support data parallelism yet.
- data_parallel_rank ({self.data_parallel_rank}) must be in th
- nnodes > 1 can only be set when distributed executor backend
- data parallel rank {rank} is not connected to this frontend;
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/946da0b106720962.
Report an issue: GitHub.