vllm-project/vllm · error · ValueError
Recipe deploy_type={deploy_type!r} is not a single-node depl
Error message
Recipe deploy_type={deploy_type!r} is not a single-node deployment. A single config.yml would not fully represent this deployment. What it means
recipe_argv() accepts a recipe's 'argv' field only for single-node deployments. If the recipe object has an 'argv' list but its deploy_type is anything other than None or 'single_node' (e.g. 'multi_node', 'ray_cluster'), the tool refuses to emit one config.yml, since a single node config cannot faithfully represent a distributed deployment.
Source
Thrown at tools/recipes/recipe_json_to_vllm_config.py:550
# --no-enable-prefix-caching -> no-enable-prefix-caching: true
value: Any = True
elif len(raw_values) == 1:
value = coerce(raw_values[0])
else:
value = [coerce(v) for v in raw_values]
merge_value(config, normalize_key(key), value)
return config
def recipe_argv(recipe: dict[str, Any]) -> list[Any]:
deploy_type = recipe.get("deploy_type")
# Current Recipes API's single-node rendering exposes `argv`.
if isinstance(recipe.get("argv"), list):
if deploy_type not in (None, "single_node"):
raise ValueError(
f"Recipe deploy_type={deploy_type!r} is not a single-node deployment. "
"A single config.yml would not fully represent this deployment."
)
return recipe["argv"]
# Give a useful failure for other known rendered shapes.
multi_process_fields = [
k
for k in (
"head_argv",
"worker_argv",
"worker_argvs",
"prefill",
"decode",
"vllm_argv",
)
if k in recipe
]View on GitHub (pinned to c794754062)
Solutions
- Check jq '.deploy_type' recipe.json — if it is not single_node/None, this recipe cannot be converted by this tool
- Pick the single-node (usually single GPU or single node multi-GPU) hardware rendering for the model instead
- For multi-node recipes, follow the Recipes API's own deployment instructions rather than generating config.yml
- If you truly have a single-node deployment mislabeled in the JSON, fix deploy_type in the recipe
Example fix
# before
{"deploy_type": "multi_node", "argv": ["vllm","serve","m","--tp","8"]}
# after
{"deploy_type": "single_node", "argv": ["vllm","serve","m","--tp","8"]} Defensive patterns
Strategy: validation
Validate before calling
dt = recipe.get("deploy_type")
if "argv" in recipe and dt not in (None, "single_node"):
raise SystemExit(f"deploy_type={dt!r} cannot be converted to one config.yml") Type guard
def is_single_node_recipe(recipe: dict) -> bool:
return recipe.get("deploy_type") in (None, "single_node") and isinstance(recipe.get("argv"), list) Prevention
- Filter recipes by deploy_type before feeding them to the converter
- Reserve this tool for single-node recipes; multi-node goes through dedicated deployment flows
When it happens
Trigger: Passing a recipe JSON whose deploy_type is multi-node/multi-process but which still carries an 'argv' field (some renderings include a representative head-node argv). The converter checks deploy_type first and fails fast.
Common situations: Selecting a multi-node recipe (e.g. Ray or deep-seek style P/D deployments) from the Recipes API; hand-passing a cluster recipe file to a tool explicitly designed for single config.yml generation.
Related errors
- This recipe is a multi-process deployment and cannot be repr
- Selected model {model.get('hf_id')!r} has no JSON API path.
- {model_json_url} did not return a JSON object.
- Model {model.get('hf_id')!r} has no rendered recommended_com
- Model {model.get('hf_id')!r} has no per-hardware renderings
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/b5012116d64993be.
Report an issue: GitHub.