[BugFix] fix dflash spec decode rope and graph error - #12940
Conversation
|
👋 Hi! Thank you for contributing to the vLLM Ascend project. The following points will speed up your PR merge:
If CI fails, you can run linting and testing checks locally according Contributing and Testing. Tip 💡 Consider Linking a Related Issue or RFCYour PR title contains the [BugFix] tag, indicating a bug fix or new feature. Linking a related issue or RFC in the PR description is strongly encouraged — it gives reviewers helpful context and speeds up the review. You can use any of these keywords:
🙏 Thanks for helping us keep the project well-organized! |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a runtime error encountered during dflash startup where RoPE operations failed due to buffer size mismatches. By dynamically calculating the required buffer length as the maximum of query tokens and total tokens, the changes ensure that buffers are sufficiently sized to handle padded inputs, preventing truncation and subsequent assertion failures. Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
Suggested PR Title:
[spec_decode][BugFix] Prevent RoPE failure by sizing query buffers to cover padded graph sizeSuggested PR Summary:
### What this PR does / why we need it?
This PR fixes a potential RoPE failure during speculative decoding on Ascend. The query-side buffers `self.positions` and `self._slot_mapping_buffer` in both `AscendDflashProposer` and `AscendDsparkProposer` were previously sized to `max_query_tokens`. However, during execution, these buffers are sliced by `num_input_tokens`, which is padded up to the runner's CUDA graph capture size (bounded by `max_num_tokens`). If `num_input_tokens` exceeds `max_query_tokens`, slicing would silently truncate the buffers, causing RoPE to fail its shape validation check (`positions.shape[0] == num_tokens`).
To resolve this, the buffers are now sized to `query_buffer_len = max(self.max_query_tokens, self.max_num_tokens)`, ensuring they can safely accommodate both valid query data and any padded graph size.
### Does this PR introduce _any_ user-facing change?
No. This is an internal bug fix for speculative decoding on Ascend devices.
### How was this patch tested?
No specific tests were added in this PR, but the changes prevent runtime crashes during CUDA graph execution with speculative decoding.I have no further feedback to provide as there are no review comments to evaluate.
|
@wangxiyuan @yiz-liu @drslark hi, this pr is ready ,cloud you please take a look? |
|
@lilinsiman Please review this PR. @yiz-liu Please confirm whether not specifying |
|
@yiz-liu Recently, I have been running mtp+tp2, dflash+tp2, minimax+tp8, and qwen3+tp8 on vllm-ascend v0.23.0rc1-a3+910c, and I have encountered errors. After troubleshooting, I found that the graph complex stage consumed too many resources, causing the service to crash. Currently, reducing resource consumption through the -- compilation config '{"max_cudagraph_capture size": 128}' parameter can solve the errors in these scenarios, but adjusting the parameters is only a temporary compromise solution. It should be caused by an unreasonable default -- compilation config parameter.This issue is not directly related to this PR |
|
@ZT-AIA @lilinsiman Error 1 and Error 2 are both caused by the --max-num-batched-tokens being too small, so they can be resolved by adding parameter validation logic. |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
|
Can you post the complete error logs? Is it only about dflash? I'm not sure about this root cause. |
|
Can this problem reproduce in gpu |
|
@slippersss @drslark On GPU, the default max_num_batched_tokens value is 8k, while on Ascend it is 2k, so there is an issue with Ascend. only dflash has this problem. The log is not easy to export, but it can be reproduced through the following script: export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 |
|
@slippersss thank you, you are right. The best solution is num_query_total to num_query_tokens in dummy_run is_profile branch |
@drslark has changed to fix this bug in dummy_run |
Signed-off-by: HF-001 <1670186653@qq.com>
Signed-off-by: HF-001 <1670186653@qq.com>
|
LGTM. Thanks for your contribution! |
|
@slippersss @drslark I have fixed the verification logic of dflash in VLLM, and PR has been approved. After testing, it has been confirmed that only dummy_run needs to be modified, and there is no need to add warnings. vllm-project/vllm#51256 |
| self.model( | ||
| input_ids=self.input_ids[:num_query_total], | ||
| positions=self._get_positions(num_query_total), | ||
| input_ids=self.input_ids[:num_input_tokens], |
There was a problem hiding this comment.
It is the root cause.
@slippersss @HF-001
Thanks for your efforts.
LGTM.
Can we also remain similar modification in dspark? I think there is still semantically error in dspark. |
@slippersss I checked and found no need to modify in dspark. The |
|
@ningjingbengxiaohai @slippersss @drslark @zzzzwwjj hi, this pr is ready. cloud you help merge it? |
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com>
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com>
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com>
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com> (cherry picked from commit 36d06d1)
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com> (cherry picked from commit 36d06d1) Signed-off-by: jiaqi-lee <15316070896@163.com>
) ### What this PR does / why we need it? Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt. It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently. Resolve the issue of error during dflash startup, specifically: error 1: ``` File "<eval_with_key>.900 from /usr/local/python3.12.13/lib/python3.12/site-packages/torch/fx/experimental/proxy_tensor.py:1507 in wrapped", line 32, in forward (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] npu_rotary_embedding = torch.ops.vllm.npu_rotary_embedding.default(arg7_1, view_1, view_3, arg9_1, 128, 128, True); arg7_1 = view_1 = view_3 = arg9_1 = None (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/usr/local/python3.12.13/lib/python3.12/site-packages/torch/_ops.py", line 819, in __call__ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] return self._op(*args, **kwargs) (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/rotary_embedding.py", line 169, in rope_forward_oot (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] query, key = rope_forward_triton( (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/ops/triton/rope.py", line 287, in rope_forward_triton (Worker_TP0 pid=544) ERROR 07-27 10:06:06 [multiproc_executor.py:1000] assert positions.shape[0] == num_tokens ``` error 2: ``` (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/model_executor/models/qwen3_dflash.py", line 438, in forward (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] def forward( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/caching.py", line 217, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.optimized_call(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "<string>", line 25, in execution_fn (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm-ascend/vllm_ascend/compilation/acl_graph.py", line 145, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] return self.runnable(*args, **kwargs) (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] File "/vllm-workspace/vllm/vllm/compilation/piecewise_backend.py", line 362, in __call__ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] assert range_entry is not None, ( (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] ^^^^^^^^^^^^^^^^^^^^^^^ (Worker_TP0 pid=18307) ERROR 07-28 02:12:55 [multiproc_executor.py:1000] AssertionError: Shape: 2304 out of considered ranges: [(1, 2048)] ``` ### How was this patch tested? --max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` change --max-num-batched-tokens value greater than or equal to 2304, 2304 = 256*(1+8)=max_num_reqs*(1+k) ``` export ASCEND_RT_VISIBLE_DEVICES=0,1 vllm serve /nas/disk1/Qwen3-32B --port 8898 --dtype bfloat16 \ --tensor-parallel-size 2 --gpu-memory-utilization 0.8 \ --max-model-len 32768 --trust-remote-code \ --no-enable-prefix-caching \ --async-scheduling \ --max-num-batched-tokens 2304 \ --compilation-config '{"max_cudagraph_capture_size": 128}' \ --speculative_config '{"method":"dflash", "model":"/nas/disk1/Qwen3-32B-DFlash","num_speculative_tokens":8,"draft_tensor_parallel_size":2}'' ``` - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@0351e9a --------- Signed-off-by: HF-001 <1670186653@qq.com> (cherry picked from commit 36d06d1) Signed-off-by: jiaqi-lee <15316070896@163.com>
…#14687) ### What this PR does / why we need it? This is the v0.26.0 release-blocker backport rollup. It contains only the 19 audited high-severity correctness and stability fixes that were still missing from releases/v0.26.0rc at 1f95052. The branch has 23 physical commits because #14619 is preserved as its complete five-commit atomic series. Cross-branch equivalents are deduplicated, and every logical fix remains independently reviewable and revertible. #### Included fixes | # | Source / target PR | Severity | Problem fixed | |---:|---|---|---| | 1 | #13538 | P0 correctness | Qwen3-VL MoE + FlashComm1 + deepstack used the wrong residual tensor and could silently corrupt output. | | 2 | #13600 | P0 deadlock | MRV1/MRV2 main and draft update streams could mutually wait during repeated full-graph execution. | | 3 | #13498 | P0 data corruption | Float32 Mamba state could overwrite the shared bf16 hidden-state cache buffer. | | 4 | #13902 | P0 correctness | RL weight reload left ACL graphs referencing stale W8A8-MXFP8 weight addresses. | | 5 | #12359 / #12371 | P0 correctness | Mooncake reformatted KV before all TP/CP pulls for a request completed, causing TP inequality or reordered KV. | | 6 | #13111 / #13113 / #13110 | P1 KV correctness | Multi-KV-group save/load incorrectly reused group-0 block size for every group. | | 7 | #13116 / #13117 / #13099 | P1 state consistency | Async KV load failures were not shared with the scheduler, preventing recompute recovery. | | 8 | #13308 / #13310 / #13307 | P1 crash | Memcache batch query/allocation before lazy initialization could assert in scheduler or worker. | | 9 | #13012 | P1 hang/corruption | Level-2 sleep/wake could lose the MoE loader and leave EPLB tensors pointing at released storage. | | 10 | #13414 | P1 crash/correctness | Dynamic EPLB initialized W8A8 scales for only the first expert weight. | | 11 | #14001 | P1 crash | MiniMax-M3 index_q was reshaped using total size instead of the per-head dimension. | | 12 | #14394 | P1 crash/hang | MRV2 FULL_DECODE_ONLY dropped graph padding when runtime mode was FULL. | | 13 | #13136 | P1 crash | P/D + DP zero-token ranks compared None with MC2 capacity and raised TypeError. | | 14 | #13183 | P1 unavailable | ec_both was treated as producer-only and skipped KV specification/data needed by its consumer role. | | 15 | #13123 | P1 OOB/device error | MRV2 dummy-token remainder was concentrated on one request and could exceed max_model_len. | | 16 | #13159 | P1 crash | MRV2 num_nans used the wrong Triton libdevice and the penalty kernel could exceed the CANN grid limit. | | 17 | #12940 | P1 crash | DFlash profiling used total query count instead of actual input tokens for RoPE/graph capture. | | 18 | #13394 via #13405 | P0 correctness | RL sampling tensor lifetime errors could produce Inf/OOV tokens and contaminate later output. | | 19 | #14142 via #14619 | P1 long-run/state correctness | P/D rejection left stale KV/accounting and unsafe retry/replay behavior could leak, duplicate, or return wrong responses. | #### Backport policy - Selected the audited v0.26 release-adapted commits where available; the closed rollup #14337 was not revived wholesale. - Kept only one canonical copy of fixes duplicated across 0.23, 0.25, and main. - Manually adapted #13136, the core #13123 input-batch hunk, and #13159 to preserve current v0.26/MegaMoe/model-runner behavior. - Used the current v0.26 target change from #13405 and the complete five-commit #14619 series. - Intentionally excluded performance-only, UX-only, conditional-support, low-confidence, and owner-unsettled fixes from this release window. ### Does this PR introduce _any_ user-facing change? Yes, behavior is corrected for the affected configurations: crashes, deadlocks, hangs, incorrect output, stale KV state, and data corruption are prevented. There is no new public API, CLI option, or configuration requirement. ### How was this patch tested? Local validation completed: - Audited manifest: 19/19 logical fixes, 23/23 expected source commits; missing 0, duplicate 0, unexpected 0. - All 23 commits retain source provenance and Signed-off-by trailers. - Ruff lint and format checks passed for all 38 changed Python files. - Python syntax compilation passed for all 38 changed Python files. - git diff --check, codespell, forbidden-import, package-init, context-manager, and filename checks passed. - The final worktree is clean at 86b2ca8. The backports retain or add focused tests for AscendStore, Mooncake rejection cleanup, fused MoE/EPLB, W8A8-MXFP8 reload, worker sleep/wake, MRV2 graph padding, penalty-grid limits, hidden-state extraction, and two-card speculative DP. NPU UT/E2E was not run locally because the available Windows environment has no vLLM, PyTorch/torch_npu, pytest, or Ascend device. CI and targeted NPU regression are therefore required before merge, especially: - MRV1/MRV2 full-graph repeated-iteration deadlock/teardown. - Mooncake TP2/TP4 out-of-order pull KV equality and P/D rejection cleanup. - Qwen3-VL FlashComm1 + deepstack fixed-seed correctness. - Level-2 sleep/wake, dynamic EPLB, and multi-round RL weight reload. - P/D + DP zero-token ranks, ec_both, DFlash profile/graph, and RL Inf/OOV sampling. - Proxy retry and streaming replay behavior from #14619. #### Review checklist - [x] Only the 19 approved release-critical logical fixes are included. - [x] One logical fix per commit; #14619 remains an atomic five-commit series. - [x] No performance-only backports are included. - [x] Source provenance and sign-offs are retained. - [ ] Repository CI passes. - [ ] Targeted Ascend NPU correctness and long-run tests pass. - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@d02df74 --------- Signed-off-by: kyle-zhangchi <chiiiiiizhang@gmail.com> Signed-off-by: lijiaqi139 <lijiaqi139@huawei.com> Signed-off-by: jiaqi-lee <15316070896@163.com> Signed-off-by: tyy0829 <1455207791@qq.com> Signed-off-by: yejj710 <abyss1999@163.com> Signed-off-by: jiajinzhu2 <jiajinzhu@huawei.com> Signed-off-by: chenyue1122 <oyoy7102@163.com> Signed-off-by: XuRongSheng <1843167357@qq.com> Signed-off-by: muziyuhui666 <lijianfu9@huawei.com> Signed-off-by: Pz1116 <zpbzpb123123@gmail.com> Signed-off-by: zouyida2052 <zouyida2002@gmail.com> Signed-off-by: likailong <likailong5@huawei.com> Signed-off-by: hanxi-java <634498162@qq.com> Signed-off-by: Liam <ml646@duke.edu> Signed-off-by: AuroraEmiya <Sakura.iostream@gmail.com> Signed-off-by: HF-001 <1670186653@qq.com> Signed-off-by: wangxiaoteng <wangxiaoteng@huawei.com> Signed-off-by: Hcm03 <chengminhua1@huawei.com> Signed-off-by: zhuyixiang <zhuyixiang2014@163.com> Signed-off-by: moonseeker <2290166829@qq.com> Co-authored-by: kyle-zhangchi <chiiiiiizhang@gmail.com> Co-authored-by: tyy0829 <87685049+tyy0829@users.noreply.github.com> Co-authored-by: yejj <abyss1999@163.com> Co-authored-by: jiajinzhu2 <jiajinzhu@huawei.com> Co-authored-by: CHENYUE <56943221+PHOEBEMOON0802@users.noreply.github.com> Co-authored-by: Xu Rongsheng <73730571+MmMmaru@users.noreply.github.com> Co-authored-by: yjyang62 <yangjinyang5@huawei.com> Co-authored-by: muziyuhui666 <lijianfu9@huawei.com> Co-authored-by: CXY-Katrina <katrina.cxy@gmail.com> Co-authored-by: cywang250805 <wangchaoyu7@huawei.com> Co-authored-by: Bill845514379 <huangjianbao2@huawei.com> Co-authored-by: yejj710 <yejj710@gmail.com> Co-authored-by: AuroraEmiya <Sakura.iostream@gmail.com> Co-authored-by: HaoxinZong <116423146+HaoxinZong@users.noreply.github.com> Co-authored-by: pz1116 <47019764+Pz1116@users.noreply.github.com> Co-authored-by: zouyida2052 <zouyida2002@gmail.com> Co-authored-by: iKeybot <92210799+iKeybot-code@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: 韩熙 <63780107+hanxi-java@users.noreply.github.com> Co-authored-by: zouzy <38661932+zouzy5137@users.noreply.github.com> Co-authored-by: AuroraEmiya <92282919+AuroraEmiya@users.noreply.github.com> Co-authored-by: Liam <ml646@duke.edu> Co-authored-by: kx <1670186653@qq.com> Co-authored-by: wangxiaoteng888 <56506195+wangxiaoteng888@users.noreply.github.com> Co-authored-by: Hcm03 <chengminhua1@huawei.com> Co-authored-by: zhuyixiang <zhuyixiang2014@163.com> Co-authored-by: moonseeker <2290166829@qq.com>
…vllm-project#14687) ### What this PR does / why we need it? This is the v0.26.0 release-blocker backport rollup. It contains only the 19 audited high-severity correctness and stability fixes that were still missing from releases/v0.26.0rc at 1f95052. The branch has 23 physical commits because vllm-project#14619 is preserved as its complete five-commit atomic series. Cross-branch equivalents are deduplicated, and every logical fix remains independently reviewable and revertible. #### Included fixes | # | Source / target PR | Severity | Problem fixed | |---:|---|---|---| | 1 | vllm-project#13538 | P0 correctness | Qwen3-VL MoE + FlashComm1 + deepstack used the wrong residual tensor and could silently corrupt output. | | 2 | vllm-project#13600 | P0 deadlock | MRV1/MRV2 main and draft update streams could mutually wait during repeated full-graph execution. | | 3 | vllm-project#13498 | P0 data corruption | Float32 Mamba state could overwrite the shared bf16 hidden-state cache buffer. | | 4 | vllm-project#13902 | P0 correctness | RL weight reload left ACL graphs referencing stale W8A8-MXFP8 weight addresses. | | 5 | vllm-project#12359 / vllm-project#12371 | P0 correctness | Mooncake reformatted KV before all TP/CP pulls for a request completed, causing TP inequality or reordered KV. | | 6 | vllm-project#13111 / vllm-project#13113 / vllm-project#13110 | P1 KV correctness | Multi-KV-group save/load incorrectly reused group-0 block size for every group. | | 7 | vllm-project#13116 / vllm-project#13117 / vllm-project#13099 | P1 state consistency | Async KV load failures were not shared with the scheduler, preventing recompute recovery. | | 8 | vllm-project#13308 / vllm-project#13310 / vllm-project#13307 | P1 crash | Memcache batch query/allocation before lazy initialization could assert in scheduler or worker. | | 9 | vllm-project#13012 | P1 hang/corruption | Level-2 sleep/wake could lose the MoE loader and leave EPLB tensors pointing at released storage. | | 10 | vllm-project#13414 | P1 crash/correctness | Dynamic EPLB initialized W8A8 scales for only the first expert weight. | | 11 | vllm-project#14001 | P1 crash | MiniMax-M3 index_q was reshaped using total size instead of the per-head dimension. | | 12 | vllm-project#14394 | P1 crash/hang | MRV2 FULL_DECODE_ONLY dropped graph padding when runtime mode was FULL. | | 13 | vllm-project#13136 | P1 crash | P/D + DP zero-token ranks compared None with MC2 capacity and raised TypeError. | | 14 | vllm-project#13183 | P1 unavailable | ec_both was treated as producer-only and skipped KV specification/data needed by its consumer role. | | 15 | vllm-project#13123 | P1 OOB/device error | MRV2 dummy-token remainder was concentrated on one request and could exceed max_model_len. | | 16 | vllm-project#13159 | P1 crash | MRV2 num_nans used the wrong Triton libdevice and the penalty kernel could exceed the CANN grid limit. | | 17 | vllm-project#12940 | P1 crash | DFlash profiling used total query count instead of actual input tokens for RoPE/graph capture. | | 18 | vllm-project#13394 via vllm-project#13405 | P0 correctness | RL sampling tensor lifetime errors could produce Inf/OOV tokens and contaminate later output. | | 19 | vllm-project#14142 via vllm-project#14619 | P1 long-run/state correctness | P/D rejection left stale KV/accounting and unsafe retry/replay behavior could leak, duplicate, or return wrong responses. | #### Backport policy - Selected the audited v0.26 release-adapted commits where available; the closed rollup vllm-project#14337 was not revived wholesale. - Kept only one canonical copy of fixes duplicated across 0.23, 0.25, and main. - Manually adapted vllm-project#13136, the core vllm-project#13123 input-batch hunk, and vllm-project#13159 to preserve current v0.26/MegaMoe/model-runner behavior. - Used the current v0.26 target change from vllm-project#13405 and the complete five-commit vllm-project#14619 series. - Intentionally excluded performance-only, UX-only, conditional-support, low-confidence, and owner-unsettled fixes from this release window. ### Does this PR introduce _any_ user-facing change? Yes, behavior is corrected for the affected configurations: crashes, deadlocks, hangs, incorrect output, stale KV state, and data corruption are prevented. There is no new public API, CLI option, or configuration requirement. ### How was this patch tested? Local validation completed: - Audited manifest: 19/19 logical fixes, 23/23 expected source commits; missing 0, duplicate 0, unexpected 0. - All 23 commits retain source provenance and Signed-off-by trailers. - Ruff lint and format checks passed for all 38 changed Python files. - Python syntax compilation passed for all 38 changed Python files. - git diff --check, codespell, forbidden-import, package-init, context-manager, and filename checks passed. - The final worktree is clean at 86b2ca8. The backports retain or add focused tests for AscendStore, Mooncake rejection cleanup, fused MoE/EPLB, W8A8-MXFP8 reload, worker sleep/wake, MRV2 graph padding, penalty-grid limits, hidden-state extraction, and two-card speculative DP. NPU UT/E2E was not run locally because the available Windows environment has no vLLM, PyTorch/torch_npu, pytest, or Ascend device. CI and targeted NPU regression are therefore required before merge, especially: - MRV1/MRV2 full-graph repeated-iteration deadlock/teardown. - Mooncake TP2/TP4 out-of-order pull KV equality and P/D rejection cleanup. - Qwen3-VL FlashComm1 + deepstack fixed-seed correctness. - Level-2 sleep/wake, dynamic EPLB, and multi-round RL weight reload. - P/D + DP zero-token ranks, ec_both, DFlash profile/graph, and RL Inf/OOV sampling. - Proxy retry and streaming replay behavior from vllm-project#14619. #### Review checklist - [x] Only the 19 approved release-critical logical fixes are included. - [x] One logical fix per commit; vllm-project#14619 remains an atomic five-commit series. - [x] No performance-only backports are included. - [x] Source provenance and sign-offs are retained. - [ ] Repository CI passes. - [ ] Targeted Ascend NPU correctness and long-run tests pass. - vLLM version: v0.26.0 - vLLM main: vllm-project/vllm@d02df74 --------- Signed-off-by: kyle-zhangchi <chiiiiiizhang@gmail.com> Signed-off-by: lijiaqi139 <lijiaqi139@huawei.com> Signed-off-by: jiaqi-lee <15316070896@163.com> Signed-off-by: tyy0829 <1455207791@qq.com> Signed-off-by: yejj710 <abyss1999@163.com> Signed-off-by: jiajinzhu2 <jiajinzhu@huawei.com> Signed-off-by: chenyue1122 <oyoy7102@163.com> Signed-off-by: XuRongSheng <1843167357@qq.com> Signed-off-by: muziyuhui666 <lijianfu9@huawei.com> Signed-off-by: Pz1116 <zpbzpb123123@gmail.com> Signed-off-by: zouyida2052 <zouyida2002@gmail.com> Signed-off-by: likailong <likailong5@huawei.com> Signed-off-by: hanxi-java <634498162@qq.com> Signed-off-by: Liam <ml646@duke.edu> Signed-off-by: AuroraEmiya <Sakura.iostream@gmail.com> Signed-off-by: HF-001 <1670186653@qq.com> Signed-off-by: wangxiaoteng <wangxiaoteng@huawei.com> Signed-off-by: Hcm03 <chengminhua1@huawei.com> Signed-off-by: zhuyixiang <zhuyixiang2014@163.com> Signed-off-by: moonseeker <2290166829@qq.com> Co-authored-by: kyle-zhangchi <chiiiiiizhang@gmail.com> Co-authored-by: tyy0829 <87685049+tyy0829@users.noreply.github.com> Co-authored-by: yejj <abyss1999@163.com> Co-authored-by: jiajinzhu2 <jiajinzhu@huawei.com> Co-authored-by: CHENYUE <56943221+PHOEBEMOON0802@users.noreply.github.com> Co-authored-by: Xu Rongsheng <73730571+MmMmaru@users.noreply.github.com> Co-authored-by: yjyang62 <yangjinyang5@huawei.com> Co-authored-by: muziyuhui666 <lijianfu9@huawei.com> Co-authored-by: CXY-Katrina <katrina.cxy@gmail.com> Co-authored-by: cywang250805 <wangchaoyu7@huawei.com> Co-authored-by: Bill845514379 <huangjianbao2@huawei.com> Co-authored-by: yejj710 <yejj710@gmail.com> Co-authored-by: AuroraEmiya <Sakura.iostream@gmail.com> Co-authored-by: HaoxinZong <116423146+HaoxinZong@users.noreply.github.com> Co-authored-by: pz1116 <47019764+Pz1116@users.noreply.github.com> Co-authored-by: zouyida2052 <zouyida2002@gmail.com> Co-authored-by: iKeybot <92210799+iKeybot-code@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: 韩熙 <63780107+hanxi-java@users.noreply.github.com> Co-authored-by: zouzy <38661932+zouzy5137@users.noreply.github.com> Co-authored-by: AuroraEmiya <92282919+AuroraEmiya@users.noreply.github.com> Co-authored-by: Liam <ml646@duke.edu> Co-authored-by: kx <1670186653@qq.com> Co-authored-by: wangxiaoteng888 <56506195+wangxiaoteng888@users.noreply.github.com> Co-authored-by: Hcm03 <chengminhua1@huawei.com> Co-authored-by: zhuyixiang <zhuyixiang2014@163.com> Co-authored-by: moonseeker <2290166829@qq.com>
What this PR does / why we need it?
Fix the bug in the profile of dummy_run. If the subsequent parameters are unreasonable, vllm will verify and prompt.
It is recommended to set reasonable parameters --max-num-batched-tokens when users start the model on Ascend currently.
Resolve the issue of error during dflash startup, specifically:
error 1:
error 2:
How was this patch tested?
--max-num-batched-tokens default value is 2048 ,which caused error1 and error2, Now there will be errors in the verification layer
change --max-num-batched-tokens value greater than or equal to 2304,
2304 = 256*(1+8)=max_num_reqs*(1+k)