@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 5f1de2b14b
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 5, 13:30 UTC

[Model Runner V2] Add config validation for not-yet-supported features (#38758)

Signed-off-by: Nick Hill <nickhill123@gmail.com>

Nick Hill committed Apr 3, 2026 at 12:08 UTC 5f1de2b14b1daece3eb2a1768563e7f84bf1aa99
2 files changed +46 -1
.buildkite/test_areas/model_runner_v2.yaml
-1
@@ -78,7 +78,6 @@ steps:
78 - TP_SIZE=1 DP_SIZE=2 pytest -v -s v1/distributed/test_async_llm_dp.py -k "not ray"
79 - TP_SIZE=1 DP_SIZE=2 pytest -v -s v1/distributed/test_eagle_dp.py
80
81 -# These require fix https://github.com/vllm-project/vllm/pull/36280
81 - label: Model Runner V2 Pipeline Parallelism (4 GPUs)
82 timeout_in_minutes: 60
83 working_dir: "/vllm-workspace/tests"
vllm/config/vllm.py
+46
@@ -1106,6 +1106,9 @@ class VllmConfig:
1106 )
1107 current_platform.check_and_update_config(self)
1108
1109 + if envs.VLLM_USE_V2_MODEL_RUNNER:
1110 + self._validate_v2_model_runner()
1111 +
1112 # Re-compute compile ranges after platform-specific config updates
1113 # (e.g., XPU may lower max_num_batched_tokens when MLA is enabled)
1114 self._set_compile_ranges()
@@ -1729,6 +1732,49 @@ class VllmConfig:
1732 f"kernel_config={self.kernel_config!r}"
1733 )
1734
1735 + def _validate_v2_model_runner(self) -> None:
1736 + """Check for features not yet supported by the V2 model runner."""
1737 + unsupported: list[str] = []
1738 +
1739 + if self.model_config is not None and self.model_config.has_inner_state:
1740 + unsupported.append("hybrid/mamba models")
1741 +
1742 + if self.parallel_config.prefill_context_parallel_size > 1:
1743 + unsupported.append("prefill context parallelism")
1744 +
1745 + if (
1746 + self.speculative_config is not None
1747 + and self.speculative_config.method not in ("eagle", "eagle3", "mtp")
1748 + ):
1749 + unsupported.append(f"speculative method '{self.speculative_config.method}'")
1750 +
1751 + if self.parallel_config.enable_dbo:
1752 + unsupported.append("dual batch overlap")
1753 +
1754 + if (
1755 + self.model_config is not None
1756 + and self.model_config.enable_return_routed_experts
1757 + ):
1758 + # Will be added by https://github.com/vllm-project/vllm/pull/38163
1759 + unsupported.append("routed experts capture")
1760 +
1761 + if self.model_config is not None and self.model_config.logits_processors:
1762 + unsupported.append("custom logits processors")
1763 +
1764 + if self.cache_config.kv_sharing_fast_prefill:
1765 + # Will be added by https://github.com/vllm-project/vllm/pull/35045
1766 + unsupported.append("KV sharing fast prefill")
1767 +
1768 + if self.ec_transfer_config is not None:
1769 + # Will be added by https://github.com/vllm-project/vllm/pull/38390
1770 + unsupported.append("EC transfer")
1771 +
1772 + if unsupported:
1773 + raise ValueError(
1774 + "VLLM_USE_V2_MODEL_RUNNER does not yet support: "
1775 + + ", ".join(unsupported)
1776 + )
1777 +
1778 def validate_block_size(self) -> None:
1779 """Validate block_size against DCP and mamba constraints.
1780