Conversation
Run a minimal Qwen3-VL vision forward during startup warmup so the pos-embed interpolation and vision rotary Triton kernels compile before the first image request. Keep failures non-fatal so unsupported or changed vision paths fall back to the existing first-request JIT behavior. Signed-off-by: lesj0610 <lesj0610@users.noreply.github.com>
Signed-off-by: lesj0610 <lesj0610@users.noreply.github.com>
Signed-off-by: lesj0610 <lesj0610@users.noreply.github.com>
1 task
43 tasks
LopezCastroRoberto
left a comment
Contributor
There was a problem hiding this comment.
Hey @lesj0610 Have you checked that using do_not_specialize does not affect performance? If those variables are part of the compile-key of _bilinear_pos_embed_kernel that specialization might be necessary. I would start by checking if (H, W, h_scale, w_scale) are defined as tl.constexpr in _bilinear_pos_embed_kernel.
I mention this because we are doing an effort to achieve zero JIT compilation during runtime, and would be great if you can migrate this warmup to the shared warmup contract we introduced in #47456
More info in: #49349, with some reference examples already merged. Thanks!
Signed-off-by: lesj0610 <lesj0610@users.noreply.github.com>
lesj0610
marked this pull request as ready for review
August 27, 2026 12:30
lesj0610
requested review from
AndreasKaratzas,
WoosukKwon,
mgoin,
sighingnow,
tlrmchlsmth,
vadiklyutiy,
yewentao256 and
zyongye
as code owners
August 27, 2026 12:30
lesj0610
added a commit
to lesj0610/vllm
that referenced
this pull request
Sep 5, 2026
Retire PR #108 from integration PR #115 with upstream PR vllm-project#47637. Restore upstream Triton specialization and remove the policy-only test. Keep the existing interpolation correctness tests unchanged. Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: lesj0610 <lesj0610@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
_bilinear_pos_embed_kernelcould still JIT during a real Qwen3-VL image request when the image grid differed from the shape used during profiling. The kernel does not annotateH,W,h_scale, orw_scaleastl.constexpr, but Triton still specializes scalar arguments unless they are explicitly excluded.After review, this PR only marks the integer grid dimensions (
HandW) asdo_not_specialize. The floating-point scale arguments remain specialized because they participate directly in interpolation arithmetic and may affect generated-code performance.This PR intentionally does not add a synthetic warmup. There is no model-specific dummy invocation to migrate to the shared warmup contract; normal multimodal profiling and kernel warmup routing remain unchanged.
Changes
do_not_specialize=["H", "W"]on the fused bilinear position-embedding kernel.h_scaleandw_scale.main.Test Plan
The kernel was also benchmarked on GPU 1 (RTX 3090) with 100 warmup iterations and 300 measured iterations for the baseline, the updated
H/W-only policy, and the previous four-argument policy.Test Result
do_not_specialize H/Wdo_not_specializeall fourAgainst the fully specialized baseline, the
H/W-only mean was lower in five cases and 1.1% higher for bf16 48x48. This matrix did not identify a consistent regression; the result is limited to the tested RTX 3090 shapes and dtypes.AI assistance: Codex and Claude Fable 5 were used during implementation and PR preparation.