Expand description
Qwen3.5 MTP (NextN) greedy speculative decode (research/mtp/MTP-PLAN.md §A/§B/§C/§D).
Greedy spec decode is MATHEMATICALLY EXACT: the accepted+bonus token stream is token-for-token
identical to plain greedy generate. This module provides:
mtp_head_forward(§A, T=1): one NextN draft-token forward.decode_step_t(§D.3, T=K+1): batched target verify forward, all-column logits.generate_spec(§B): the draft/verify/accept/rollback orchestrator. Cache snapshot/rollback lives in cache.rs (§D.4). The MTP head uses its OWN scratch KV (§D.6), PERSISTENT over the committed sequence (seeMtpScratch).
Structs§
- Spec
Sampling - Scratch KV for the MTP block (one full-attn layer).
- Spec
Session
Traits§
- Spec
Constraint - GRAMMAR HOOK for constrained spec decode (lane/constrained-full, 2026-08-03). The engine
stays llguidance-agnostic: the server adapts its per-session grammar state behind this
trait. CONTRACT (the verify-side truncation rule — token-identical to constrained plain
greedy decode): the exactness walk runs UNMASKED first; the hook then (a) truncates
acceptance at the first grammar-illegal accepted token, and (b) when the truncation fired
or the bonus is illegal, the engine recomputes that slot as the MASKED argmax of the
target’s own verify column (an unmasked argmax that is grammar-legal IS the masked argmax
— masking only removes tokens — so the common case pays nothing).
consumeadvances the state with each EMITTED token in order; EOS handling is the implementor’s job (skip).