Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
c69d7bb
[Perf][Spec Decode] Split-vocabulary Triton argmax for the DSpark gre…
Juntian777 Sep 20, 2026
69178e4
[Test] Simplify the greedy argmax test
Juntian777 Sep 25, 2026
3c957a6
[Perf][DSv4.1] DeepSeek-V4.1-Flash specialized decode on GB300
yaoyaoding Oct 18, 2026
bacb3b4
[DSv4.1] Address review: AGENTS.md, the rank check, CPU tests
yaoyaoding Oct 18, 2026
c5119af
[DSv4.1] Follow vLLM main: FlashInfer 0.7.2, ll_bf16 output dtype
yaoyaoding Oct 18, 2026
003c91e
[Perf][Spec Decode][DSv4.1] DSpark draft on the specialized decode
yaoyaoding Oct 18, 2026
07c01fd
Merge branch 'main' into dsv41-nvidia-low-latency-decode
benchislett Oct 21, 2026
84ca115
Merge branch 'main' into dsv41-nvidia-low-latency-decode
yaoyaoding Oct 21, 2026
b4eb6cf
Merge branch 'dsv41-nvidia-low-latency-decode' into dsv41-dspark-low-…
yaoyaoding Oct 21, 2026
9a1541d
Merge branch 'main' into dsv41-dspark-low-latency-decode
yaoyaoding Oct 22, 2026
dccd09b
Merge #61869 (dsv41-dspark-low-latency-decode, 9a1541d118) onto main …
mgoin Oct 29, 2026
19e824c
[Spec Decode] Use tl.argmax in greedy_argmax and apply it to DraftMod…
mgoin Oct 30, 2026
0185900
Merge #57770 (split-vocabulary greedy argmax, 19e824c891)
mgoin Oct 30, 2026
95536ff
[Perf][DSv4.1] Overlap mHC coefficients behind the fused all-reduce o…
mgoin Oct 29, 2026
382b4f4
[Perf][DSv4.1] DeepSeek-V4.1-Flash specialized decode on Hopper (H200…
mgoin Oct 29, 2026
9f56a46
Merge branch 'main' into dsv41-hopper-specialized-decode
mgoin Nov 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .buildkite/test_areas/models_basic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -593,18 +593,21 @@ steps:
- vllm/models/deepseek_v41/attention.py
- vllm/models/deepseek_v41/common/
- vllm/v1/worker/gpu/model_states/
- vllm/v1/worker/gpu/spec_decode/dspark/
- vllm/model_executor/layers/fused_moe/config.py
- tests/models/deepseek_v41/nvidia/specialized_decode/test_kernels.py
- tests/models/deepseek_v41/nvidia/specialized_decode/test_numerics.py
- tests/models/deepseek_v41/nvidia/specialized_decode/test_layers.py
- tests/models/deepseek_v41/nvidia/specialized_decode/test_hopper.py
- tests/distributed/test_custom_all_reduce.py
- tests/kernels/test_engram.py
commands:
# decode_backend=latency_specialized is for GB300 (SM103); no CI agent has four of them.
# B200 runs the kernels and the TP4 numerics; the model test skips.
# B200 runs the kernels and the TP4 numerics; the model and Hopper tests skip.
- pytest -v -s models/deepseek_v41/nvidia/specialized_decode/test_kernels.py
- pytest -v -s models/deepseek_v41/nvidia/specialized_decode/test_numerics.py
- pytest -v -s models/deepseek_v41/nvidia/specialized_decode/test_layers.py
- pytest -v -s models/deepseek_v41/nvidia/specialized_decode/test_hopper.py

- label: ':amd: (MI355) Kimi-K3 Specialized Decode'
key: kimi-k3-specialized-decode-amd
Expand Down
18 changes: 9 additions & 9 deletions tests/kernels/mhc/test_mhc_kernels.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@
from vllm.utils.torch_utils import set_random_seed

DEVICE = current_platform.device_type
HAS_MHC_OVERLAP_ARCH = current_platform.is_device_capability_family(
100
) or current_platform.is_device_capability(90)


@pytest.mark.parametrize(
Expand Down Expand Up @@ -304,8 +307,8 @@ def test_deepseek_v41_mhc_pre_delayed(


@pytest.mark.skipif(
not HAS_TILELANG_MHC or not current_platform.is_device_capability_family(100),
reason="SM100 TileLang mHC required",
not HAS_TILELANG_MHC or not HAS_MHC_OVERLAP_ARCH,
reason="SM90 or SM100 TileLang mHC required",
)
@pytest.mark.parametrize("num_tokens", [0, 1, 8, 9, 32, 128, 256])
@pytest.mark.parametrize("entry", ["broadcast", "identity", "carried"])
Expand Down Expand Up @@ -553,9 +556,9 @@ def test_deepseek_v41_decoder_mixes_match_torch(
entry, mhc_mode, monkeypatch, default_vllm_config
):
"""Preserve carried pre-mixes and Engram ordering at every decoder entry."""
from vllm.models.deepseek_v41.nvidia.ops.mhc import MHC_OVERLAP_MAX_TOKENS
from vllm.models.deepseek_v41.nvidia.ops.mhc import mhc_overlap_max_tokens

num_tokens = MHC_OVERLAP_MAX_TOKENS + 1 if mhc_mode == "large_batch" else 3
num_tokens = mhc_overlap_max_tokens() + 1 if mhc_mode == "large_batch" else 3
set_random_seed(0)
decoder = DeepseekV41DecoderLayer.__new__(DeepseekV41DecoderLayer)
nn.Module.__init__(decoder)
Expand All @@ -570,11 +573,8 @@ def test_deepseek_v41_decoder_mixes_match_torch(
if mhc_mode != "disabled":
from vllm.utils.deep_gemm import is_deep_gemm_supported

if (
not current_platform.is_device_capability_family(100)
or not is_deep_gemm_supported()
):
pytest.skip("SM100 DeepGEMM required for overlap")
if not HAS_MHC_OVERLAP_ARCH or not is_deep_gemm_supported():
pytest.skip("SM90 or SM100 DeepGEMM required for overlap")
decoder.mhc_stream = torch.cuda.Stream()
if mhc_mode in ("eager", "piecewise", "large_batch"):

Expand Down
Loading