[SM70][Draft] Extend Qwen3.8 DFlash2 concurrency paths - #476
yangzhuxinyzx merged 10 commits into
Conversation
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
|
Endpoint concurrency follow-up at Contract: four V100-SXM2-32GB GPUs, TP4, local mixed-NVFP4 27B target with official BF16 LM head, q7 probabilistic DFlash2, FP8 E5M2 target KV, FP16 draft KV, Flash-V100/FlashQLA, FULL_AND_PIECEWISE graphs, official temp=1/top-p=.95/top-k=20, sixteen fixed SPEED-Bench 1K prompts x 512 output tokens.
B2 is 6.7% below B1; do not promote the batched grouped verifier without a matched grouped-off endpoint arm. The first cold B2 was 139.26 tok/s with 11.46 s p99 TTFT due batch-specific sampling JIT and is not the steady baseline. FULL target and DFlash graph audit records hit B2/q8=16, B4/q8=32, and B8/q8=64 on all ranks. Logs hit QPN2 M<=32, FlashQLA decode, FP8 E5M2 KV, compact rejection, and request-major grouped verification. All official rows completed 16/16 full-length outputs with no errors or empty text. Caveats: the nominal prefix warmup recorded zero cache hits, so this is 1K+512 endpoint scaling rather than pure decode. The source overlay also lacked optional exact D256 prefill ops, so these are not final prefill/TTFT numbers. Greedy B1/B8 was byte-identical on 2/8 prompts and otherwise diverged into coherent text; this passes text health only, not semantic-quality equivalence. The fully QUASAR checkpoint remains unavailable. |
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
|
Follow-up: exact channel-FP8 QPN8 concurrency paths and endpoint evidence The explicit gates use the steady B1 result of 187.77 output token/s:
Retained default-off candidates:
Same-contract endpoint results:
The B2 row improves 44.9% over the old B2 result; native M32 improves B4 by 30.6%. All endpoint rows completed 16/16 requests and 512 output tokens per request, with no empty output or replacement characters. B2 acceptance was 47.62% with mean accepted length 4.33; native-M32 B4 was 51.68% / 4.62. Actual-checkpoint operator validation covers M=17/18/24/31/32 and every production dense split. All outputs are bitwise equal to concatenated M8 calls (maximum difference zero), including CUDA Graph replay. The final M=17/M=32 gate repeats all four dense projection shapes and passes. Rejected experiments:
The throughput gates remain open. Further row tiling is not enough: B4 still needs roughly another 22 ms removed from an observed approximately 57 ms speculative round, while B8 requires a structural scheduling or deployment change. The next branch should separate target, rejection/logits, draft, and host cost without CUPTI, then test request/stream partitioning or replica topology. Two Nsight attempts crashed in cuptiActivityFlushAll during multiprocess shutdown and produced no usable report. Additional localization and collective follow-up:
|
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
|
Follow-up: exact channel-FP8 QPN8 concurrency paths and endpoint evidence The explicit gates use the steady B1 result of 187.77 output token/s:
Retained default-off candidates:
Same-contract endpoint results:
The B2 row improves 44.9% over the old B2 result; native M32 improves B4 by 30.6%. All endpoint rows completed 16/16 requests and 512 output tokens per request, with no empty output or replacement characters. B2 acceptance was 47.62% with mean accepted length 4.33; native-M32 B4 was 51.68% / 4.62. Actual-checkpoint operator validation covers M=17/18/24/31/32 and every production dense split. All outputs are bitwise equal to concatenated M8 calls (maximum difference zero), including CUDA Graph replay. The final M=17/M=32 gate repeats all four dense projection shapes and passes. Rejected experiments:
The throughput gates remain open. Further row tiling is not enough: B4 still needs roughly another 22 ms removed from an observed approximately 57 ms speculative round, while B8 requires a structural scheduling or deployment change. The next branch should separate target, rejection/logits, draft, and host cost without CUPTI, then test request/stream partitioning or replica topology. Two Nsight attempts crashed in cuptiActivityFlushAll during multiprocess shutdown and produced no usable report. Additional localization and collective follow-up:
TP4-only NVFP4 verifier follow-up:
|
…p4-dflash2-concurrency-20260903-131310 Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com> # Conflicts: # docs/design/sm70_v100_migration_control.md
Signed-off-by: yangzhuxinyzx <153831768+yangzhuxinyzx@users.noreply.github.com>
This reverts commit 8df5cc7.
…t-20260907-100627 [Kernel][SM70] Integrate concurrent QPN and verifier paths (#476)
Purpose
Extend the Qwen3.8-27B NVFP4 q7 DFlash2 operator stack from B1 toward B2/B4/B8 while preserving explicit rollback and exact quality gates.
VLLM_FLASH_V100_DFLASH2_BATCHED_GROUPED_VERIFY=1.Test Plan
sm_70code generation.git diff --check.Test Result
QPN2 weighted operator saving across the 64-layer Qwen3.8 projection mix is 3.115 ms at M=16 and 2.430 ms at M=32. M=64 regresses by 4.601 ms, so production dispatch deliberately falls back there. All QPN2 rows are finite with relative-L2 about 3.3e-4 to 5.5e-4 versus FP32 and cosine approximately one.
Grouped-vs-XQA CUDA graph speedup at 16K is 5.18x/5.48x/5.50x for B2/B4/B8. At 1K it is 0.77x/3.00x/3.22x; the B2 short-context loss is why batched grouped verification is not promoted by default. Batched grouped output is bitwise equal to per-request grouped output; max difference versus the accepted XQA route is 1.53e-5 at 1K and 3.81e-6 at 16K.
Compact rejection saves 0.415/0.921/1.106 ms at B2/B4/B8 versus dense top-k/top-p plus rejection, with exact accepted lengths and valid tokens.
Scope limitation
This is operator evidence, not an endpoint throughput claim. The fully QUASAR checkpoint is not present on this host. Real layer-55 TP4 weights from the local mixed NVFP4 checkpoint cover both MLP shapes; deterministic native-E2M1 tensors cover the remaining attention and GDN shapes. A matched fully QUASAR TP4 endpoint matrix is still required before changing the two default-off concurrency switches.