Repository navigation
[Core] Remove Model Runner V1 - #63373
WoosukKwon wants to merge 1 commit into
Conversation
Delete the V1 GPU model runner and everything only it used: the V1 input batch and ubatch wrapper, the V1 spec-decode proposers, the V1 sampler/rejection sampler and V1 custom logits-processor API, the CPU V1 runner and its no-Triton kernel overrides, and the VLLM_USE_V2_MODEL_RUNNER env var / VllmConfig.use_v2_model_runner. Features that only worked on V1 are dropped: suffix and custom_class speculative methods, heterogeneous-vocab drafts, disable_padded_drafter_batch, parallel drafting outside dflash/dspark (P-EAGLE, PARD), PP with external_launcher, Triton ReplaySSM, NGramPerReqLogitsProcessor, and CPU without Triton. DBO now runs on the remaining runner by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Woosuk Kwon <woosuk@inferact.ai>
|
Documentation preview: https://vllm--63373.org.readthedocs.build/en/63373/ |
|
This pull request has merge conflicts that must be resolved before it can be |
Look up VllmConfig._validate_v2_model_runner / _get_v2_model_runner_unsupported_features or the renamed _validate_model_runner / _get_model_runner_unsupported_features (vllm-project/vllm#63373) when installing the Metal MRV2 validation patch, and fail with a clear error if neither exists. Parametrize the patch tests over both names. Signed-off-by: suntp <20786998+suntp@users.noreply.github.com>
|
Thanks for the preview. A question from an out-of-tree platform before this lands. vllm-openvino ships its own worker and model runner (OpenVINO executes the model). It cannot use Triton, which is incompatible with OpenVINO, so it runs on MRV1. Of what it imports from #61995 lets CPU backends without Triton override MRV2 components with PyTorch implementations, but this PR drops "vLLM on CPU without Triton".
Context: #57684 (same question, still open), #58703 (parked until this removal plan). |
Overview
Draft / preview. This PR removes Model Runner V1 (MRV1). MRV2 is already the default. MRV1 was only reached through an explicit
VLLM_USE_V2_MODEL_RUNNER=0or by falling back for features MRV2 lacks. This PR deletes MRV1 together with the code that existed only for it. Features that only worked on MRV1 are dropped rather than ported. Dual Batch Overlap is kept and now runs on MRV2 by default.Test cleanup is still in progress and will follow in a separate commit on this branch.
Claims
gpu_model_runner.py(7.2K lines),gpu_input_batch.py,gpu_ubatch_wrapper.py,cpu_model_runner.py, the KV/EC connector runner mixins, and the V1BlockTable.vllm/v1/spec_decode/{eagle,dflash,draft_model,ngram*,suffix_decoding,custom_class_proposer,...}.py) and their Triton kernels.vllm/v1/sample/logits_processor/).vllm.v1.worker.gpu.sample.logits_processoris now the only interface.cpu_triton_utilsand the CPU kernel overrides.VLLM_USE_V2_MODEL_RUNNERandVllmConfig.use_v2_model_runnerremoved. Every V1/V2 branch in config, worker, scheduler, warmups, models and connectors now takes the V2 path. The scheduler no longer emitsprev_step_scheduled_req_ids,all_token_idsor resumed requests for V1.suffixandcustom_classspeculative methods, plus thesuffix_decoding_*fieldsuse_heterogeneous_vocab(TLI)disable_padded_drafter_batchparallel_draftingoutsidedflash/dspark(P-EAGLE, PARD)external_launcherNGramPerReqLogitsProcessor(DeepSeek-OCR)--enable-dboonto MRV1 is removed. Combinations DBO still doesn't support raise an error.arctic-inferenceis dropped from the test requirements.Validation
Qwen/Qwen3-0.6Bon 1x GB200, with and withoutngramspec decode: greedy outputs are identical and sensible.ruff check/ruff formaton all touched files: pass. pre-commit passes, except thatpip-compile-xpuwas skipped for the commit. Run on its own, that hook is clean with no changes.Details
Open questions for reviewers:
VLLM_USE_V2_MODEL_RUNNER=0give a targeted error for a release? Today it is just an unknown env var.Follow-ups not included here:
CachedRequestData.resumed_req_ids/all_token_ids, which are now always empty, and the connector branches that read them.vllm/v1/spec_decode/utils.py,mamba_utils.py,kda_metadata._mamba_get_block_table_tensor).GPUModelRunnerlives undervllm/v1/worker/gpu/).Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.
Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.
Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.
Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.
🤖 Generated with Claude Code