Summary
Upstream vllm-project#544 ("Fix token-indexed conv-state layout in causal_conv1d spec-decode kernel") introduced the sliding-window conv-state convention for the spec-decode causal_conv1d path. Its epilogue rebuilds the state line in place after the main loop (aliased same-pointer shift, runtime-bounded loop with a per-iteration branch, K redundant global re-reads of mixed_qkvz), once per GDN layer per decode step under MTP serving. This issue tracks its cost so it is not lost, and what is still open.
What was measured (2x Arc Pro B70, TP=2, Qwen3.8-27B INT4 + MTP k=1; bench ledger A16/A17)
| level |
pre-vllm-project#544 |
vllm-project#544 |
vllm-project#544 + register writeback (vllm-project#551) |
| end-to-end greedy TPOT, same session |
14.47 ms |
14.46–14.48 ms |
14.46 ms |
| per-step decode (median ITL), all eras |
24.4–24.9 ms |
24.4–24.9 ms |
23.3–23.4 ms today |
| batched conc-32 out tok/s |
211.0 (08-25) |
— |
208.6 / 209.1 (08-27) |
kernel microbench (benchmark_causal_conv1d, spec workloads) |
baseline |
— |
-1..-4% real shapes, -11% synthetic |
End-to-end the epilogue is neutral (µs scale); the 13.76 -> 14.5 ms "decay" initially attributed to vllm-project#544 was environmental (torch-compile cache regeneration; ledger A16 addendum 3, A17). The kernel-level overhead is real and is removed by upstream PR vllm-project#551 (bit-identical state, 1303/0/128 matrix).
Open items
Summary
Upstream vllm-project#544 ("Fix token-indexed conv-state layout in causal_conv1d spec-decode kernel") introduced the sliding-window conv-state convention for the spec-decode
causal_conv1dpath. Its epilogue rebuilds the state line in place after the main loop (aliased same-pointer shift, runtime-bounded loop with a per-iteration branch, K redundant global re-reads ofmixed_qkvz), once per GDN layer per decode step under MTP serving. This issue tracks its cost so it is not lost, and what is still open.What was measured (2x Arc Pro B70, TP=2, Qwen3.8-27B INT4 + MTP k=1; bench ledger A16/A17)
benchmark_causal_conv1d, spec workloads)End-to-end the epilogue is neutral (µs scale); the 13.76 -> 14.5 ms "decay" initially attributed to vllm-project#544 was environmental (torch-compile cache regeneration; ledger A16 addendum 3, A17). The kernel-level overhead is real and is removed by upstream PR vllm-project#551 (bit-identical state, 1303/0/128 matrix).
Open items
1f30181) plus mixed-batch support (06e0d7f). The pending kernels rebase must drop the port in favor of upstream's5802a41and reconcile06e0d7fwith upstream [GDN][MTP] fix split PR bug vllm-project/vllm-xpu-kernels#537 — then re-measure per-step ITL (greedy,--save-detailed) against today's 23.3 ms / 209 t/s to confirm upstream's version carries no additional cost.--temperature 0; never bisect on the T=1.0 TPOT (acceptance noise +-2 ms).