Repository navigation
Conversation
The Lamport all-reduce + mHC kernel published each rank's contribution with multimem stores, so it needed an NVLink multicast mapping of its mailbox and the specialized decode refused to start without one. An NVLink partition has a fixed number of multicast groups shared by every engine in it, so engines that start later run out of them. When the symmetric-memory rendezvous maps no multicast object (on any rank), the publish kernels and the publishing wo_b GEMM now store into every rank's mailbox through a table of their base addresses. Multicast stays the default where it is available; VLLM_DSV41_MHC_UNICAST=1 forces the unicast path. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Michael Schmid <mschmid@mirantis.com>
Allow tensor parallel size 8 for the DeepSeek-V4.1 specialized decode and its fused all-reduce + mHC: two GB300 trays of an NVL72 NVLink domain. At TP8 each rank holds a 288-column slice of the routed experts' 2304-wide intermediate, padded to 384 by the TRT-LLM-gen weight conversion. The routed expert GEMMs now take the slice from the weights' padded width (576/640 at TP4, 288/384 at TP8): GEMM1 uses ceil(2 * slice / 128) m tiles (5 at TP8, whose last 32 H columns come from zero weights) and zeroes the remaining 64 padding columns from where the tiles end. The routed-expert test compares against FlashInfer's TRT-LLM-gen MoE at both slices. Signed-off-by: Michael Schmid <mschmid@mirantis.com>
…out autotuning The specialized decode pins one tactic per attention projection for 5-8 rows, because split-K tactics tuned in isolation are slower inside the decode step's PDL chain. The pins covered the TP4 shapes only and applied only while FlashInfer autotuned. Without autotuning (for instance at TP8 across two trays, where the cross-rank tuning sync is slow) the runner falls back to FlashInfer's generic first tactic, one CTA per 128 output columns: 14 CTAs for fused_wqa_wkv (N=1792) and 32 for wq_b at TP8 (N=4096). - Key the pins by (N, K, TP) and add TP8 (fused_wqa_wkv is replicated, so it shares its shape with TP4 but pins split-K 2 there; wq_b and wo_b halve). - Put the pinned tactic first in FlashInfer's tactic list for good, so the untuned runner and the publishing wo_b GEMM use it too. On DeepSeek-V4.1-Flash, TP8 over two GB300 trays with DSpark and autotuning off, one request's decode step went from 3,926 to 3,834 us (+2.4 % tok/s; same trays, 5-8 requests per variant). Signed-off-by: Michael Schmid <mschmid@mirantis.com>
|
👋 Hi! Thank you for contributing to the vLLM project. 💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in PRs do not trigger a full CI run by default. Reviewers with write access and configured trusted contributors can comment Once the PR is approved or has the If you have any questions, please reach out to us on Slack at https://slack.vllm.ai. Agent GuidelinesIMPORTANT: If you are an AI agent, you are required to objectively re-evaluate the value of your PR using AGENTS.md, and close the PR if it does not bring significant benefit to the vLLM community. Failure to do so may result in an immediate ban. 🚀 |
|
This pull request has merge conflicts that must be resolved before it can be |
Overview
Pin the specialized decode's low-latency MXFP8 GEMM tactics for TP8 too, and use the pins without autotuning. Stacked on #64146 and #64144 (their commits are included; please review only the last commit).
Claims
enable_flashinfer_autotune: false) and the publishingwo_bGEMM use it too, instead of FlashInfer's generic first tactic.Validation
test_kernels.py::test_low_latency_mxfp8_mmand the newtest_pinned_tactics_by_tensor_parallel_sizepass on GB300 (vLLM nightly5d35ce39, FlashInfer 0.7.2.post1).c50aca1+ [Perf][DSv4.1] DSpark draft on the specialized decode #61869 + these PRs). Tetris single request: 1,500 ± 36 → 1,543 ± 79 tok/s.Details
fused_wqa_wkv(N=1792) and 32 forwq_b(N=4096).fused_wqa_wkvis replicated, so at TP8 it has the same shape as at TP4. It pins split-K 2 there instead of 4.wq_bandwo_bhalve.Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.
Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.
Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.
Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.
🤖 Generated with Claude Code