Skip to content

[3/N][Feat][Perf] Add new warmup infrastructure for JITs. Add provider registry and orchestration for JIT warmup - #50174

Merged
vllm-bot merged 21 commits into
vllm-project:mainfrom
LopezCastroRoberto:warmup_migration/dsv4_1
Aug 17, 2026
Merged

[3/N][Feat][Perf] Add new warmup infrastructure for JITs. Add provider registry and orchestration for JIT warmup#50174
vllm-bot merged 21 commits into
vllm-project:mainfrom
LopezCastroRoberto:warmup_migration/dsv4_1

Conversation

@LopezCastroRoberto

@LopezCastroRoberto LopezCastroRoberto commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Description

This PR extends the shared JIT warmup infrastructure with provider registration and centralized orchestration. It builds on #49315 and the contract described in #47456.

For more details, see parent (draft) PR: #49627 and tracking list issue #49349

JIT kernel warmup (5 compile keys): 100%|██████████████████████████████████| 1/1 [00:00<00:00, 259.93kernel/s, ComputeSlotMappingKernel (5 keys)]
(Worker_TP0 pid=425015) INFO 08-11 15:43:58 [kernel_warmup.py:120] JIT kernel warmup finished in 0.01s.

Motivation

  • Discover warmup providers from the model and backend objects actually instantiated.
  • Avoid model-name-based lists and warming kernels for inactive backends.
  • Run compilation under kernel_warmup() logging, ordering, progress reporting, and exception handling.
  • Respect enable_jit_warmup.
  • Keep model construction and runtime execution separate from startup compilation.

What Changed

  • Added a scoped registry used while model and KV-cache components are constructed.
  • Added centralized provider deduplication and warmup execution.
  • Added kernel and compile-key progress reporting.
  • Added shared Triton helpers and an initial block-table migration.
  • Added contributor documentation for the warmup contract.
  • Added registry, orchestration, and AST-expansion tests.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@mergify

mergify Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Documentation preview: https://vllm--50174.org.readthedocs.build/en/50174/

@mergify mergify Bot added documentation Improvements or additions to documentation v1 labels Jul 28, 2026
@mergify

mergify Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

This pull request has merge conflicts that must be resolved before it can be
merged. Please rebase the PR, @LopezCastroRoberto.

https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added needs-rebase mrv2 Model Runner V2 specific labels Jul 30, 2026
LopezCastroRoberto and others added 2 commits August 11, 2026 12:34
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
LopezCastroRoberto and others added 4 commits August 11, 2026 13:35
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>

@LucasWilkinson LucasWilkinson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good to me thank you! left one more comment

Comment on lines +36 to +46
if -(1 << 31) <= value < (1 << 31):
divisible_rep = 16
generic_rep = 2
elif -(1 << 63) <= value < (1 << 63):
divisible_rep = 1 << 31
generic_rep = (1 << 31) + 1
elif 0 <= value < (1 << 64):
divisible_rep = 1 << 63
generic_rep = (1 << 63) + 1
else:
raise OverflowError(f"Integer {value} is outside Triton's scalar range")

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please document or clarify these magic values?

@LopezCastroRoberto LopezCastroRoberto Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LucasWilkinson This follows Triton’s handle_long_type() implementation. It processes Python int arguments passed to a Triton JIT kernel, and returns:

  • The kernel argument type: i32, i64, or u64.
  • Its specialization class: constant 1, divisible by 16 (D), or generic.

These values are representative inputs for each (integer type, specialization class) pair. For i64 and u64, the type boundary and boundary-plus-one (i guess these are the magic values you refer to) represent the divisible and generic classes, respectively

@LucasWilkinson LucasWilkinson added the ready ONLY add when PR is ready to merge/full CI is needed label Aug 13, 2026
@LucasWilkinson

Copy link
Copy Markdown
Collaborator

/ci run

@github-actions

Copy link
Copy Markdown

@LopezCastroRoberto, CI is now available for this PR.

  • /ci run starts a CI build.
  • /ci retry retries failed jobs in the CI build for the current PR head. If the current head has no CI build, it starts a new CI build for the current head containing only jobs that failed in the latest earlier CI build for this PR.
  • /ci cancel cancels scheduled or running CI builds for this PR branch.

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #83781 for commit 1ff69d56278e.

@LopezCastroRoberto

Copy link
Copy Markdown
Contributor Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #83796 for commit 8ae71d8f341f.

Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
@LopezCastroRoberto

Copy link
Copy Markdown
Contributor Author

/ci retry

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #83871 for commit 93d59bbefbda, running 3 failed step(s) from Buildkite CI #83796.

@LopezCastroRoberto

Copy link
Copy Markdown
Contributor Author

/ci run

@github-actions

Copy link
Copy Markdown

✅ Triggered Buildkite CI #83873 for commit b604da1baa98.

@LopezCastroRoberto

Copy link
Copy Markdown
Contributor Author

@LucasWilkinson the CI failure seems unrelated

@vllm-bot
vllm-bot merged commit 49905ad into vllm-project:main Aug 17, 2026
98 of 100 checks passed
@chaunceyjiang

Copy link
Copy Markdown
Collaborator

Hi @LopezCastroRoberto @LucasWilkinson @mgoin

While testing DSV4 over the past couple of days, I noticed that a few kernels were not being warmup. Based on your design document, I asked Codex to make some changes to address this issue.

The changes are working as expected in my local tests. Could you please help take a look when you have a chance? Thanks! #52740

@LopezCastroRoberto

LopezCastroRoberto commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

@chaunceyjiang These first PRs were just defining/implementing the warmup infra. For full DSv4 de-JITification we need to land #49627, which at the same time has been broken down into four independent PRs to make the review process easier: #50175, #50176, #50177, and #50178.

Full details in #49349

Only after all these PRs land, we can consider DSv4 de-JITification completed.

The kernels warmed up in your PR will be mostly covered by: #50178

Thanks

@chaunceyjiang

Copy link
Copy Markdown
Collaborator

@LopezCastroRoberto Thanks for the quick response! Looking forward to seeing those changes merged soon. I’ve closed my PR.

zyp2014 pushed a commit to zyp2014/vllm that referenced this pull request Aug 21, 2026
…r registry and orchestration for JIT warmup (vllm-project#50174)

Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Co-authored-by: Codex <codex@openai.com>
wyettzeng pushed a commit to wyettzeng/vllm that referenced this pull request Aug 21, 2026
…r registry and orchestration for JIT warmup (vllm-project#50174)

Signed-off-by: LopezCastroRoberto <rocastro@redhat.com>
Co-authored-by: Codex <codex@openai.com>
Signed-off-by: Wyett <wyettzeng@gmail.com>
lesj0610 added a commit to lesj0610/vllm that referenced this pull request Aug 22, 2026
Upstream's JIT warmup infrastructure (vllm-project#50174) absorbed the standalone
v1_block_table_warmup module into BlockTable's registered warmup, and the
worker now reads kv_cache_config.kv_cache_layout when adopting the engine
core's layout. Drop the stale import/call and teach the gpu_worker test
fake about the new field.
lesj0610 added a commit to lesj0610/vllm that referenced this pull request Aug 22, 2026
Upstream's warmup infrastructure (vllm-project#50174) registers these kernels through
its own provider registry, so the fork-side warmup hooks are redundant.
Reverse-apply the deltas of the upstream warmup PRs (vllm-project#42193, vllm-project#42215,
vllm-project#43642, vllm-project#46446) so every file they touched matches origin/main:

- Drop the fused MoE, TurboQuant, hybrid GDN/Mamba/MRoPE and block-table
  warmup modules plus their tests and kernel_warmup wiring.
- Restore triton_decode_attention, triton_turboquant_decode,
  fused_recurrent and fused_moe to upstream (removes the VllmJitKernel
  wrappers those PRs introduced).
- Keep `import math` in mrope.py: it is used by the bounded M-RoPE cache
  work, not by the reverted warmup code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cpu Related to CPU backends documentation Improvements or additions to documentation mrv2 Model Runner V2 specific ready ONLY add when PR is ready to merge/full CI is needed v1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants