[Attention] Skip sparse indexer scoring for dense short prefills - #48407
Conversation
9b3f01a to
961619f
Compare
961619f to
a5597e0
Compare
|
Documentation preview: https://vllm--48407.org.readthedocs.build/en/48407/ |
|
This pull request has merge conflicts that must be resolved before it can be |
a5597e0 to
3a73106
Compare
9ea6303 to
0cec2fc
Compare
72dfb8a to
6b25a92
Compare
|
Hi @qianlihuang, thanks for the contribution! Is this ready for review? If so, please mark it as such |
|
@MatthewBonanni The implementation in this PR is mostly final. The only blocker is that I don’t have suitable GPUs to run some validation and profiling for now. The expected production benefit is for pure short-prefill steps, such as the early turns of bs=1 multi-turn conversations, and some prefill dp ranks in PD-disaggregated deployments. I also saw #48770. There may be some minor conflicts to resolve, but nothing fundamental. Reviews of the current approach and implementation are very welcome. |
|
Thanks! Could you add a gsm8k eval to ensure no accuracy regression? |
|
@MatthewBonanni Added the gsm8k comparison to the PR description. |
MatthewBonanni
left a comment
There was a problem hiding this comment.
LGTM other than a small nit, thanks!
3741377 to
23bab4a
Compare
|
I disabled auto-merge because a similar PR for DSv4, #49486, actually showed a minor decode regression. Can you benchmark a decode-dominated workload to ensure no regression? |
|
@MatthewBonanni Added a decode-dominated benchmark with ISL=1, OSL=1024, and concurrency 1/8/32 in PR description. Across three runs, median TPOT is unchanged at every concurrency. |
|
Hi @qianlihuang, please stop updating the branch because the CI runs are costly. For each CI failure, determine whether it's present on main or not. If you can't find an exactly matching failure on main (some might be flaky), please fix the bug. Otherwise, if all failures are present on main, let me know or post in #pr-merge-requests in Slack |
|
Thanks, @MatthewBonanni. I did try to get a clean CI run, but each run failed in a different, unrelated test. For context, the only failure on |
Purpose
Try extend #47327 to see some improvement.
This PR removes dead indexer scoring work before dense attention.
Test Plan
Test Result
ISL=1024, OSL=1, concurrency=1, 128 requests:
e6d1310b)46e170b7)gsm8k
main
PR
Profile
at::native::vectorized_elementwise_kernel, vllm::cp_gather_indexer_k_quant_cache_kernel, deep_gemm::sm90_fp8_mqa_logits, vllm::topKPerRowPrefill have been skipped.
Decode regression check
The table reports the median result across three runs.
No decode regression was observed. TPOT is unchanged or slightly lower with the PR at all tested concurrency levels.
Environment and commands
Base image:
Server configuration:
Benchmark command:
Detailed results
Concurrency 1
Concurrency 8
Concurrency 32
The second main run at concurrency 32 had an unusually long benchmark duration and lower aggregate throughput, while its TPOT remained close to the other runs.
AI Assistance
AI assistance was used for design analysis, implementation, tests, review, and community research.
Essential Elements of an Effective PR Description Checklist
supported_models.mdandexamplesfor a new model.