vllm-project/vllm · error · ValueError
Invalid numeric value '{number_str}' in: '{value}'
Error message
Invalid numeric value '{number_str}' in: '{value}' What it means
After the format regex matches, _parse_size converts the captured numeric group with float(); failure raises this ValueError. In practice the regex ([\d.]+) already excludes most bad input, so this fires on edge cases like "." alone or "1.2.3" that match the regex but are not valid floats.
Source
Thrown at vllm/distributed/kv_transfer/kv_connector/v1/mooncake/store/worker.py:222
unit_multipliers = {
"gb": 1024**3,
"mb": 1024**2,
"kb": 1024,
"b": 1,
}
match = re.match(r"^\s*([\d.]+)\s*(gb|mb|kb|b)?\s*$", cleaned)
if not match:
raise ValueError(f"Invalid format: '{value}'")
number_str = match.group(1)
unit = match.group(2) or "b"
multiplier = unit_multipliers[unit]
try:
numeric_value = float(number_str)
except ValueError as exc:
raise ValueError(f"Invalid numeric value '{number_str}' in: '{value}'") from exc
return int(numeric_value * multiplier)
def _align_up(value: int, alignment: int) -> int:
return ((value + alignment - 1) // alignment) * alignment
def _estimate_disk_offload_staging_bytes(size_list: list[int]) -> int:
data_size = sum(size_list)
return _align_up(data_size, _DIRECT_IO_ALIGNMENT) + _DIRECT_IO_PADDING_BYTES
def _sum_batch_bytes(sizes: list[list[int]]) -> int:
return sum(sum(size) for size in sizes)
def _get_usable_disk_offload_buffer_budget_bytes(raw_budget_bytes: int) -> int:
return max(1, int(raw_budget_bytes * envs.VLLM_MOONCAKE_DISK_STAGING_USABLE_RATIO))View on GitHub (pinned to c794754062)
Solutions
- Write the number in plain decimal form: "1.5GB" or "1024MB"
- Or use an integer byte count
Example fix
// before
{ "local_buffer_size": "1.2.3GB" }
// after
{ "local_buffer_size": "1.5GB" } Defensive patterns
Strategy: validation
Validate before calling
num = str(raw.get(key)).strip().lower().rstrip("gbmkb ")
try:
float(num)
except ValueError:
raise ValueError(f"{key} numeric part {num!r} is not a valid number") Prevention
- Use single-dot decimals only ("1.5GB"), never multiple dots
- Prefer integer byte counts for machine-generated configs
When it happens
Trigger: Values like ".", "1.2.3", or "..." in size fields — multiple dots that slip through the character-class regex.
Common situations: Truncated copy-paste of a size string; hand-editing that leaves stray dots.
Related errors
- Unsupported type for size: {type(value)}
- Size cannot be empty.
- Invalid format: '{value}'
- numa_bind_cpus entries must not be empty.
- Mooncake Transfer Engine initialization failed.
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/ce548fbd33fdac47.
Report an issue: GitHub.