vllm-project/vllm · error · ValueError

Model Runner V2 does not yet support: {', '.join(unsupported

Error message

Model Runner V2 does not yet support: {', '.join(unsupported)}

What it means

The V2 model runner has a curated list of not-yet-supported features (built by `_get_v2_model_runner_unsupported_features`, e.g. prompt embeds, KV sharing fast prefill, and others). If any of them is enabled, `_validate_v2_model_runner` raises with the comma-separated list so the user knows exactly what to disable.

Source

Thrown at vllm/config/vllm.py:2486

            unsupported.append("custom logits processors")

        if model_config is not None and model_config.enable_prompt_embeds:
            unsupported.append("prompt embeds")

        if self.cache_config.kv_sharing_fast_prefill:
            # Will be added by https://github.com/vllm-project/vllm/pull/35045
            unsupported.append("KV sharing fast prefill")

        return unsupported

    def _validate_v2_model_runner(self) -> None:
        """Check for features not yet supported by the V2 model runner."""
        if not HAS_TRITON:
            raise ValueError("Model Runner V2 requires Triton.")

        unsupported = self._get_v2_model_runner_unsupported_features()
        if unsupported:
            raise ValueError(
                f"Model Runner V2 does not yet support: {', '.join(unsupported)}"
            )

    def validate_block_size(self) -> None:
        """Validate block_size against DCP and mamba constraints.

        Called after Platform.update_block_size_for_backend() has
        finalised block_size.
        """
        block_size = self.cache_config.block_size

        # DCP interleave-size compatibility
        if self.parallel_config.decode_context_parallel_size > 1:
            if self.parallel_config.dcp_kv_cache_interleave_size > 1 and (
                self.parallel_config.cp_kv_cache_interleave_size
                != self.parallel_config.dcp_kv_cache_interleave_size
            ):
                self.parallel_config.cp_kv_cache_interleave_size = (

View on GitHub (pinned to c794754062)

Solutions

  1. Disable each feature named in the error message (e.g. drop `--kv-sharing-fast-prefill`, unset prompt embeds).
  2. Or switch back to the legacy runner with `VLLM_USE_V2_MODEL_RUNNER=0` until the feature is ported.
  3. Check `_get_v2_model_runner_unsupported_features()` for your installed version to plan flag combinations.

Example fix

# before (error: 'Model Runner V2 does not yet support: KV sharing fast prefill')
VLLM_USE_V2_MODEL_RUNNER=1 vllm serve model --kv-sharing-fast-prefill

# after
VLLM_USE_V2_MODEL_RUNNER=1 vllm serve model
Defensive patterns

Strategy: validation

Validate before calling

cfg = VllmConfig._get_v2_model_runner_unsupported_features  # introspect if accessible
# practical guard: mirror the known list
UNSUPPORTED = []
if model_config.enable_prompt_embeds: UNSUPPORTED.append("prompt embeds")
if cache_config.kv_sharing_fast_prefill: UNSUPPORTED.append("KV sharing fast prefill")
if use_v2 and UNSUPPORTED: use_v2 = False

Try / catch

try:
    LLM(**args)
except ValueError as e:
    if "Model Runner V2 does not yet support" in str(e):
        os.environ["VLLM_USE_V2_MODEL_RUNNER"] = "0"
    else:
        raise

Prevention

When it happens

Trigger: Running with the V2 model runner while any feature in the unsupported list is active — e.g. `enable_prompt_embeds=True` or `--kv-sharing-fast-prefill`.

Common situations: Opting into the newer V2 runner (or a default flip after upgrade) while a launch config still enables a feature the V1 runner supported; version upgrades that change the unsupported list.

Related errors


AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14). Data as JSON: /api/errors/da64bc2cebb36ecc. Report an issue: GitHub.