alphaFeedback

WorksComputer Science

HybridSpec: Throughput-Aware Speculative Decoding for Hybrid GDN-MoE Models

AI contributions
  • generative AI tools
View details

Abstract

In speculative decoding, parallel drafters such as DFlash make drafting cheap, so target verification dominates each round. A central choice is the verification length, the number of tokens that the target processes in each round. Verifying more draft tokens can accept more of them, but work after the first rejection is wasted. For hybrid target models that combine Gated DeltaNet (GDN) and mixture-of-experts (MoE) layers, verification time grows much faster with this length than for dense models. In a single-request profile of Qwen3.6-35B-A3B with DFlash, it grew by 71% from length 4 to 16, almost entirely in GDN and MoE layers, compared with 4%-6% for a dense Qwen3-4B target. Each GDN layer must update a recurrent state at every token and recover it at the end of the accepted prefix. The MoE cost depends on the experts that the tokens activate, which are known only once verification runs. We present HybridSpec, which selects the verification length on the GPU from draft-side acceptance estimates and measured target latency. Verification then runs this length plus one extra token up to the first MoE router, before any expert runs. There, a lightweight routing correction uses the observed expert assignments to decide whether to keep that token. The rest of verification runs only on the selected tokens. Block-parallel GDN kernels avoid storing a state after every token and reconstruct the accepted state of every GDN layer in one launch. In isolated benchmarks at verification lengths 4 to 16 with every draft token accepted, these kernels, including accepted-state reconstruction, are 1.54×1.54\times-4.04×4.04\times faster than the default kernels. With three GDN-MoE target models in single-request greedy decoding, HybridSpec is 1.75×1.75\times-1.88×1.88\times faster than autoregressive decoding and 1.30×1.30\times-1.33×1.33\times faster than DFlash.

Introduction

Speculative decoding accelerates autoregressive generation by using a drafter to propose multiple tokens and a target model to verify them in a single forward pass, accepting draft tokens until the first rejection (Leviathan et al., 2023; Chen et al., [3]). Recent parallel and semi-autoregressive drafters, such as the diffusion-based DFlash, generate a block of draft tokens in one forward pass (Hui et al., 2026; Chen et al., [4]; Cheng et al., [7]), making drafting inexpensive and shifting the main cost of each draft-and-verify round to verification, as Figure 1a shows. This makes the verification length, i.e., the number of draft tokens processed by the target in each round, a key design choice. A longer verification length may accept more tokens, but working on any tokens after the first rejection incurs wasted computation.

Profiled GPU time per verification call for Qwen3.6-35B-A3B with DFlash

Figure 1. Profiled GPU time per verification call for Qwen3.6-35B-A3B with DFlash. (a) Times in ms, with target/drafter ratios in bold. (b) Bold percentages are increases from length 4 to 16.

Verification time grows much more rapidly with speculative length for the hybrid architectures used in recent open models such as Jamba, MiniMax-01, Kimi Linear, and Qwen3.5 (Lieber et al., 2024; MiniMax et al., 2025; Kimi Team et al., 2025; Qwen Team, 2026b) than for dense models. These architectures combine linear-attention or state-space layers, such as Gated DeltaNet (GDN) (Yang et al., 2025), with mixture-of-experts (MoE) layers. A GDN layer maintains a fixed-size recurrent state rather than a growing key–value cache, while an MoE layer routes each token to only a small subset of experts, 8 of 256 in the models we evaluate. In our profile of Qwen3.6-35B-A3B with a DFlash drafter at batch size one, increasing the verification length from 4 to 16 raises verification time by 71%, and Figure 1b shows that almost all of the increase comes from the GDN and MoE layers. In contrast, verification time for a dense Qwen3-4B target increases by only 4%–6%, since its batch-one cost is dominated by weight loading. For GDN, the default SGLang verifier (Zheng et al., 2024) updates the recurrent state at every token and stores a full copy after each update to enable rollback to the accepted prefix. For MoE, verification cost depends on expert reuse: additional tokens are inexpensive when they reuse already active experts but more costly when they activate new ones. Because experts are selected only when the target executes, a verification length chosen beforehand can only estimate this cost.

Existing length selectors, such as Sequoia [6], DSpark [7], D-Cut (Liu et al., 2026), and EVICT (Pan et al., 2026), decide before verification from draft confidence or profiled costs. EcoSpec predicts draft-token experts with a separately trained model (Xie et al., 2026), and FASER prunes tokens at intermediate target layers [5]. None of them uses the target’s own expert assignments before the experts run.

HybridSpec selects the verification length based on measured target-model latency and acceptance estimates derived from the drafter’s own signals. Since both GDN and MoE costs increase with the number of verified tokens, reducing the verification length lowers both costs. HybridSpec then verifies this length plus one additional draft token up to the first MoE router, which we call the router boundary. At this point, a lightweight routing correction uses the observed expert assignments to retain the extra token only when its expected acceptance benefit outweighs the additional verification latency. To further accelerate GDN, HybridSpec employs kernels that process all verification tokens in parallel without storing per-token recurrent states. Our contributions are as follows:

  • Throughput-aware length selection. A GPU-resident policy chooses the verification length to maximize decode throughput, and a lightweight routing correction can add one token at the router boundary. In exact arithmetic, every selected length provably preserves the target’s greedy outputs and sampling distribution.

  • Two-stage verification at the router boundary. Verification pauses after the first MoE router and resumes only on the selected tokens, with no CPU round trip or recomputation.

  • Parallel GDN verification and state reconstruction. GPU kernels verify all tokens of a round in parallel within each GDN layer and rebuild the accepted states of all GDN layers in one launch. In isolated benchmarks with every draft token accepted, they are 1.54×1.54\times–4.04×4.04\times faster than the default SGLang kernels at lengths 4 to 16.

  • End-to-end speedups. On three GDN–MoE target models under greedy decoding, HybridSpec is 1.75×1.75\times–1.88×1.88\times faster than autoregressive decoding and 1.30×1.30\times–1.33×1.33\times faster than vanilla DFlash, which verifies every draft token.

Background and Related Work

Speculative decoding and adaptive verification

Speculative decoding verifies draft tokens with the target model, accepting them until the first mismatch, after which the target generates its own token [3] (Leviathan et al. 2023). This process exactly preserves the target model’s greedy output and sampling distribution. Tree-based methods verify multiple candidate continuations in a single target pass (Miao et al., 2024). Parallel drafters generate multiple tokens simultaneously using extra decoding heads [2], a shared learnable hidden state (Hui et al., 2026), or a lightweight diffusion model [4]. EAGLE-3 instead drafts autoregressively using features from multiple target layers (Li et al., 2025), while DSpark combines parallel and sequential drafting [7]. In this work, we fix the parallel drafter and focus on reducing verification cost.

Adaptive methods dynamically determine how many draft tokens to verify or how speculation should be structured. SpecDec++ formulates draft-length selection as a stopping problem (Huang et al., 2025a), while online adaption adjusts speculative configurations during inference (Liu et al., 2025).

EAGLE-2 constructs its draft tree based on draft confidence (Li et al., 2024), and Sequoia optimizes speculation trees using draft probabilities together with hardware costs [6]. DSpark selects verification lengths from prefix-level acceptance estimates and an engine-specific throughput profile [7], while D-Cut jointly prunes draft tokens across a batch using draft confidence and a runtime cost model (Liu et al., 2026). For MoE targets, Cascade adapts verification budgets (Saxena et al., 2025), EVICT truncates draft trees using drafter signals and profiled verification costs (Pan et al., 2026), and MoESD studies speculative decoding for sparse models (Huang et al., 2025b). EcoSpec prioritizes draft-tree nodes likely to reuse experts using a small model that predicts the target’s expert assignments (Xie et al., 2026). FASER, designed for continuous-batching serving, prunes tokens predicted to be rejected at intermediate target layers [5].

Gated DeltaNet and chunkwise verification

GDN is a linear-attention layer that keeps a fixed-size state matrix as a memory from keys to values (Katharopoulos et al., 2020; Yang et al., 2025). In the evaluated models, GDN layers are interleaved with softmax-attention layers, and every layer ends with an MoE block. For one head at token position ii, let qi,ki∈Rdkq_i, k_i \in\mathbb{R}^{d_k} be the query and key, vi∈Rdvv_i \in\mathbb{R}^{d_v} the value, and Si∈Rdv×dkS_i \in\mathbb{R}^{d_v \times d_k} the state after token ii. Linear projections followed by a short causal convolution produce qiq_i, kik_i, and viv_i, and qiq_i and kik_i are normalized to unit length. Each token decays the state by αi∈(0,1)\alpha_i \in(0, 1) and then corrects the value stored under its own key with a writing strength βi∈(0,1)\beta_i \in(0, 1). Both come from linear projections, and GDN applies

zi=βi(vi−αiSi−1ki),Si=αiSi−1+zikiT.(1)z_i = \beta_i \left(v_i - \alpha_i S_{i-1} k_i\right), \qquad S_i = \alpha_i S_{i-1} + z_i k_i^{\mathsf{T}}. \tag*{(1)}

The update zi∈Rdvz_i \in\mathbb{R}^{d_v} moves the value stored under kik_i toward viv_i by a fraction βi\beta_i, which is the delta rule (Schlag et al., 2021). The output oi=Siqio_i = S_i q_i reads the updated state with the query, and we omit later output transformations such as normalization and the output gate.

Autoregressive decoding applies Equation (1) one token at a time. A verifier that does the same must store SiS_i, a dv×dkd_v \times d_k matrix per head, after every token, so that it can later restore the state at the end of whichever prefix is accepted. Verification can avoid this cost because all tokens of the target input, the tokens that the target processes in one round, are known in advance. Chunkwise formulations, developed for efficient training, process the tokens of a chunk in parallel [9] (Yang et al. 2024). Number the tokens of the target input 1,…,w1,\ldots,w, and let S0S_0 be the state before them. With the cumulative log-decay gi=∑j=1ilog⁡αjg_i = \sum_{j=1}^{i} \log\alpha_j, unrolling Equation (1) from S0S_0 gives:

Si=egiS0+∑j=1iegi−gjzjkjT.(2)S_i = e^{g_i} S_0 + \sum_{j=1}^{i} e^{g_i-g_j} z_j k_j^{\mathsf{T}}. \tag*{(2)}

Substituting this expression for Si−1S_{i-1} into Equation (1) and stacking kiTk_i^{\mathsf{T}}, viTv_i^{\mathsf{T}}, and ziTz_i^{\mathsf{T}} as the rows of K∈Rw×dkK \in\mathbb{R}^{w \times d_k} and V,Z∈Rw×dvV, Z \in\mathbb{R}^{w \times d_v} gives one lower-triangular linear system for all ww updates,

HZ=diag⁡(β)(V−diag⁡(eg)KS0T),(3)HZ = \operatorname{diag}(\beta)\left(V-\operatorname{diag}(e^g)KS_0^{\mathsf{T}}\right), \tag*{(3)}

where β=(β1,…,βw)\beta= (\beta_1,\ldots,\beta_w), eg=(eg1,…,egw)e^g = (e^{g_1},\ldots,e^{g_w}), and HH has ones on its diagonal and entries Hij=βiegi−gjkiTkjH_{ij} = \beta_i e^{g_i-g_j} k_i^{\mathsf{T}} k_j for j<ij < i. Solving this small w×ww \times w triangular system once therefore replaces the ww sequential state updates. The solve and the dense matrix products that then give all ww outputs use only S0S_0 and matrices with ww rows, so no intermediate dv×dkd_v \times d_k state is formed. We call (zi,ki,gi)(z_i,k_i,g_i) the compact factors of token ii, because Equation (2) reconstructs any state SiS_i from S0S_0 and the factors of tokens 1,…,i1,\ldots,i. HybridSpec uses them to reconstruct the state after the accepted prefix.

Speculative decoders for recurrent targets differ in how they recover the state after the accepted prefix. STree accumulates state transitions to verify token trees (Wu et al., 2025). SpecLLa, Bole, and TreeWY retain compact factors from which the accepted state is reconstructed [12] (Wang et al. 2026b). Other hybrid and recurrent systems likewise avoid storing a state for every verified token (Wang et al., 2024; Wu et al., 2024). Concurrent work, ReplaySSM, verifies drafts with a chunkwise triangular solve and writes the state back only when its ring buffer for recent GDN updates is flushed (Liou & Dao, 2026). Its reference implementation in vLLM (Kwon et al., 2023) targets large serving batch sizes, whereas HybridSpec targets single-request decoding. Equation (3) is the standard chunkwise computation. HybridSpec contributes fused, block-parallel verification kernels and a commit kernel that reconstructs the accepted state of every GDN layer in one launch.

HybridSpec

HybridSpec selects the verification length entirely on the GPU and splits target verification at the router boundary: immediately after the MoE router in the first layer (Layer 0) assigns experts, but before any routed expert is executed. Figure 2 illustrates one decoding round, and Algorithm 1 in Appendix § 9.§ 1 details the complete procedure.

One round of HybridSpec in single-request greedy decoding

Figure 2. One round of HybridSpec in single-request greedy decoding, with illustrative values: nominal verification length w0=6w_0 = 6, executed verification length w=7w = 7, and A=4A = 4 accepted draft tokens. Circled numbers mark the steps described in § 3.2.

Setting and throughput objective

We first formulate HybridSpec for greedy decoding with sequence batch size B=1B = 1. In each round, a fixed drafter produces a proposal block of DD draft tokens. Together with the anchor, the newest emitted token that the target has not yet processed, this block forms a full target input of length W=D+1W = D + 1. HybridSpec retains the first M≤DM \le D draft tokens, which we call the proposal prefix, and verifies the corresponding target input of length w=M+1w = M + 1. Thus DD and MM count draft tokens, whereas WW and ww count target input tokens, including the anchor. In all evaluated models, Layer 0 applies a GDN layer followed by an MoE block.

At the start of a round, x0x_0 denotes the anchor and did_i the ii-th draft token. To make the first MM draft tokens eligible for acceptance, the target processes (x0,d1,…,dM)(x_0, d_1, \ldots, d_M). If a nonterminal round accepts A≤MA \le M draft tokens, it emits R=A+1R = A + 1 tokens and commits m=A+1m = A + 1 input tokens. These counts are equal but refer to different sequences: the emitted tokens are (d1,…,dA,xnew)(d_1, \ldots, d_A, x_{\mathrm{new}}), whereas the committed input tokens are (x0,d1,…,dA)(x_0, d_1, \ldots, d_A). Here xnewx_{\mathrm{new}} is the token that the target emits after the accepted prefix. The old anchor is therefore consumed even when A=0A = 0, and xnewx_{\mathrm{new}} becomes the next anchor. Both sequences are truncated at an end-of-sequence (EOS) token or the output limit.

Verifying only a prefix must not change the output. Under greedy decoding, HybridSpec emits the same tokens as target-only decoding in exact arithmetic, as Proposition 1 in Appendix § 11.§ 2 proves under the assumptions stated there. Under temperature sampling, the verifier accepts each draft token with the probability that the target assigns to it and, after a rejection, samples a replacement from the target’s distribution with that token excluded. Any verification length fixed before these draws, including the length after the routing correction, therefore preserves the output distribution of target-only sampling in exact arithmetic, as Proposition 2 proves.

Let I\mathcal{I} denote the information available when selecting a verification length and ADA_D the number of draft tokens accepted from the full proposal block. A proposal prefix of length MM has min⁡(AD,M)\min(A_D, M) accepted draft tokens, and the round emits one more token. The prefix-acceptance probability pi(I)=P(AD≥i∣I)p_i(\mathcal{I}) = \mathbb{P}(A_D \ge i \mid\mathcal{I}) is the probability that the first ii draft tokens are accepted. For a nonterminal round, the expected number of emitted tokens is G(M∣I)=1+∑i=1Mpi(I)G(M \mid\mathcal{I}) = 1 + \sum_{i=1}^{M} p_i(\mathcal{I}). We compare all values of MM at the same initial state and proposal block. Let Lˉ(M∣I)\bar{L}(M \mid\mathcal{I}) denote the expected latency of a complete round, including drafting, all target computation, length-selection and graph-launch overhead, acceptance, and state commit. The objective is pooled decode throughput, the total number of emitted tokens divided by the total decode time. For a fixed set of rounds with information I1,…,IN\mathcal{I}_1, \ldots, \mathcal{I}_N, choosing MrM_r in round rr gives the pooled throughput

∑r=1NG(Mr∣Ir)∑r=1NL(Mr∣Ir).(4)\frac{\sum_{r=1}^{N} G(M_r \mid\mathcal{I}_r)}{\sum_{r=1}^{N} L(M_r \mid\mathcal{I}_r)}. \tag*{(4)}

This ratio of sums is not the average of the per-round ratios G/LG/L, so the best choice in one round depends on the throughput of all rounds. Let ρ∗\rho^* be the maximum of Equation (4). By Dinkelbach’s theorem [10], a set of choices attains ρ∗\rho^* exactly when every round maximizes G(Mr∣Ir)−ρ∗L(Mr∣Ir)G(M_r \mid\mathcal{I}_r) - \rho^*L(M_r \mid\mathcal{I}_r). Appendix § 10 analyzes this per-round score.

Two-stage verification at the router boundary

After drafting, the draft-side selector chooses the nominal verification length w0w_0 from the drafter’s signals and writes it to GPU memory (step 1 in Figure 2). Let wrem∈{2,…,W}w_{\mathrm{rem}} \in\{2, \ldots, W\} be the largest verification length that the remaining output budget allows, but at least 2. Stage 0 covers the first min⁡(w0+1,wrem)\min(w_0 + 1, w_{\mathrm{rem}}) tokens of the target input and stops at the router boundary, before any routed expert runs. HybridSpec captures in advance one CUDA Graph, a recorded sequence of GPU kernels, for each possible Stage-0 length. A conditional graph node (NVIDIA, 2026) reads the Stage-0 length and launches the matching graph without a CPU read of the length (step 2). Stage 0 then runs these tokens through the Layer-0 GDN layer and MoE router (step 3). It retains the hidden states and residuals needed to resume the layer, plus each token’s expert assignments and routing weights.

At the router boundary, the routing correction decides whether to keep dw0d_{w_0}, the extra draft token that Stage 0 processed beyond the first w0w_0 tokens (step 4). The draft-side selector chose w0w_0 before the target ran, so it could charge dw0d_{w_0} only the average expert cost. The actual cost is lower if dw0d_{w_0} reuses experts already selected by the first w0w_0 tokens and higher if it activates new ones. Because Stage 0 has already routed dw0d_{w_0}, the correction counts the new Layer-0 experts that it adds and uses this count to predict its expert cost in all MoE layers. It keeps dw0d_{w_0}, setting the corrected verification length to wc=w0+1w_c = w_0 + 1, only if its acceptance probability exceeds the predicted latency that it adds, converted into tokens at the pooled throughput rate, and otherwise sets wc=w0w_c = w_0, as Equation (6) formalizes. The executed verification length is w=min⁡(wc,wrem)w = \min(w_c, w_{\mathrm{rem}}). Stage 1 then processes the first ww tokens from the Layer-0 experts through the final layer without repeating Stage 0. HybridSpec likewise captures one Stage-1 graph for each possible value of ww, and a second conditional graph launches the graph for ww (step 5). This graph reads the retained values of the first ww tokens, builds the attention and GDN metadata for length ww, and executes the final normalization and projection and the greedy verification of the w−1w - 1 draft tokens (step 6).

Once verification accepts AA draft tokens, the Stage-1 graph ends with the commit, which advances the attention and convolution caches, as well as the target hidden states that the drafter reads, through the m=A+1m = A + 1 committed tokens (step 7). Layer-0 GDN retains compact factors for the Stage-0 tokens, and later GDN layers retain factors for the ww selected tokens. A commit kernel then rebuilds the accepted state of every GDN layer from these factors in one launch (step 8).

Draft-side selection and routing correction

The length policy has two parts: the draft-side selector, which makes the main decision before target execution, and a lightweight routing correction, which runs after Stage 0 and can add one token. The fixed drafter supplies a top-1 confidence and an entropy for each of its D=15D = 15 draft tokens. Before Layer 0, the selector calibrates the confidence and computes an entropy-change feature within the proposal block. It estimates conditional acceptance probabilities c^i≈P(AD≥i∣AD≥i−1,I)\hat{c}_i \approx\mathbb{P}(A_D \ge i \mid A_D \ge i - 1, \mathcal{I}) and prefix probabilities p^i=∏j=1ic^j\hat{p}_i = \prod_{j=1}^{i} \hat{c}_j, so 1≥p^1≥⋯≥p^D≥01 \ge\hat{p}_1 \ge\cdots\ge\hat{p}_D \ge0. In terms of verification length w=M+1w = M + 1, the expected number of emitted tokens GG is 1+∑i=1w−1pi1 + \sum_{i=1}^{w-1} p_i. Over the nominal verification lengths W0={2,…,W}\mathcal{W}_0 = \{2, \ldots, W\}, the selector chooses

w0=arg max⁡w∈W0[1+∑i=1w−1p^i−ρCtgt(w)],(5)w_0 = \underset{w \in\mathcal{W}_0}{\operatorname{arg\,max}} \left[ 1 + \sum_{i=1}^{w-1} \hat{p}_i - \rho C_{\mathrm{tgt}}(w) \right], \tag*{(5)}

where the target-cost curve Ctgt(w)C_{\mathrm{tgt}}(w) is the measured target latency at length ww and ρ>0\rho> 0 is a calibrated estimate of ρ∗\rho^{*} that converts latency into tokens. The score is the per-round Dinkelbach objective with estimated acceptance probabilities. It uses CtgtC_{\mathrm{tgt}} in place of LL, because length-independent costs do not change its maximizer. Ties favor the shorter target input.

The routing correction uses the expert assignments observed in Stage 0 only to revise the latency estimate, and it leaves the acceptance probabilities p^i\hat{p}_{i} unchanged. Let U0(w)U_{0}(w) be the number of distinct Layer-0 experts selected by the first ww tokens of the target input. Extending the target input from w0w_{0} to w0+1w_{0}+1 adds draft token dw0d_{w_{0}} and raises the expected number of emitted tokens by p^w0\hat{p}_{w_{0}}. Because drafting and Stage 0 are complete when the correction runs, the extension changes only the latency of Stage 1. The curve increment Ctgt(w0+1)−Ctgt(w0)C_{\mathrm{tgt}}(w_{0}+1)-C_{\mathrm{tgt}}(w_{0}) in Equation (5) differs from this change in two ways that the correction can account for. First, it includes the cost ss of running one more token through the Layer-0 GDN layer and router, which Stage 0 has already paid for dw0d_{w_{0}}. Second, it charges expert time at its calibration average. At batch size one, each expert processes only a few tokens, so MoE latency depends mainly on the number of distinct experts. Each distinct (layer, expert) pair therefore adds about η\eta to the latency. Let nalln_{\mathrm{all}} be the number of new (layer, expert) pairs that dw0d_{w_{0}} adds across all MoE layers. The curve thus charges about ηnˉall(w0)\eta\bar{n}_{\mathrm{all}}(w_{0}) for them, where nˉall(w0)\bar{n}_{\mathrm{all}}(w_{0}) is the average of nalln_{\mathrm{all}} at this position. Stage 0 observes only the Layer-0 part of nalln_{\mathrm{all}}, nnew=U0(w0+1)−U0(w0)n_{\mathrm{new}}=U_{0}(w_{0}+1)-U_{0}(w_{0}). Because later-layer routing correlates with Layer-0 routing, as Appendix § 12.§ 1 shows, the correction replaces nˉall(w0)\bar{n}_{\mathrm{all}}(w_{0}) with nˉall(w0∣nnew)\bar{n}_{\mathrm{all}}(w_{0}\mid n_{\mathrm{new}}), the average of nalln_{\mathrm{all}} given nnewn_{\mathrm{new}}. Subtracting ss from the curve increment and making this replacement gives ΔLc\Delta L_{\mathrm{c}}, the estimated Stage-1 latency increase. The correction applies the additive score of Equation (5), with the same rate ρ\rho, to this one-step choice:

ΔLc=Ctgt(w0+1)−Ctgt(w0)−s+η(nˉall(w0∣nnew)−nˉall(w0)),\Delta L_{\mathrm{c}}=C_{\mathrm{tgt}}(w_{0}+1)-C_{\mathrm{tgt}}(w_{0})-s+\eta\left(\bar{n}_{\mathrm{all}}(w_{0}\mid n_{\mathrm{new}})-\bar{n}_{\mathrm{all}}(w_{0})\right),
wc={w0+1,if p^w0>ρΔLc,w0,otherwise.(6)w_{\mathrm{c}}= \begin{cases} w_{0}+1, & \text{if }\hat{p}_{w_{0}}>\rho\Delta L_{\mathrm{c}},\\ w_{0}, & \text{otherwise.} \end{cases} \tag*{(6)}

Because w0w_{0} maximizes the score in Equation (5) under the same curve, p^w0≤ρ[Ctgt(w0+1)−Ctgt(w0)]\hat{p}_{w_{0}}\leq\rho\left[C_{\mathrm{tgt}}(w_{0}+1)-C_{\mathrm{tgt}}(w_{0})\right] whenever w0<Ww_{0}<W. The correction can therefore expand only if dw0d_{w_{0}} costs less than the curve predicts, that is, only if s>η(nˉall(w0∣nnew)−nˉall(w0))s>\eta\left(\bar{n}_{\mathrm{all}}(w_{0}\mid n_{\mathrm{new}})-\bar{n}_{\mathrm{all}}(w_{0})\right).

The correction adds at most one token because Stage 0 must process every token that the correction might add, at cost ss per token in every round. If w0=Ww_{0}=W or wrem≤w0w_{\mathrm{rem}}\leq w_{0}, Stage 0 does not cover position w0+1w_{0}+1, and the correction does not expand. Acceptance parameters are fitted on the calibration prompts, latency is measured on the evaluated runtime, and all parameters are frozen before test evaluation. Appendix A.2 describes the calibration.

Parallel GDN verification and accepted-state reconstruction

When a GDN layer processes uu tokens, the default SGLang verifier updates its state one token at a time and writes a full state after every token, requiring O(udvdk)O(u d_{v}d_{k}) elements per head. HybridSpec instead treats the target input as a single chunk and processes all uu tokens in parallel, as Figure 3 shows. Its block-parallel triangular-solve kernel solves Equation (3), computes the outputs from the result, and retains only the compact factors (zi,ki,gi)(z_{i},k_{i},g_{i}), which require O(u(dv+dk))O(u(d_{v}+d_{k})) elements. Both counts exclude S0S_{0} and workspace. The Layer-0 GDN layer precedes the router, so it runs on the Stage-0 tokens with u=min⁡(w0+1,wrem)u=\min(w_{0}+1,w_{\mathrm{rem}}), and later GDN layers run with u=wu=w in Stage 1. For 2≤w≤162\leq w\leq16, the kernel is compiled for each length, so they evaluate only the selected tokens, and exploit the small size of HH with closed-form 4×44\times4 block inverses and an exact truncated series. A joint producer computes all input projections and the convolution in one launch.

GDN verification and accepted-state reconstruction in the default SGLang verifier and HybridSpec

Figure 3. GDN verification and accepted-state reconstruction in the default SGLang verifier and in HybridSpec. The default verifier steps through the uu tokens one at a time, whereas HybridSpec processes all uu tokens in parallel and rebuilds the accepted states of all GDN layers in parallel, in one launch. Teal marks the accepted state and the factors of the mm committed tokens.

After verification, each GDN layer must advance its state through the m=A+1m=A+1 committed tokens, namely the anchor and the accepted draft tokens, as the right side of Figure 3 shows. Let Z1:mZ_{1:m} and K1:mK_{1:m} denote the first mm rows of ZZ and KK in Equation (3). With S0S_{0} the verifier’s state at the start of the round, the accepted state is Equation (2) at i=mi=m. In matrix form, it reads

Sm=egmS0+Z1:mTdiag⁡(egm−g1,…,egm−gm)K1:m.(7)S_{m}=e^{g_{m}}S_{0}+Z_{1:m}^{\mathsf{T}}\operatorname{diag}\left(e^{g_{m}-g_{1}},\ldots,e^{g_{m}-g_{m}}\right)K_{1:m}. \tag*{(7)}

Because HH is lower triangular, the first mm rows of ZZ depend only on the first mm tokens. Discarding the rejected suffix therefore leaves Z1:mZ_{1:m} unchanged in exact arithmetic, so the commit kernel reuses the factors computed during verification. The HybridSpec kernels store kik_{i} and gig_{i} rather than decay-scaled keys, so the commit kernel can form the decay weights egm−gie^{g_{m}-g_{i}} for any mm. Accepted-state reconstruction is independent across GDN layers, so one commit kernel launch reconstructs the state of every GDN layer. The kernel accumulates in 32-bit floating point (FP32). Only this reconstruction is parallel across layers, and the target forward pass remains sequential.

Evaluation

We first compare HybridSpec end to end against six baselines across three target–drafter pairs. We then use matched ablations and component-level measurements to isolate the contributions of adaptive length selection, routing correction, and the GDN kernels.

Experimental setup

Models and workloads. We evaluate Qwen3.5-35B-A3B, Qwen3.6-35B-A3B, and Qwen3.5-122B-A10B-GPTQ-INT4 (Qwen Team, 2026b;c;a), with their official DFlash drafters, in SGLang 0.5.16 with one request at a time on NVIDIA A100 80 GB GPUs. Prompts come from seven categories of the SPEED-Bench Qualitative split [1]: coding, math, reasoning, retrieval-augmented generation (RAG), summarization, writing, and roleplay. A seeded split gives 280 calibration and 280 test prompts, 40 per category in each. Table 1 reports greedy decoding, the primary setting, and Appendices E.6 and E.7 report temperature-one sampling and batched decoding.

Table 1: End-to-end comparison under greedy decoding. AL is the number of tokens emitted per verification round, and SR is the decode-throughput speedup over paired autoregressive (AR) decoding. Summ. denotes summarization, and Avg. is the mean over the seven categories.

MethodCoding ALCoding SRMath ALMath SRReasoning ALReasoning SRRAG ALRAG SRSumm. ALSumm. SRWriting ALWriting SRRoleplay ALRoleplay SRAvg. ALAvg. SR
Qwen3.5-35B-A3B
AR targetn/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×
Vanilla DFlash6.431.89×5.401.54×4.911.43×6.071.72×4.961.38×3.921.13×3.531.05×5.031.45×
D-Cut6.121.98×4.971.64×4.611.54×5.761.80×4.651.48×3.701.26×3.371.19×4.741.55×
EVICT6.181.99×5.151.69×4.681.58×5.881.85×4.781.54×3.771.29×3.361.20×4.831.59×
ReplaySSM6.411.82×5.531.54×4.821.36×6.041.66×4.931.34×3.921.10×3.511.03×5.021.41×
EVICT + ReplaySSM5.941.91×5.111.65×4.601.52×5.691.76×4.721.50×3.731.26×3.331.17×4.731.54×
HybridSpec6.202.39×5.101.97×4.621.87×5.872.18×4.801.84×3.691.51×3.271.42×4.791.88×
Qwen3.6-35B-A3B
AR targetn/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×
Vanilla DFlash5.581.56×5.411.58×4.791.42×5.871.63×4.851.37×3.661.06×3.330.99×4.791.37×
D-Cut5.361.66×5.111.68×4.581.54×5.621.71×4.671.50×3.531.19×3.211.12×4.581.48×
EVICT5.371.68×5.171.70×4.631.58×5.631.73×4.721.54×3.521.21×3.171.13×4.601.51×
ReplaySSM5.651.54×5.491.55×4.831.39×5.691.53×4.871.34×3.661.04×3.360.98×4.791.34×
EVICT + ReplaySSM5.371.63×5.181.65×4.601.53×5.591.66×4.691.48×3.541.18×3.191.10×4.591.46×
HybridSpec5.282.05×5.142.09×4.621.88×5.552.07×4.741.85×3.501.46×3.161.39×4.571.83×
Qwen3.5-122B-A10B
AR targetn/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×
Vanilla DFlash6.831.67×5.601.41×5.131.29×6.311.56×5.331.31×4.131.05×3.540.95×5.271.32×
D-Cut6.291.89×5.231.70×4.851.59×5.951.81×5.011.60×3.851.32×3.441.24×4.951.59×
EVICT6.051.93×5.091.76×4.791.66×5.941.90×4.821.63×3.721.37×3.331.29×4.821.65×
ReplaySSM6.591.56×5.781.42×5.081.25×6.371.53×5.261.28×4.061.02×3.600.95×5.251.29×
EVICT + ReplaySSM6.311.89×5.101.68×4.701.56×5.991.82×4.971.60×3.781.32×3.381.25×4.891.59×
HybridSpec6.022.06×5.101.84×4.711.77×5.852.01×4.911.72×3.751.46×3.341.38×4.811.75×

Table 1.

Baselines. We compare HybridSpec with autoregressive (AR) decoding, vanilla DFlash, D-Cut (Liu et al., 2026), EVICT (Pan et al., 2026), ReplaySSM (Liou & Dao, 2026), and EVICT + ReplaySSM. All speculative baselines use the same DFlash drafter as HybridSpec. We adapt D-Cut and EVICT to the DFlash proposal block and use the SGLang implementation of ReplaySSM. Vanilla DFlash verifies the full target input of length W=D+1W = D + 1 in every round. D-Cut and EVICT shorten the proposal block before verification. ReplaySSM replaces the default GDN verification procedure, and EVICT + ReplaySSM combines both optimizations.

Metrics. The primary metric is the speedup ratio (SR), defined as the pooled post-prefill decode throughput normalized by that of the corresponding AR baseline. Acceptance length (AL) is the number of tokens emitted per verification round, including the accepted draft tokens and the additional token generated by the target. Appendix E details the full protocol.

End-to-end performance

In Table 1, the mean SR of HybridSpec is 1.88× on Qwen3.5-35B-A3B, 1.83× on Qwen3.6-35B-A3B, and 1.75× on Qwen3.5-122B-A10B. Vanilla DFlash reaches 1.45×, 1.37×, and 1.32×, and EVICT, the strongest baseline on all three pairs, reaches 1.59×, 1.51×, and 1.65×. HybridSpec has the highest SR in every category, and its per-category SR ranges from 1.38× for roleplay on Qwen3.5-122B-A10B to 2.39× for coding on Qwen3.5-35B-A3B. And we further evaluate correctness and task quality in Appendix D.3.

HybridSpec has a lower AL than vanilla DFlash but a higher SR mainly because it verifies fewer tokens in each round. On the two 35B pairs, the mean verification length of HybridSpec is 6.4 and 6.2 compared with 16 for vanilla DFlash, and Figure 4 shows that about half of its rounds verify at most 4 tokens. Relative to vanilla DFlash, HybridSpec lowers mean AL by 0.24 on Qwen3.5-35B-A3B and 0.22 on Qwen3.6-35B-A3B, or 5% on both. It leaves 9.6 and 9.8 draft tokens per round unverified, and the AL difference corresponds to fewer than 3% of them. Most skipped tokens would therefore have been rejected. Meanwhile, the decode time per round, the pooled decode time divided by the number of rounds, falls from 22.9 to 16.5 ms on Qwen3.5-35B-A3B and from 23.0 to 16.3 ms on Qwen3.6-35B-A3B. In every category on both 35B pairs, AL falls by at most 7%, and time per round falls by 24%–32%. Time per round falls most for writing and roleplay, the two categories with the lowest AL. In the isolated benchmarks of Table 5, with every draft token accepted, the GDN verification and reconstruction kernels save 0.12 ms per round at length 2 and 1.44 ms at length 16.

Bar chart of executed verification lengths for Qwen3.5-35B-A3B and Qwen3.6-35B-A3B

Figure 4. Executed verification lengths of HybridSpec on the 280 test prompts. Vanilla DFlash verifies 16 tokens per round.

wwSGLangReplaySSMHybridSpecvs. SGLangvs. ReplaySSM
20.47260.69260.35521.33 / 1.351.95 / 1.66
30.50120.80580.37211.35 / 1.382.17 / 1.90
40.59200.91920.38471.54 / 1.622.39 / 1.90
80.97331.50500.43662.23 / 2.373.45 / 2.55
121.42632.48590.44913.18 / 3.385.54 / 4.59
161.91112.94510.47284.04 / 4.296.23 / 4.56

Table 5. Latency (ms) of GDN verification plus accepted-state reconstruction for the 30 GDN layers of Qwen3.6-35B-A3B on one A100 when all m=wm = w input tokens are committed, that is, when every draft token is accepted. Speedups of HybridSpec are given for m=wm = w and for m=⌈w/2⌉m = \lceil w/2 \rceil, when about half of the input tokens are committed. ReplaySSM uses its default launch parameters, as in Table 1. Latency (ms). Speedup (×\times), m=wm = w / m=⌈w/2⌉m = \lceil w/2 \rceil.

D-Cut and EVICT reach an AL close to that of HybridSpec (4.58–4.95 versus 4.57–4.81) but a lower SR (1.48×–1.65× versus 1.75×–1.88×), so HybridSpec spends less time per round. Four design differences can contribute. First, both baselines choose the length that maximizes a per-round ratio of expected tokens to profiled step latency (Liu et al., 2026; Pan et al., 2026), whereas HybridSpec maximizes pooled throughput through the per-round score of Equation (5). Second, both form acceptance estimates directly from drafter confidences, whereas HybridSpec calibrates its estimates on the calibration prompts. Third, both read the selected length on the CPU to launch the matching verification graph, whereas HybridSpec launches it with a conditional graph node and never copies the length to the CPU. Fourth, HybridSpec uses its own GDN kernels. EVICT + ReplaySSM, which adds prior GDN verification to EVICT, still trails HybridSpec by 0.16–0.37 in mean SR. Without recalibration, HybridSpec also speeds up the four other SPEED-Bench Qualitative categories. In Table 2, where DFlash denotes vanilla DFlash, HybridSpec reaches a mean SR of 1.69× on their 320 prompts with Qwen3.6-35B-A3B, versus 1.31× for vanilla DFlash, and leads in every category.

CategoryDFlash ALDFlash SRHybridSpec ALHybridSpec SR
Humanities3.891.18×3.651.55×
QA3.951.19×3.641.56×
STEM4.271.28×3.951.66×
Multilingual5.271.57×4.982.01×
Avg.4.351.31×4.061.69×

Table 2. Unseen SPEED-Bench categories on Qwen3.6-35B-A3B, evaluated without recalibration.

ComponentReplaced bywwALSRGain
HybridSpec–6.24.571.83×–
Length selectionStatic length 773.991.54×1.19×
Length selectionLength 16164.771.46×1.25×
Routing correctionNominal-only6.14.481.73×1.06×
GDN kernelsSGLang kernels6.24.511.74×1.05×
All componentsVanilla DFlash164.791.37×1.33×

Table 3. Component gains on Qwen3.6-35B-A3B. Gain is the SR of HybridSpec divided by that of the variant, and ww is the mean verification length.

Ablations

Table 3 removes one component of HybridSpec at a time on Qwen3.6-35B-A3B while keeping the others unchanged. We report the gain as the SR of HybridSpec divided by that of each variant, representing the speedup contributed by the removed component relative to its stated replacement. Vanilla DFlash removes all components. Removing length selection also eliminates two-stage verification and the routing correction, since both depend on the selected length. We therefore evaluate two fixed-length variants that use the HybridSpec GDN kernels within a single CUDA Graph. The calibrated static length is 7, the fixed length with the highest pooled throughput on the calibration prompts among screened candidates, while length 16 matches vanilla DFlash. The nominal-only control removes only the routing correction: it keeps w=w0w = w_0 under the same two-stage verification, with Stage 0 processing only the first w0w_0 tokens. Thus, its measured gain captures the routing correction net of the cost of processing the extra Stage-0 token. Finally, the GDN variant retains the full length-selection policy but replaces the HybridSpec GDN kernels with the default SGLang kernels.

Length selection provides the largest gain: 1.19× over the calibrated static length and 1.25× over length 16. Although HybridSpec verifies fewer tokens per round than the static-length variant, 6.2 versus 7, it achieves a higher AL, 4.57 versus 3.99, by adapting the verification length to each round. The routing correction provides a further 1.06× gain over the nominal-only control. The HybridSpec GDN kernels contribute 1.05× at the lengths selected by HybridSpec. At length 16, the SR ratio between the fixed-length variant and vanilla DFlash indicates a larger kernel gain of 1.07×, consistent with the greater savings at longer verification lengths in Table 5.

GDN kernel microbenchmarks

We measure the latency of GDN verification plus accepted-state reconstruction for the 30 GDN layers of Qwen3.6-35B-A3B on one A100, and Table 5 in Appendix D.2 gives all measured lengths. With every draft token accepted, the HybridSpec kernels are 1.33×–1.35× faster than the default SGLang kernels at lengths 2 and 3 and 1.54×–4.04× faster at lengths 4 to 16. The speedup grows with length, consistent with the HybridSpec kernels writing a full state after every token. With its default launch parameters, as in Table 1, ReplaySSM is slower than the default SGLang kernels at every length, consistent with its lower mean SR than vanilla DFlash. The HybridSpec kernels are 1.95×–6.23× faster than it. These isolated benchmarks start from precomputed projections and exclude the joint producer and two-stage verification. The kernels also save memory, as Appendix D.4 shows. At batch size one, the default verifier reserves 1.88 GB, 40% of the size of the attention-cache pool, to store the state after every token, whereas the HybridSpec kernels need no such buffer.

Conclusion

Choosing the verification length for hybrid GDN–MoE targets trades expected output progress against recurrent and routed-expert work. HybridSpec makes this choice on the GPU from acceptance estimates and measured target latency and refines it with a lightweight routing correction at the first MoE router. The rest of verification runs only on the selected tokens, with GDN kernels that verify all tokens in parallel and reconstruct every accepted state in one launch. On three GDN–MoE target models in single-request greedy decoding, HybridSpec is 1.75×–1.88× faster than autoregressive decoding and 1.30×–1.33× faster than vanilla DFlash.

AI Use Statement

The authors used generative AI tools for manuscript writing and language editing, coding assistance and code review, and checking reported results against experimental records. AI-generated output was not treated as evidence. The authors reviewed all AI-assisted text, code, and checks and take full responsibility for the content of this paper.

Ethics Statement

This work studies language-model inference efficiency and does not involve human-subject research or the collection of personal data. Cheaper inference lowers the cost of both beneficial and harmful uses of the underlying models. Because HybridSpec preserves the target’s outputs in exact arithmetic, safety, privacy, and fairness remain properties of the target model and its deployment.

Reproducibility Statement

§ 3–§ 4 specify the problem formulation, method, correctness conditions, and reported measurements. Appendices § 9–§ 13 provide the round procedure, calibration details, derivations and proofs, the profiling and kernel-benchmark setups, and the end-to-end evaluation details. We will release the code upon acceptance.

HybridSpec Inference Details

Round procedure

Algorithm 1 lists one round of § 3.2, and its comments give the corresponding steps of Figure 2. The lengths w0w_0, uu, and ww stay in GPU memory, and lines 5 and 12 launch the CUDA Graphs for lengths uu and ww through conditional graph nodes. Under temperature sampling, the point-mass rule of Appendix § 11.§ 3 replaces lines 13 and 14, and all other lines are unchanged. At an EOS token or the output limit, the emitted and committed tokens are truncated as in § 3.1.

Algorithm 1 One round of HybridSpec

Input: anchor x0x_0, target caches and GDN states, drafter context, and length limit wremw_{\mathrm{rem}} from the remaining output budget

Parameters: calibrated acceptance model, CtgtC_{\mathrm{tgt}}, ρ\rho, ss, η\eta, and the tables nˉall(w0)\bar{n}_{\mathrm{all}}(w_0) and nˉall(w0∣n)\bar{n}_{\mathrm{all}}(w_0 \mid n)

Output: emitted tokens, next anchor, and updated caches, GDN states, and drafter context

  1. Draft the proposal block (d1,…,dD)(d_1,\ldots,d_D) with the top-1 confidence and entropy of each token

  1. Estimate c^1,…,c^D\hat{c}_1,\ldots,\hat{c}_D and set p^i←∏j=1ic^j\hat{p}_i \leftarrow\prod_{j=1}^{i}\hat{c}_j for i=1,…,Di=1,\ldots,D ▷ Appendix § 9.§ 2

  1. w0←arg⁡max⁡w∈W0[1+∑i=1w−1p^i−ρCtgt(w)]w_0 \leftarrow\arg\max_{w\in W_0}\left[1+\sum_{i=1}^{w-1}\hat{p}_i-\rho C_{\mathrm{tgt}}(w)\right] ▷ Eq. (5), step 1

  1. u←min⁡(w0+1,wrem)u \leftarrow\min(w_0+1,w_{\mathrm{rem}}) ▷ Stage-0 length

  1. Stage 0: run Layer 0 through its MoE router on the first uu tokens of (x0,d1,…,dD)(x_0,d_1,\ldots,d_D), retaining compact factors, hidden states, residuals, expert assignments, and routing weights ▷ steps 2–3

  1. wc←w0w_c \leftarrow w_0 ▷ step 4

  1. if u=w0+1u=w_0+1 then ▷ Stage 0 covers position w0+1w_0+1

  1. nnew←U0(w0+1)−U0(w0)n_{\mathrm{new}} \leftarrow U_0(w_0+1)-U_0(w_0)

  1. ΔLc←Ctgt(w0+1)−Ctgt(w0)−s+η(nˉall(w0∣nnew)−nˉall(w0))\Delta L_c \leftarrow C_{\mathrm{tgt}}(w_0+1)-C_{\mathrm{tgt}}(w_0)-s+\eta\left(\bar{n}_{\mathrm{all}}(w_0\mid n_{\mathrm{new}})-\bar{n}_{\mathrm{all}}(w_0)\right) ▷ Eq. (6)

  1. wc←w0+1[p^w0>ρΔLc]w_c \leftarrow w_0+1\left[\hat{p}_{w_0}>\rho\Delta L_c\right]

  1. w←min⁡(wc,wrem)w\leftarrow\min(w_c,w_{\mathrm{rem}}) ▷ executed verification length

  1. Stage 1: resume Layer 0 at its experts for the first ww tokens, run the remaining layers, and retain their GDN compact factors ▷ steps 5–6

  1. yi←y_i\leftarrow target argmax after (x0,d1,…,di−1)(x_0,d_1,\ldots,d_{i-1}) for i=1,…,wi=1,\ldots,w

  1. A←max⁡{a∈{0,…,w−1}:di=yi for all i≤a}A\leftarrow\max\{a\in\{0,\ldots,w-1\}:d_i=y_i\text{ for all }i\le a\} and xnew←yA+1x_{\mathrm{new}}\leftarrow y_{A+1}

  1. Advance the attention and convolution caches and the drafter context through the m=A+1m=A+1 committed tokens ▷ step 7

  1. Reconstruct the accepted state of every GDN layer in one kernel launch ▷ Eq. (7), step 8

  1. return (d1,…,dA,xnew)(d_1,\ldots,d_A,x_{\mathrm{new}}), with xnewx_{\mathrm{new}} as the next anchor

GPU-resident selection of verification length

Draft-side selector. The selector reads the top-1 confidence and the entropy hih_i of each draft token from GPU memory. It calibrates the confidence per position with isotonic regression. Let hˉi=(hi+hˉi−1)/2\bar{h}_i=(h_i+\bar{h}_{i-1})/2, with hˉ0=h1\bar{h}_0=h_1, be an exponential moving average of the entropy within the proposal block. A logistic model then combines the calibrated confidence, the position, their interaction, log⁡(1+hi)\log(1+h_i), and the entropy change log⁡(hi/hˉi−1)\log(h_i/\bar{h}_{i-1}). Its outputs are the conditional acceptance probabilities c^i\hat{c}_i. One kernel forms the prefix probabilities and evaluates Equation (5) for all nominal verification lengths. All selector parameters are fitted on the calibration prompts (Appendix § 13.§ 3).

Cost calibration. Runs on the evaluated runtime fix the verification length at each supported value and measure the mean decode time per round on the calibration prompts. A quadratic in ww is fitted to these times, and Ctgt(w)C_{\mathrm{tgt}}(w) is the fit minus a fixed per-round cost that does not depend on ww. Calibration also measures ss, the latency that one more token adds to the Layer-0 GDN layer and router, as the slope of Stage-0 latency in the number of tokens. The constant η\eta is the latency that one more distinct expert adds to one MoE layer at batch size one. Every MoE layer of the evaluated models routes each token to 8 of 256 experts. Two measurements support the per-expert model. For Qwen3.6-35B-A3B at verification length 16, the target latency of one verification call in each of 80 requests has a correlation of 0.999 with that call’s number of distinct (layer, expert) pairs. For the Qwen3.5-122B-A10B MoE kernel with 16 input rows, and hence 128 token–expert assignments, median latency grows almost linearly with the number of distinct experts, from 0.11 ms at 8 experts to 1.18 ms at 128. Because the number of assignments is fixed, token work adds at most the fitted intercept of 0.06 ms. The fitted slopes give η\eta, 4.18 μ\mus for the two 35B models, which share one architecture, and 8.8 μ\mus for Qwen3.5-122B-A10B. The table value nˉall(w0)\bar{n}_{\mathrm{all}}(w_0) is the sum of two averages for the token at position w0+1w_0+1 on the calibration prompts: the number of new Layer-0 experts and, as Appendix § 12.§ 1 describes, the number of new (layer, expert) pairs in the later layers. The conditional value nˉall(w0∣n)\bar{n}_{\mathrm{all}}(w_0 \mid n) replaces the first average with nn and the second with its average over the tokens at that position that add nn new Layer-0 experts. Cells with fewer than 30 tokens use a linear fit in nn for each position. The rate ρ\rho is the fixed point of Dinkelbach’s iteration [10]. It equals the estimated pooled throughput of the draft-side selector on the rounds of the capture run that Appendix § 13.§ 3 describes. Its numerator sums 1+∑i=1w0−1p^i1+\sum_{i=1}^{w_0-1}\hat{p}_i over the rounds, and its denominator sums Ctgt(w0)C_{\mathrm{tgt}}(w_0) plus the fixed per-round cost removed from CtgtC_{\mathrm{tgt}}.

Analysis of the Throughput Objective

Because ADA_D is an integer, min⁡(AD,M)=∑i=1M1[AD≥i]\min(A_D,M)=\sum_{i=1}^{M}\mathbf{1}[A_D\ge i]. Taking a conditional expectation and adding the token emitted after the accepted prefix gives GG for nonterminal rounds (§ 3.1).

For M′>MM'>M at a common state, suppress I\mathcal{I} and let ΔG=G(M′)−G(M)=∑i=M+1M′pi\Delta G=G(M')-G(M)=\sum_{i=M+1}^{M'}p_i and ΔL=L(M′)−L(M)\Delta L=L(M')-L(M). With positive latencies, M′M' has a higher G/LG/L exactly when

ΔG L(M)>G(M) ΔL.(8)\Delta G\,L(M)>G(M)\,\Delta L. \tag*{(8)}

Replacing the current rate G(M)/L(M)G(M)/L(M) with the pooled rate ρ\rho turns Equation (8) into the additive test ΔG>ρ ΔL\Delta G>\rho\,\Delta L. This is the form of both the draft-side score in Equation (5) and the routing correction in Equation (6). Under the additive test, even a draft token that is certain to be accepted helps only if its added latency is below 1/ρ1/\rho, the pooled latency per emitted token. Because the measured latency curve can be nonconvex or even nonmonotone, the selector scores every nominal verification length rather than stopping at the first unfavorable comparison.

For serial rounds at B=1B=1, the throughput of a stationary policy π\pi converges, under standard ergodicity conditions, to Eπ[R]/Eπ[Tround]\mathbb{E}_{\pi}[R]/\mathbb{E}_{\pi}[T_{\mathrm{round}}], where TroundT_{\mathrm{round}} is the round latency. This limit is a ratio of expectations rather than an average of per-round ratios, so § 3.1 defines the objective as pooled throughput. During decoding, later rounds depend on earlier choices, so ρ\rho only approximates the optimal pooled throughput of the decoding process.

Correctness Analysis

Triangular GDN factorization and state reconstruction

By induction on Equation (1), Equation (2) holds for every ii. Substituting it for Si−1S_{i-1} into ziz_i and using αiegi−1=egi\alpha_i e^{g_{i-1}}=e^{g_i} gives

zi+∑j<iβiegi−gj(kiTkj)zj=βivi−βiegiS0ki.(9)z_i+\sum_{j<i}\beta_i e^{g_i-g_j}(k_i^{\mathsf T}k_j)z_j=\beta_i v_i-\beta_i e^{g_i}S_0k_i. \tag*{(9)}

With the matrices of § 2.2, stacking Equation (9) over i=1,…,wi=1,\ldots,w gives the triangular system in Equation (3). In matrix form, H=I+tril⁡−1(diag⁡(β)(Γ⊙KKT))H=I+\operatorname{tril}_{-1}\left(\operatorname{diag}(\beta)(\Gamma\odot KK^{\mathsf T})\right). Here Γ\Gamma is the decay-aware causal mask of Gated DeltaNet (Yang et al., 2025), with Γij=egi−gj\Gamma_{ij}=e^{g_i-g_j} for j≤ij\le i and 0 otherwise, ⊙\odot is the elementwise product, and tril⁡−1\operatorname{tril}_{-1} keeps the entries below the diagonal.

The first mm equations depend only on the leading m×mm\times m block of HH and the first mm rows of the right-hand side. Thus appending or removing later tokens cannot change the compact factors of the prefix in exact arithmetic. Equation (2) at i=mi=m is Equation (7) written as a sum, so replacing the leading factors reconstructs the correct accepted state.

Substituting Equation (2) into oi=Siqio_i=S_iq_i gives oi=egiS0qi+∑j=1iegi−gjzj(kjTqi)o_i=e^{g_i}S_0q_i+\sum_{j=1}^{i}e^{g_i-g_j}z_j(k_j^{\mathsf T}q_i). Stacking qiTq_i^{\mathsf T} and oiTo_i^{\mathsf T} as the rows of Q∈Rw×dkQ\in\mathbb{R}^{w\times d_k} and O∈Rw×dvO\in\mathbb{R}^{w\times d_v} gives

O=diag⁡(eg)QS0T+(Γ⊙QKT)Z.(10)O=\operatorname{diag}(e^g)QS_0^{\mathsf T}+(\Gamma\odot QK^{\mathsf T})Z. \tag*{(10)}

Once Equation (3) yields ZZ, Equation (10) evaluates all GDN outputs o1,…,owo_1,\ldots,o_w with dense matrix products. These outputs match the recurrent computation. A numerical implementation still requires stable accumulation and appropriate handling of extreme decay.

Correctness of prefix truncation under greedy decoding

The analysis uses five assumptions. Arithmetic is exact. Causal prefix invariance holds, meaning that removing suffix tokens does not change any target operator’s computation for earlier tokens. Prefix states are recovered exactly: after each round, the commit sets every GDN recurrent state, convolution cache, and attention cache to the target’s state after the committed tokens. Processing several tokens in one forward pass gives the same per-token results as processing them one at a time. Stage 1 resumes Layer 0 from the retained Stage-0 values of the first ww tokens and reads no retained value of a later token. The fourth assumption holds for attention with a key–value cache, for the causal convolution of GDN, for position-wise layers, and for top-kk MoE routing and expert computation without capacity limits. It also holds for the GDN recurrence, because Appendix C.1 shows that computing the updates of a block of tokens at once gives the same outputs and states as the token-by-token recurrence. These assumptions exclude MoE capacity rules that change an earlier token’s expert computation when later tokens are removed.

Proposition 1. Under these assumptions, greedy decoding with HybridSpec emits the same tokens as target-only greedy decoding for any verification length that each round selects, provided that both stop at the first EOS token or at the output limit.

Proof. The proof maintains an invariant. After prefill and at the start of each round, the emitted tokens form a prefix of the target-only greedy continuation computed without stopping, and every persistent cache holds the state that the target alone computes for the tokens before the anchor. By causal prefix invariance and because Stage 1 reads only the retained values of the first ww tokens, the extra Stage-0 token does not change the target logits for the anchor and the retained draft tokens. Because m≤wm \le w, its retained factors never enter the commit. Because every cache holds this state and a multi-token pass matches one-token passes, the logits at the anchor equal those of target-only decoding. If the first draft token matches their argmax, accepting it extends the prefix, and the same argument applies to each later accepted draft token. At the first mismatch, or after the last retained draft token, the target output at that position is the next token of target-only decoding. Because prefix states are recovered exactly, committing exactly the anchor and the accepted draft tokens restores the invariant for the next round. Each round emits at least one token, so both processes truncate the same continuation at the first EOS token or at the output limit. □

In floating point, the multi-token kernels compute the same quantities with a different operation order and precision. This can flip the argmax when logits are nearly tied, after which later tokens can also differ. Appendix C.3 reuses the cache part of the invariant for temperature sampling.

Exactness under temperature sampling

Fix the prompt and consider a round with anchor x0x_0 and proposal prefix d1,…,dMd_1,\ldots,d_M. For i=1,…,M+1i=1,\ldots,M+1, let pitp_i^t be the sampling distribution that the verifier computes at position ii, that is, for the next token after the prompt, the tokens emitted before the round, and d1,…,di−1d_1,\ldots,d_{i-1}. It includes temperature scaling and any top-kk or top-pp filtering.

The verifier applies speculative sampling ([3] (Leviathan et al. 2023)) with each draft token treated as a proposal of probability one. We call this the point-mass rule. For i=1,…,Mi=1,\ldots,M, the verifier draws a uniform random number ξi∈[0,1]\xi_i \in[0,1] and accepts did_i if ξi≤pit(di)\xi_i \le p_i^t(d_i). At the first rejection, it emits a token drawn from pitp_i^t with did_i removed and the remaining probabilities renormalized. The round then ends. If all MM draft tokens are accepted, it emits a token drawn from pM+1tp_{M+1}^t. We assume that each draw is independent of everything determined before it. SGLang implements this rule with its default acceptance thresholds, which our configuration uses.

Let yiy_i be the token that the round emits at position ii. Let Fi\mathcal{F}_i be everything determined before the draws at position ii, including the proposal block, MM, and all earlier tokens and draws. If the round reaches position ii, that is, if i≤M+1i \le M+1 and d1,…,di−1d_1,\ldots,d_{i-1} are accepted, then

P(yi=v∣Fi)=pit(v)(11)\mathbb{P}(y_i = v \mid\mathcal{F}_i) = p_i^t(v) \tag*{(11)}

The draws at position ii are independent of Fi\mathcal{F}_i. If i=M+1i=M+1, the verifier draws viv_i from pM+1tp^t_{M+1}. If i≤Mi\le M, the token did_i is emitted only through acceptance, which has probability pit(di)p^t_i(d_i). Any other token vv requires a rejection, with probability 1−pit(di)1-p^t_i(d_i), and then a draw of vv, with probability pit(v)/(1−pit(di))p^t_i(v)/(1-p^t_i(d_i)). The product is pit(v)p^t_i(v). If pit(di)=1p^t_i(d_i)=1, a rejection never occurs and pit(v)=0p^t_i(v)=0 for every v≠div\ne d_i, so the equation still holds. Because Equation (11) holds for every proposal block and every MM, the verification length changes only how a token is produced, not its distribution.

Proposition 2. Adopt the assumptions of Proposition 1. Assume also that verification uses the point-mass rule and that each round fixes its proposal block and MM before its verification draws. Both may depend on the prompt and on everything determined in earlier rounds. Assume further that generation stops at the first EOS token or at the output limit, as in target-only sampling. Then the output has the same distribution as target-only sampling.

Proof. The cache part of the invariant in Appendix § 11.§ 2 does not use the acceptance rule. At the start of each round, every cache therefore holds the state that the target alone computes for the tokens before the anchor. With the other assumptions, and because the verifier applies the same temperature and filtering as target-only sampling, pitp^t_i is the target-only sampling distribution given the prompt and all tokens emitted before position ii. By Equation (11), each emitted token follows this distribution given Fi\mathcal{F}_i. This distribution depends only on the earlier emitted tokens, which Fi\mathcal{F}_i contains, so the same holds given only these tokens. The round and position that produce each emitted token are determined before its draws, so this holds for every emitted token in turn. By the chain rule, every sequence of emitted tokens has the same probability as under target-only sampling. Both processes apply the same stopping rule, so their outputs have the same distribution.

Like Proposition 1, this result assumes exact arithmetic. In floating point, pitp^t_i differs slightly from the target-only sampling distribution, so the two output distributions agree only approximately.

In HybridSpec, the draft tokens are the drafter’s top-1 tokens, and the verification length depends on the drafter’s confidence and entropy values, the Layer-0 expert assignments of the Stage-0 tokens, and the remaining output budget, but on no verification draw. Proposition 2 therefore covers the full length policy, including the routing correction.

The argument depends on the point-mass rule. The general rule (Leviathan et al., 2023; Chen et al., [3]) samples did_i from a draft distribution qidq^d_i, accepts it with probability min⁡{1,pit(di)/qid(di)}\min\{1,p^t_i(d_i)/q^d_i(d_i)\}, and otherwise draws from the normalized positive part of pit−qidp^t_i-q^d_i. Under this rule, the emitted token follows pitp^t_i only on average over di∼qidd_i\sim q^d_i, not for each value of did_i. A length rule that reads did_i can then bias the output, because the draft tokens that reach verification may no longer follow qidq^d_i. The routing correction is such a rule, because it reads the expert assignment of dw0d_{w_0} before deciding whether to add that token. The point-mass rule removes this dependence, since Equation (11) holds for every draft token.

Experimental Details

Profile across verification lengths

The profile used Qwen3.6-35B-A3B with its DFlash drafter, SGLang 0.5.16, and one NVIDIA A100 GPU, at batch size one with a context limit of 8,192 tokens. SGLang used its default Triton (Tillet et al., 2019) MoE configuration, because no tuned configuration was available for this model. The workload was ten GSM8K test prompts (Cobbe et al., [8]), each decoded greedily for 32 new tokens. Each run set the DFlash block size to the verification length ww, so D=M=w−1D=M=w-1.

At w=4w=4, 8, and 16, mean profiled GPU time per measured verification call was 1.795, 1.817, and 1.856 ms for the drafter and 9.527, 12.648, and 16.318 ms for target verification. The target-to-drafter time ratios were therefore 5.3×, 7.0×, and 8.8×. From w=4w=4 to 16, drafter time increased by 3.4%, whereas target time increased by 71.3%. Drafter and target intervals may overlap under the scheduler, so these values do not form an end-to-end latency decomposition.

Across the nine measured verification lengths, an unweighted ordinary least-squares fit to GDN time gives 1.89+0.154w1.89+0.154w ms, with coefficient of determination R2=0.999R^2=0.999. A log–log fit to MoE time gives 2.66w0.502.66w^{0.50} ms (log-space R2=0.976R^2=0.976). From w=4w=4 to 16, profiled GPU time for GDN and

wwMeasured callsTarget totalGDNMoESoftmax attentionOther
41019.5272.4985.3310.6861.019
58510.0552.6595.6910.6961.017
68010.8112.8356.2480.7101.026
77411.8762.9847.1710.7051.026
87212.6483.0967.8260.6981.037
107114.0753.4138.9340.7051.033
127114.6593.7349.1650.7191.050
157116.0784.22410.0850.7221.057
167016.3184.35010.1870.7251.065

Table 4. Qwen3.6-35B-A3B target-side GPU time across verification lengths, in milliseconds per measured verification call. The total is the union of slightly overlapping component intervals, so the components do not sum exactly to it.

MoE increased by 74.1% and 91.1%, whereas softmax-attention and other target-side time increased by 5.7% and 4.5%. Each verification length was measured in a separate run, so the fitted trends do not isolate the effect of length at a fixed decoding state.

Dense-target comparison. A separate comparison on one NVIDIA A100 GPU paired a dense Qwen3-4B target with DFlash at context lengths of 2,048, 8,192, and 32,768 tokens. Over 15 samples at each setting, the median latency of its captured target-verification CUDA Graph was 3.98%, 5.44%, and 6.08% higher at w=16w = 16 than at w=4w = 4 for the three context lengths.

Layer-0 routing as a proxy. To estimate the later-layer counts, a separate run on the calibration prompts verifies at length 16 with greedy decoding and at most 1,024 new tokens and records the top-8 experts of every token in every layer. For each draft position, let n0n_0 be the number of new Layer-0 experts that the token adds and n>0n_{>0} the number of new (layer, expert) pairs that it adds in layers 1–39. After the mean of each position is subtracted, n0n_0 and n>0n_{>0} have a correlation of 0.49 on Qwen3.6-35B-A3B and 0.52 on Qwen3.5-35B-A3B, and a least-squares fit gives 9.0 and 10.0 later-layer pairs per new Layer-0 expert.

Kernel microbenchmark details

The benchmark runs all 30 GDN layers of Qwen3.6-35B-A3B at batch size one, starting from random bfloat16 (BF16) projections and FP32 states. It captures the verification and the state commit of each implementation as CUDA Graphs. Instead of modeling acceptance, it fixes the number of committed tokens at m=wm = w, where every draft token is accepted, or at m=⌈w/2⌉m = \lceil w/2 \rceil. Each latency is the median of 30 samples of 10 graph replays. ReplaySSM uses its SGLang kernels with their default launch parameters, as in the end-to-end evaluation, and a ring buffer of at least twice the verification length. Because ReplaySSM folds this buffer into the state only when the buffer is flushed, its verification latency is the mean over 300 alternating verification and commit rounds. At the lengths in Table 5, a second sweep reproduced every total latency within 0.5%, except the default kernels at length 2, which differed by 13%. ReplaySSM was slower than the default SGLang kernels at every length. In a separate run with launch parameters tuned for batch size one, ReplaySSM was 1.05×–1.71× faster than the default kernels over lengths 2 to 16, and HybridSpec remained 1.16×–2.42× faster than it. At m=⌈w/2⌉m = \lceil w/2 \rceil, the latency of the default kernels changes by less than 0.2%, because they write a state after every token during verification. The latencies of HybridSpec and ReplaySSM fall by 2%–6% and 14%–31%, respectively, because both fold only the committed tokens into the state. The all-accepted speedups over the default kernels in Section 4.4 are therefore conservative, whereas the all-accepted setting favors HybridSpec against ReplaySSM.

Triangular solve for short inputs. The matrix HH in Equation (3) is unit lower triangular with at most 16 rows, so X=I−HX = I - H is strictly lower triangular and X16=0X^{16} = 0. Lengths 4, 6, and 8 use closed-form inverses of 4×44 \times4 blocks, and lengths 6 and 8 join two such blocks with one correction term. Lengths 9 to 16 use the exact identity H−1=(I+X+X2+X3)(I+X4+X8+X12)H^{-1} = (I + X + X^2 + X^3)(I + X^4 + X^8 + X^{12}), which needs only matrix products. The other lengths, 2, 3, 5, and 7, form the inverse row by row in at most six steps on a matrix with at most seven rows, and each step computes a whole row at once.

For every length, all heads run in parallel, and the products with keys, values, and S0S_{0} are matrix products over all tokens of the block, so verification remains block-parallel.

Kernel correctness. Before timing, the benchmark compares the HybridSpec kernels with the default SGLang kernels on one GDN layer at lengths 2, 4, 8, and 16. Each comparison runs two consecutive rounds that commit ww and w/2w/2 tokens, in both orders. The largest relative error in Frobenius norm is 4.3×10−34.3 \times10^{-3} for outputs and 1.7×10−31.7 \times10^{-3} for the reconstructed state. With FP32 instead of BF16 arithmetic in the HybridSpec kernels, these errors fall below 10−410^{-4} and 10−610^{-6}.

Correctness and task quality

We check correctness in two steps, both on Qwen3.6-35B-A3B under greedy decoding. The first step tests whether splitting verification at the router boundary changes outputs. It compares HybridSpec with and without the split, where the unsplit form runs all of Layer 0 before choosing the verification length. On 16 prompts that each generate 1,024 tokens, HybridSpec runs 3,114 target forward passes with verification lengths 3 to 16 and produces the same output tokens, acceptance histograms, and numbers of rounds in both forms. It never reads the selected length on the CPU. The second step tests task quality. On all 1,319 GSM8K test problems ([8]), HybridSpec solves 96.06% and vanilla DFlash 96.21%. The one-sided 95% lower confidence bound of the paired difference, −0.71 points, is above the noninferiority margin of −1 point fixed before evaluation. The two systems do not emit identical tokens, which reordered floating-point kernels can cause by flipping near-tied logits, so this step compares task quality rather than exact token agreement.

Memory for verification states

Because the default SGLang verifier stores the GDN state after every token, it preallocates, for each request slot, one state per GDN layer for every position of the full target input. For Qwen3.6-35B-A3B, whose 30 GDN layers each hold a 32 × 128 × 128 state in FP32, this buffer takes 16 × 30 × 32 × 128 × 128 × 4 bytes, or 0.94 GB, per slot. At batch size one, SGLang allocates two slots, and the server log of our runs on one A100 reports 1.88 GB for the buffer. The same log reports a pool of 112,687 tokens for the attention caches of the target and the drafter, which take about 44 KB per token. The buffer therefore equals the caches of about 45,000 tokens, 40% of the pool. The HybridSpec kernels retain only the compact factors, which take about 0.01 GB for 16 tokens across the 30 layers even in FP32, so they do not need this buffer. Releasing it raises the maximum context length that fits in memory by about 40%.

The saving grows with the number of concurrent requests, because SGLang allocates one slot per request plus one. With four concurrent requests, vanilla DFlash allocates 4.69 GB for the buffer and has room for 12,472 cached tokens, whereas the batched version of HybridSpec in Appendix E.7 allocates no buffer and caches 122,512 tokens.

End-to-End Evaluation Details

Models, baselines, and metrics

The targets are the official Qwen checkpoints of Qwen3.5-35B-A3B and Qwen3.6-35B-A3B in BF16 and of Qwen3.5-122B-A10B in GPTQ-Int4. The drafters are the official DFlash checkpoints that z-lab released for these targets, and all checkpoints come from Hugging Face. Each pair is calibrated and evaluated separately. Qwen3.5-122B-A10B uses two-way tensor parallelism across two GPUs without NVLink. The prompts come from seven of the eleven SPEED-Bench Qualitative categories (§ 4.1), and a seeded random split divides their 560 prompts into the calibration and test halves. Each request generates at most 1,024 new tokens, as in the SPEED-Bench evaluation of Fu et al. [11], and thinking mode is enabled.

Baselines. D-Cut and EVICT follow their papers. At batch size one, the budget allocation of D-Cut reduces to a per-request pruning depth. As in its paper, D-Cut restricts this budget to four fixed fractions of the full target input, so it chooses among verification lengths 4, 8, 12, and 16. The draft tree of EVICT reduces to the single DFlash chain. EVICT + ReplaySSM applies the truncation of EVICT and verifies the retained prefix with ReplaySSM. The drafter generates all DD draft tokens before any length decision, so all speculative systems incur the same drafting cost.

Metrics. Pooled decode throughput (TPS) is the number of tokens emitted after the prefill-produced anchor divided by the wall-clock decode time, pooled over the requests of a category. The decode time includes CPU-side control, graph dispatch, synchronization, and padding. SR is the ratio of pooled TPS to that of AR on the same prompts. AL is the number of emitted tokens divided by the number of verification rounds, which corresponds to GG in § 3.1. Category averages are arithmetic means over the seven categories.

Comparisons and ablations

End-to-end comparisons. All systems share prompts, stopping rules, precision, and output limits. Systems that select a verification length use the calibration split and a cost function calibrated for their own runtime. Each system runs in three sessions, each with a fresh server process, and the sessions are pooled.

Ablations. Each ablation keeps the drafter, prompts, precision, and calibration split of HybridSpec. To select the calibrated static length, a sweep on a subset of the calibration prompts keeps up to three fixed lengths within 5% of the fastest. These candidates and length 16 then run on all calibration prompts, and the one with the highest pooled throughput is used. The GDN variant replaces the HybridSpec verification and commit kernels with the default SGLang kernels.

Calibration data

Calibration runs. Calibration runs separately for each target–drafter pair and uses only the calibration prompts, which are disjoint from the test prompts. A capture run verifies all DD draft tokens in every round with greedy decoding. It records the drafter’s confidences and entropies, the number of new Layer-0 experts that each draft token adds, and the number of accepted draft tokens. These rounds train the acceptance model, give the Layer-0 averages in rˉall\bar{r}_{\mathrm{all}}, and are the rounds over which ρ\rho is computed. Runs with a fixed verification length measure CgtC_{\mathrm{gt}}, and a separate run at length 16 gives the later-layer averages, as Appendices A.2 and D.1 describe.

Acceptance-model training. Because the capture run verifies all DD draft tokens, a shorter verification never censors the labels of later draft tokens. Training c^i\hat{c}_i uses the label 1[AD≥i]\mathbb{1}[A_D \ge i] among rounds with AD≥i−1A_D \ge i - 1. Rounds cut short by EOS or the output limit are excluded.

Correctness checks

The GSM8K check compares HybridSpec with vanilla DFlash. HybridSpec solves 1,267 problems and vanilla DFlash solves 1,269, a paired difference of −0.15 percentage points. The lower confidence bound is a normal approximation from the 20 problems on which the two systems disagree, 11 solved only by vanilla DFlash and 9 only by HybridSpec. A second paired run gives 96.21% without the routing correction and 96.13% with it.

The router-boundary check uses 16 prompts spanning math, coding, writing, and chat, and each request ignores EOS and generates exactly 1,024 tokens. The split and unsplit forms also process the same numbers of tokens before and after the length decision. After Stage 0 finishes, overwriting its retained tensors for tokens beyond the selected length leaves every output unchanged. The run records no graph recapture and no rerun of the Layer-0 router.

Unseen categories

The four SPEED-Bench Qualitative categories outside the study, humanities, QA, STEM, and multilingual, contribute all 80 of their prompts each. The prompts are rendered as in the main evaluation, and none matches a study prompt. HybridSpec uses the parameters of Table 1 without recalibration. HybridSpec is faster than vanilla DFlash in every category, by 1.28× for multilingual to 1.31× for QA. Its mean verification length is 5.7, compared with 6.2 on the test prompts.

Temperature-one sampling

Table 6 repeats the comparison of Table 1 for the two 35B pairs under temperature-one sampling without top-p or top-k truncation. HybridSpec keeps the parameters calibrated under greedy decoding. Its mean SR is 1.57× on Qwen3.5-35B-A3B and 1.60× on Qwen3.6-35B-A3B, compared with 1.20× and 1.21× for vanilla DFlash and 1.34× and 1.38× for EVICT, the strongest baseline. HybridSpec has the highest SR in every category. Sampling lowers the AL of every speculative method, so every SR is lower than under greedy decoding. The lead of HybridSpec over vanilla DFlash is 1.31× and 1.32×, compared with 1.30× and 1.33× under greedy decoding.

MethodCoding ALCoding SRMath ALMath SRReasoning ALReasoning SRRAG ALRAG SRSumm. ALSumm. SRWriting ALWriting SRRoleplay ALRoleplay SRAvg. ALAvg. SR
Qwen3.5-35B-A3B
AR targetn/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×
Vanilla DFlash5.291.56×4.181.23×3.881.15×5.201.50×4.111.19×3.230.96×2.630.81×4.071.20×
D-Cut4.701.58×3.841.33×3.781.32×4.971.62×3.881.31×3.131.11×2.540.94×3.841.31×
EVICT4.811.61×3.971.37×3.861.35×5.031.63×3.961.33×3.171.13×2.560.96×3.911.34×
ReplaySSM5.061.45×3.961.14×4.011.16×5.281.48×4.121.16×3.260.95×2.670.86×4.051.16×
EVICT + ReplaySSM4.751.57×3.861.34×3.811.32×4.891.58×3.961.33×3.121.10×2.540.94×3.851.31×
HybridSpec4.881.91×3.861.59×3.821.57×4.791.84×3.981.57×3.161.33×2.591.16×3.871.57×
Qwen3.6-35B-A3B
AR targetn/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×n/a1.00×
Vanilla DFlash4.771.42×4.401.32×4.221.26×4.991.44×4.251.24×3.170.96×2.700.83×4.071.21×
D-Cut4.631.58×4.311.50×3.961.38×4.901.60×4.131.40×3.101.11×2.610.97×3.951.36×
EVICT4.731.61×4.251.49×4.061.43×4.861.60×4.121.40×3.091.12×2.620.99×3.961.38×
ReplaySSM4.701.36×4.431.29×4.081.19×4.991.40×4.361.23×3.150.92×2.690.81×4.061.17×
EVICT + ReplaySSM4.651.53×4.261.44×3.991.36×4.871.55×4.141.36×3.071.07×2.620.95×3.941.32×
HybridSpec4.561.83×4.191.73×4.201.72×4.781.83×4.071.61×3.151.35×2.491.12×3.921.60×

Table 6. End-to-end comparison under temperature-one sampling, laid out as in Table 1.

Batched decoding

The batched version of HybridSpec extends the length policy to a batch of BB requests. All requests in a round share one verification length, so that the batch runs as one CUDA Graph of fixed shape. The policy chooses this length from {2,4,8,12,16}\{2, 4, 8, 12, 16\} by maximizing ∑b=1BG^b(w)−ρBCB(w)\sum_{b=1}^{B} \hat{G}_b(w) - \rho_B C_B(w), where G^b(w)\hat{G}_b(w) is the expected number of tokens that request bb emits at length ww, CB(w)C_B(w) is the measured latency of a round with BB requests, and ρB\rho_B is the Dinkelbach rate for batches of BB requests. At B=1B = 1, this rule reduces to (5). A request that would prefer a shorter length still verifies all ww tokens, because the batch already pays for ww positions and extra verified tokens can only add accepted tokens. The length is fixed before verification, so the batch preserves the target’s outputs in exact arithmetic. Stage 0 and the routing correction carry over: the correction counts the Layer-0 experts that the next candidate length adds to the union over the batch and expands to that length if the added tokens are worth their latency. The latencies CB(w)C_B(w), the rates ρB\rho_B, and the correction parameters are calibrated on the calibration prompts for batches of two and four requests, and a batch of three runs as a padded batch of four.

On the 280 test prompts of Qwen3.6-35B-A3B under greedy decoding, four concurrent clients each send a new request as soon as the previous one finishes. The batched version then emits 497 tokens per second in total, 1.10×1.10 \times the 451 of vanilla DFlash and 1.39×1.39 \times the 358 of autoregressive decoding, while vanilla DFlash with the HybridSpec GDN kernels emits 472. As at batch size one, it accepts fewer tokens per round than vanilla DFlash, 4.25 versus 4.57, yet emits more tokens per second. With the HybridSpec kernels, the batched runtime also has room for 122,512 cached tokens, 9.8 times the 12,472 tokens of vanilla DFlash, as Appendix § 12.§ 4 details. The gain is smaller than at batch size one mainly because the length policy helps less: one length from five candidates must serve all requests, so it follows each request less closely.

References

  1. [1]Taylor Abramovich, Maor Ashkenazi, Izzy Putterman, Benjamin Chislett, Tiyasa Mitra, Bita Darvish Rouhani, Ran Zilberstein, and Yonatan Geifman. SPEED-Bench: A unified and diverse benchmark for speculative decoding. In Proceedings of the 43rd International Conference on Machine Learning, volume 306 of Proceedings of Machine Learning Research. PMLR, 2026. URL https://arxiv.org/abs/2604.09557.
  2. [2]Tianle Cai, Yuhong Li, Zhengyang Geng, Hongwu Peng, Jason D. Lee, Deming Chen, and Tri Dao. Medusa: Simple LLM inference acceleration framework with multiple decoding heads. In Proceedings of the 41st International Conference on Machine Learning, volume 235 of Proceedings of Machine Learning Research. PMLR, 2024. URL https://proceedings.mlr.press/v235/cai24b.html.arxiv.org/abs/2401.10774
  3. [3]Charlie Chen, Sebastian Borgeaud, Geoffrey Irving, Jean-Baptiste Lespiau, Laurent Sifre, and John Jumper. Accelerating large language model decoding with speculative sampling. arXiv preprint arXiv:2302.01318, 2023. URL https://arxiv.org/abs/2302.01318.
  4. [4]Jian Chen, Yesheng Liang, and Zhijian Liu. DFlash: Block diffusion for flash speculative decoding. In Proceedings of the 43rd International Conference on Machine Learning, volume 306 of Proceedings of Machine Learning Research. PMLR, 2026a. URL https://arxiv.org/abs/2602.06036.
  5. [5]Wenyan Chen, Chengzhi Lu, Yanying Lin, and Dmitrii Ustiugov. FASER: Fine-grained phase management for speculative decoding in dynamic LLM serving. arXiv preprint arXiv:2604.20503, 2026b. URL https://arxiv.org/abs/2604.20503.
  6. [6]Zhuoming Chen, Avner May, Ruslan Svirschevski, Yuhsun Huang, Max Ryabinin, Zihao Jia, and Beidi Chen. Sequoia: Scalable and robust speculative decoding. In Advances in Neural Information Processing Systems, volume 37, pp. 129531–129563, 2024. doi: 10.52202/07901-4116.arxiv.org/abs/2402.12374
  7. [7]Xin Cheng, Xingkai Yu, Chenze Shao, Jiashi Li, Yunfan Xiong, Yi Qian, Jiaqi Zhu, Shirong Ma, Xiaokang Zhang, Jiasheng Ye, Qinyu Chen, Chengqi Deng, Jiping Yu, Dai Dai, Zhengyan Zhang, Yixuan Wei, Yixuan Tan, Wenkai Yang, Runxin Xu, Yu Wu, Zhe an Xu, Xuanyu Wang, Muyang Chen, Rui Tian, Xiao Bi, Zhewen Hao, Shaoyuan Chen, Huanqi Cao, Wentao Zhang, Anyi Xu, Huishaui Zhang, Dongyan Zhao, and Wenfeng Liang. DSPark: Confidence-scheduled speculative decoding with semi-autoregressive generation. arXiv preprint arXiv:2607.05147, 2026. URL https://arxiv.org/abs/2607.05147.
  8. [8]Karl Cobbe, Vineet Kosaraju, Mohammad Bavarian, Mark Chen, Heewoo Jun, Lukasz Kaiser, Matthias Plappert, Jerry Tworek, Jacob Hilton, Reiichiro Nakano, Christopher Hesse, and John Schulman. Training verifiers to solve math word problems. arXiv preprint arXiv:2110.14168, 2021. URL https://arxiv.org/abs/2110.14168.
  9. [9]Tri Dao and Albert Gu. Transformers are SSMs: Generalized models and efficient algorithms through structured state space duality. In Proceedings of the 41st International Conference on Machine Learning, volume 235 of Proceedings of Machine Learning Research, pp. 10041–10071. PMLR, 2024. URL https://proceedings.mlr.press/v235/dao24a.html.arxiv.org/abs/2405.21060
  10. [10]Werner Dinkelbach. On nonlinear fractional programming. Management Science, 13(7):492–498, 1967. URL https://doi.org/10.1287/mnsc.13.7.492.
  11. [11]Yonggan Fu, Lexington Whalen, Abhinav Garg, Chengyue Wu, Maksim Khadkevich, Nicolai Oswald, Enze Xie, Daniel Egert, Sharath Turuvekere Sreenivas, Shizhe Diao, Chenhan Yu, Ye Yu, Weijia Chen, Sajad Norouzi, Jingyu Liu, Shiyi Lan, Lijeng Zhu, Jin Wang, Jindong Jiang, Morteza Mardani, Mehran Maghouri, Song Han, Ante Jukić, Nima Tajbakhsh, Jan Kautz, and Pavlo Molchanov. Nemotron-Labs-Diffusion: A tri-mode language model unifying autoregressive, diffusion, and self-speculation decoding. arXiv preprint arXiv:2607.05722, 2026. URL https://arxiv.org/abs/2607.05722.
  12. [12]Sneha Murthy Ghantasala. TreeWY: Speculative verification for Gated DeltaNet hybrids. arXiv preprint arXiv:2608.20961, 2026. URL https://arxiv.org/abs/2608.20961.

Paper details

vlnc:W_jwa95vfk
v1 · latestHistory (1)

published · Fresh — added to the Hub within the last 30 days

added ·

Usage

views · 0

downloads · 0

A view counts once per browser per day, a download each time the PDF is requested.

CC BY 4.0

Original source

  • Computer Science

generative AI tools · View statement →

Looking for related papers…
Contents