Repository navigation
[DeepSeek-V4] Add an opt-in non-paged indexer for long-context prefill - #29619
Conversation
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
CI triage note for current head The actionable blocker I see is only the The generated diff is just the The other red PR Test entries I sampled are gate/aggregate fallout: |
|
/tag-and-rerun-ci |
|
/rerun-test test/registered/models_e2e/test_deepseek_v4_flash_fp4_megamoe_b200.py test/registered/models_e2e/test_deepseek_v4_flash_fp8_h200.py test/registered/cp/test_deepseek_v4_flash_fp4_b200_cp.py |
|
Results for 🚀 🚀 |
Motivation
DeepSeek-V4's C4 indexer currently evaluates logits directly from paged KV storage. For long-context, unpadded single-request
EXTENDbatches, gathering the C4 index keys and scales into contiguous storage enables the faster non-paged DeepGEMMfp8_mqa_logitspath while preserving the existing top-k semantics.This PR adds that path behind a default-off environment flag.
Related to #23602.
Modifications
EXTENDbatches.Accuracy Tests
Speed Tests and Profiling
End-to-end experiment
The treatment prefill worker used the following configuration; the baseline used the same command with
SGLANG_OPT_DSV4_NONPAGED_INDEXER=0.Workload: fixed nominal-128K input, output length 1, concurrency 8, and server-side full-chunk prefill throughput over a fixed 300-second window.
eb08e8d517The equal-weight aggregate across the 3 prototype pairs x 4 DP ranks was +4.665%, with all 12/12 per-rank effects positive. The exact clean PR head was then rerun as a same-placement serial pair: rank-equal gain was +2.708%, pooled-median gain was +2.648%, and all 4/4 DP-rank effects were positive (
+4.089% / +1.273% / +4.251% / +1.258%). Both arms used the same source, workload/configuration, and fixed 300-second analysis contract; the feature flag was the treatment difference. This single final-head pair validates direction but is not a stable-magnitude or default-on claim.Kernel microbenchmark
At 128K:
Kernel Breakdown
Setup: 1× GB300 node (4 GPUs), TP4/DP4/EP4 with DP attention and FP8 KV cache. Fixed 128K ISL, OSL=1, concurrency=32, and an 8,192-token prefill chunk per rank; cache reuse was disabled.
Across 480 matched indexer-layer calls, the replaced GPU span decreased from 1.524 ms to 1.068 ms at p50, with a 29.9% reduction by paired totals.
Before:

sm100_fp8_paged_mqa_logits (1.522 ms)
After:


_get_k_and_s_triton_kernel + deep_gemm::sm100_fp8_mqa_logits ( <1ms)
Checklist
Review and Merge Process
/tag-and-rerun-ci,/tag-run-ci-label,/rerun-failed-ciCI States
Latest PR Test (Base): ✅ Run #28550494176
Latest PR Test (Extra): ⏳ Run #28853485756