[SM80] Backport mHC fused post + int8 all-reduce; fixes #28, #29 - #30
Open
sjug wants to merge 1 commit into
Open
[SM80] Backport mHC fused post + int8 all-reduce; fixes #28, #29#30sjug wants to merge 1 commit into
sjug wants to merge 1 commit into
Conversation
Complete the selective A100 backport by adding the missing fused row-sqsum kernels, restoring the compressed custom all-reduce transport, and carrying the quantized payload through the DeepSeek V4 layer stack. Adapt the implementation from haosdent/vllm@12810046 while preserving the newer DSpark and pipeline-parallel fixes in this branch. Reject inactive prenorm-shard and unsupported int8 all-reduce configurations at startup, and add focused kernel, integration, and distributed coverage. Signed-off-by: Sebastian Jug <seb@stianj.ug>
Owner
|
I'm rebasing upstream vllm changes, please wait a bit. Thanks in advance! |
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.
What this fixes
Two flags documented in the README as opt-in performance knobs are broken on the shipped
v0.6.6-sm80image (e8953f6e5):VLLM_MHC_POST_FUSE_SQRSUM=1crashes at worker profiling:tilelang.pyimportsmhc_post_sqrsum_tilelang, which was never ported totilelang_kernels.py. BecauseVLLM_MHC_PRENORM_SHARDis deliberately coupled to the fused sqrsum, it is silently inactive as well.VLLM_MHC_AR_INT8=1suppresses the attention TP all-reduce (attention.py:reduce_results=not ar_hoisted) but nothing re-adds it:nvidia/model.pyate8953f6e5has no_hoisted_all_reduce, no int8 TileLang consumers exist, and the nativeall_reduce_int8op is absent — every output is rank-local garbage with no crash.This PR ports the missing pieces from the A100 campaign tree: the decoder-side hoisted all-reduce (int8 above the 2048-token threshold, bf16 below), the int8/sqrsum TileLang post kernels, the native
all_reduce_int8transport, the PPx_scaleshandoff, and a flag-enabled test.Test commands and results
All on 8×A100-SXM4-40GB (NVSwitch, driver 610.57.04), model
deepseek-ai/DeepSeek-V4-Flash-0731, TP=8, 512K max-model-len, DSpark k=5. Image built from this branch on the target host.python3 -m pytest tests/models/test_deepseek_v4_input_gemm_fusion.py -v→ 16 passed in 13.54 s (run on the 8×A100 target, in a container from this branch's image; includestest_hoisted_all_reduce_readds_the_suppressed_collectiveandtest_decoder_carries_int8_scales_to_each_mhc_post)e8953f6e5), gsm8k 0.96, decode-neutralModel evaluation
gsm8k scores above; all certified configs sit within each other's confidence intervals and match the shipped-image baseline (0.965 ± 0.013) — the recovered flags are quality-neutral.
Build note (pre-existing, NOT addressed by this PR)
Fresh cache-less CUDA-13 builds of any branch (including the current default branch) fail in the DeepEP stage before reaching this PR's changes:
tools/ep_kernels/install_python_libraries.shinstalls unpinnedtorch, which resolves cu12.x wheels under the CUDA 13.0.3 base and aborts on DeepEP's CUDA check; additionally torch2.13.0+cu130pinsnvidia-nccl-cu13==2.28.3.post1, which no longer exists on any index. CI is shielded by its registry build-cache. This is an independent defect tracked separately; local workaround used for the verification builds here: pintorch==2.13.0with the cu130 extra index underUV_OVERRIDEmappingnvidia-nccl-cu13to2.30.7.AI assistance statement
AI assistance was used in developing and verifying this change. Every changed line was reviewed by the human submitter, and all test and benchmark results were measured on the target hardware described.