Skip to content

Investigate rewriting the #544 spec conv-state path (causal_conv1d spec decode) without its performance cost #4

Description

@CySpiegel

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    perfPerformance trackingupstreamTracks an upstream vllm-project change

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions