Contextual Correction of Parallel Draftsfor Speculative Decoding
Summary
提出DCOCO(DFlash Contextual Corrector),一种轻量级机制,在保持并行草稿生成的同时恢复块内上下文依赖,在四个验证器骨干和十个基准上实现最高达6.6倍的推理加速,并在并发服务场景下显著优于现有方法。
View Cached Full Text
Cached at: 10/12/26, 06:47 AM
# Contextual Correction of Parallel Draftsfor Speculative Decoding
Source: [https://arxiv.org/html/2610.12570](https://arxiv.org/html/2610.12570)
††footnotetext:1Stealth Startup, Tel Aviv2Tel Aviv University3Ben\-Gurion UniversityRoy Eisenstadt1,2Harel Lidar1Tal Gonen1Omer Luxembourg3Itamar Zimerman1Lior Wolf2Eli David1Ilan Naiman1
###### Abstract
Speculative decoding accelerates large language model inference by using a lightweight drafter to propose multiple tokens that are subsequently verified in parallel by the target model\. Recent diffusion\-based drafters make this paradigm particularly attractive: deep attention\-based neural backbones provide strong predictions, while drafting multiple future positions in parallel avoids the sequential cost of autoregressive generation\. This parallelism, however, comes at a cost\. Tokens within a draft block are predicted without access to the realized identities of preceding draft tokens, removing intra\-block dependencies that would naturally be available under autoregressive generation\. We introduceDCOCO\(DFlashContextualCorrector\), a lightweight mechanism that restores these dependencies while preserving parallel drafting\. Rather than committing to each position’s top prediction,DCOCOretains multiple candidate tokens and evaluates their contextual compatibility across adjacent draft positions in parallel, enabling contextually informed token selection at low additional cost\. Across four verifier backbones and ten benchmarks,DCOCOachieves the highest average throughput in every evaluated configuration, spanning greedy and stochastic decoding with and without extended reasoning, with speedups of up to 6\.6× over vanilla decoding\. Its advantage persists under concurrent serving:DCOCOoutperforms the strongest competing method by 6–23% across 4–32 concurrent requests, while other sequential correctors fall below uncorrected DFlash at these loads\. These results demonstrate that recovering intra\-block dependencies through parallel contextual scoring delivers consistent acceleration across decoding regimes and serving loads\.
Links:[Code](https://github.com/two-delta/DCOCO/)\(GitHub\)\|\|[Models](https://huggingface.co/collections/TD-Labs/dcoco)\(Hugging Face\)
## 1Introduction
Speculative decoding \(SD\) accelerates large language model inference by using a lightweight drafter to propose multiple future tokens, which are subsequently verified in parallel by the target model\(leviathan2023fast;chen2023accelerating\)\. Speculative verification preserves the target model’s output distribution, so the benefit of a drafting method depends on the speedup it provides\. This speedup depends on both how many draft tokens are accepted and the latency of draft generation\. These two factors are often in tension: stronger drafting can increase acceptance, but better drafts may require more computation and therefore more latency\.
This acceptance–latency trade\-off has shaped the design of speculative drafters\. Early SD methods use a smaller autoregressive language model to generate draft tokens sequentially\(leviathan2023fast;chen2023accelerating\)\. Subsequent approaches such as EAGLE\(li2024eagle;li2024eagle2;li2025eagle3\)improve the efficiency and quality of this drafting process by exploiting target\-model features, while retaining autoregressive dependencies across draft positions\. More recently, parallel diffusion\-based drafters such as DFlash\(chen2026dflash\)take a different direction, generating multiple future positions within a single block pass\. Autoregressive drafters condition on the realized prefix, whereas parallel diffusion drafters reduce latency by predicting the block jointly\. This parallelism comes at the cost of weaker intra\-block conditioning: each position is predicted without observing the realized token identities selected at preceding draft positions\. As a result, individually plausible predictions may form a less consistent continuation and reduce draft acceptance\.
Recent methods directly target this limitation\. DSpark\(cheng2026dspark\)combines a parallel backbone with a lightweight sequential module, introducing intra\-block dependencies through semi\-autoregressive drafting\. Domino\(huang2026domino\)instead augments parallel block generation with a lightweight causal correction module that refines the draft using prefix\-dependent information\. Both recover acceptance, but both do so position by position\. The added module is a recurrence over the block, so its latency cost sits on the critical path of every drafting cycle\. This raises the central question of our work:*can intra\-block dependencies be restored without reintroducing a sequential module?*
Two observations guide our approach\. First, the parallel drafter has usually already suspected the correct token, even when it did not choose it: on Qwen3\-8B the top\-16 candidates contain the verifier’s token at59%59\\%of the slots where its top\-1 is wrong \(§[3](https://arxiv.org/html/2610.12570#S3)\)\. Correction can therefore be cast as re\-selection within the drafter’s existing candidates rather than generation of new tokens\. Re\-selection overKKcandidates per slot reduces to scoringK2K^\{2\}transitions between adjacent slots, all of which can be computed at once\. Second, speculative verification imposes a strong asymmetry across draft positions\. Verification accepts a contiguous prefix and stops at the first rejected token; therefore, an improvement at a later position is useful only if all preceding positions are also accepted\. Correction should consequently prioritize the quality of the early prefix, rather than optimize an aggregate score over the entire proposed block\.
These observations motivateDFlashContextualCorrector \(DCOCO\), a lightweight contextual corrector for parallel diffusion drafts\.DCOCOoperates on a single DFlash block pass: rather than committing immediately to the top prediction at each position, it retains multiple candidate tokens and uses the drafter’s existing hidden states and logits to score their contextual compatibility across adjacent positions\. All candidate interactions are scored in parallel, without an additional drafter forward pass\. The resulting candidate grid is then decoded using a*prefix\-first greedy selection*rule\. Rather than maximizing an aggregate score over the entire path,DCOCOselects candidates from left to right, prioritizing each position before proceeding to the next\. This aligns selection with the prefix structure of speculative verification, where tokens after the first rejection provide no benefit\. Importantly, only this lightweight selection is sequential, while neural scoring remains parallel\. Unlike DSpark and Domino, no learned module runs position by position\.
We evaluateDCOCOacross multiple verifier backbones and ten benchmarks spanning mathematics, code, and general\-purpose generation\.DCOCOconsistently improves end\-to\-end decoding throughput under both greedy and stochastic decoding, outperforming the strongest evaluated speculative decoding baseline by up to18%18\\%and vanilla autoregressive decoding by up to6\.6×6\.6\\times\. Because its correction is parallel,DCOCOkeeps its advantage as serving load grows: from 1 to 32 concurrent streams its throughput stays1919–25%25\\%above DFlash under greedy decoding, while the per\-cycle cost of the sequential correctors grows until both fall below the uncorrected drafter \(§[5\.2](https://arxiv.org/html/2610.12570#S5.SS2)\)\. Beyond aggregate throughput, we separately analyze draft acceptance and correction latency to characterize where these gains arise\. We further compare alternative selection rules over the same learned candidate scores, isolating the effect of the decoding objective from the quality of the corrector itself\. Our contributions are threefold:
- •We introduceDCOCO, a lightweight contextual corrector for parallel diffusion drafts that scores candidate interactions using information from a single drafter pass, without additional drafter forward passes\.
- •We identify the prefix structure of speculative verification as a key consideration for correcting parallel drafts, and introduce a prefix\-first greedy selection rule that aligns candidate selection with this structure\.
- •We establish state\-of\-the\-art performance across multiple verifier backbones and diverse benchmarks, with and without extended thinking in both greedy and stochastic decoding and show that this advantage persists under concurrent serving load, where the sequential correctors lose theirs\.
## 2Related Work
#### Speculative decoding\.
Speculative decoding accelerates autoregressive LLM inference by separating generation into drafting and verification: a lightweight draft model proposes several future tokens, which are then verified in parallel by the target model while preserving the target model’s output distribution\(leviathan2023fast;chen2023accelerating\)\. Early approaches used a smaller autoregressive language model as the drafter, reducing the cost of proposing tokens while retaining autoregressive conditioning across the draft sequence\(leviathan2023fast;chen2023accelerating\)\. Subsequent work has improved the acceptance–latency trade\-off by constructing lightweight drafters from representations of the target model itself\. EAGLE\(li2024eagle\)performs autoregression at the feature level, predicting target\-model features rather than relying on an independent language\-model drafter\. EAGLE\-2\(li2024eagle2\)further introduces context\-aware dynamic draft trees, allocating speculative candidates according to the drafter’s confidence, while EAGLE\-3\(li2025eagle3\)replaces feature prediction with direct token prediction and fuses features from multiple target\-model layers\. Other approaches explore recurrent drafters conditioned on target\-model representations, such as ReDrafter\(zhang2024redrafter\), or improve the alignment between the drafter and target representations\(zhang2025hass\)\. These methods substantially strengthen lightweight autoregressive drafting, but draft tokens along a candidate path remain sequentially dependent\. This has motivated a complementary line of work that moves parallelism from verification into the drafting stage itself\.
Figure 1:Candidate coverage gains grow deeper in the block\.Fraction of slots where DFlash’s top\-kkcandidates contain the verifier’s committed token\. \(a\) Qwen3\-8B; shading marks the top\-16–top\-1 coverage gap\. \(b\) The same gap across verifiers\. Averages over the 15 slots appear in Tab\.[18](https://arxiv.org/html/2610.12570#A5.T18)\.
#### Parallel drafters\.
Parallel drafters reduce draft\-generation latency by predicting multiple future positions within a single pass\. Medusa\(cai2024medusa\)predicts future tokens in parallel using multiple lightweight heads, to which Hydra\(ankner2024hydra\)adds sequential dependency in order to increase performance\. PARD\(an2026pard\)adapts autoregressive drafters to parallel block prediction, while CTC\-based drafting\(wen2024speculative\)uses a non\-autoregressive sequence generation technique to predict the speculated sequence in parallel\. Diffusion models provide a natural foundation for this setting because multiple positions can be denoised simultaneously\. DFlash\(chen2026dflash\)exploits this property with a lightweight diffusion drafter conditioned on target\-model features, generating an entire draft block in one forward pass\. However, unlike autoregressive drafting, parallel block prediction does not condition each position on the realized tokens selected at earlier positions, weakening dependencies within the draft and motivating methods that restore this missing context\.
#### Refining parallel drafts\.
Recent methods address this limitation by augmenting parallel drafts with lightweight causal correction\. DSpark\(cheng2026dspark\)combines a parallel backbone with a sequential module that introduces dependencies across draft positions, while Domino\(huang2026domino\)applies recurrent causal correction to refine the parallel proposal using prefix\-dependent information\.
These approaches highlight the central challenge: recovering the dependencies lost during parallel drafting without sacrificing its latency advantage\.DCOCOtakes a different approach: rather than sequentially refining the draft or iteratively updating the block, it operates on the candidate set produced by a single DFlash pass\.DCOCOscores all adjacent candidate interactions in one batched operation using the drafter’s hidden states and logits, without an additional drafter pass\. Only the subsequent candidate selection, reduced to a plain walk on a grid, is sequential\.
\(a\) Parallel correctionDCOCO: all\(B−1\)K2\(B\-1\)K^\{2\}scores in parallelxx\+BBmasksDFlashone passSlot 1TheseTheAh1,ℓ1h\_\{1\},\\ell\_\{1\}Slot 2keykeyslocksh2,ℓ2h\_\{2\},\\ell\_\{2\}Slot 3isarewash3,ℓ3h\_\{3\},\\ell\_\{3\}⋯\\cdotsCandidaterepresentationsPer top\-KKcandidatePair statePer adjacent slot pairShared MLPtwo layersPer pair\(a,b\)\(a,b\)\+\+Δθ\\Delta\_\{\\theta\}Sp\(a,b\)S\_\{p\}\(a,b\)logitsℓp\+1\(b\)\\ell\_\{p\+1\}\(b\)\(b\) Prefix\-first selectionRows follow draft rankSlot 1:ℓ1\(k\)\\ell\_\{1\}\(k\)Slot 2:S1\(k1,k\)S\_\{1\}\(k\_\{1\},k\)Slot 3:S2\(k2,k\)S\_\{2\}\(k\_\{2\},k\)Slot 4:S3\(k3,k\)S\_\{3\}\(k\_\{3\},k\)These4\.2The3\.6A2\.8key0\.4keys2\.7locks1\.1is0\.2are3\.1was0\.8missing2\.8here1\.6broken0\.5Select from thechosen predecessorDraft top\-1DCOCO
Figure 2:DCOCO: parallel scoring, prefix\-first selection\.\(a\) One DFlash pass supplies slot states, candidate IDs, and logits\. Candidate and pair representations feed a shared MLP, computing all residual scores in parallel:Sp\(a,b\)=ℓp\+1\(b\)\+ΔθS\_\{p\}\(a,b\)=\\ell\_\{p\+1\}\(b\)\+\\Delta\_\{\\theta\}\. \(b\) Starting from the first\-slot draft argmax, selection follows the best transition from each chosen predecessor\. Rows retain draft rank; scores in slots 2–4 condition on the selected predecessor\. Tokens and scores are illustrative\.
## 3Parallel drafts already contain the right token
A parallel drafter predicts all block positions without conditioning on the tokens selected at earlier positions\. This can produce incoherent combinations of individually plausible predictions, a known limitation of non\-autoregressive and discrete\-diffusion language modeling\(gu2018nonautoregressive;lee2026flm\)\. For example, a drafter assigning probability to both “New York” and “San Diego” may emit “New Diego”\. Such errors raise the question of whether the correct token remains among the drafter’s leading candidates\. To test whether correct alternatives remain available for re\-selection, we measure*top\-kkcoverage*: the fraction of drafted slots whosekkhighest\-scoring candidates contain the token eventually committed by the verifier\. We record DFlash’s candidates during speculative decoding atT=0T=0and compare them with the realized continuation\. We observe two regularities\.
Fig\.[1](https://arxiv.org/html/2610.12570#S2.F1)shows that on Qwen3\-8B, top\-16 coverage stays above0\.600\.60at the last slot while top\-1 falls below0\.160\.16, and the top\-16−\\,\-\\,top\-1 gap grows from0\.120\.12–0\.140\.14at the first slot to0\.380\.38–0\.450\.45at the last on*every*verifier \(averages in Tab\.[18](https://arxiv.org/html/2610.12570#A5.T18)\)\. The drafter does not lack the right tokens; it fails to*select*them, increasingly so deeper in the block\. That headroom is conditional, however: under prefix acceptance a correction at slotppcounts only if every earlier slot is accepted, hence our prefix\-first rule, selecting candidates left to right, each conditioned on the choice just made\.
## 4Method
We consider speculative decoding with a parallel block drafter: DFlash proposes a block ofBBtokens in a single forward pass, and a verifier accepts the longest correct prefix of the proposal\. Our proposed corrector,DCOCO, works in two steps\. It first reassigns scores to all drafter’s per\-slot candidates based on stronger contextual information given the*realized*tokens and second, it re\-selects the proposed block based on the scoring\. Figure[2](https://arxiv.org/html/2610.12570#S2.F2)gives an overview of the architecture and the flow from drafted block to corrected proposal\.
### 4\.1Block drafting and prefix acceptance
The verifier scores the proposed blocky^1:B\\hat\{y\}\_\{1:B\}in a single pass and accepts a prefix of it, judging slots left to right, then commits one further token of its own\. Under greedy decoding, slotjjis accepted iffy^j\\hat\{y\}\_\{j\}matches the verifier’s greedy choiceargmaxvq\(v∣x,y^<j\)\\arg\\max\_\{v\}q\(v\\mid x,\\hat\{y\}\_\{<j\}\); under stochastic decoding it is accepted by the standard speculative\-sampling rule inleviathan2023fastwhich acceptsy^j\\hat\{y\}\_\{j\}with probabilitymin\{1,q\(y^j∣x,y^<j\)/p\(y^j∣x,y^<j\)\}\\min\\bigl\\\{1,\\,q\(\\hat\{y\}\_\{j\}\\mid x,\\hat\{y\}\_\{<j\}\)/p\(\\hat\{y\}\_\{j\}\\mid x,\\hat\{y\}\_\{<j\}\)\\bigr\\\}and otherwise resamples from the residual\.DCOCOselects proposals deterministically in both decoding regimes, so its proposal distribution is a point mass at each selected token; the resulting lossless stochastic verification rule is detailed in Appendix[G](https://arxiv.org/html/2610.12570#A7)\. In both regimes, verification halts at the first rejection\. Writingaj∈\{0,1\}a\_\{j\}\\in\\\{0,1\\\}for slotjj’s acceptance, the accepted length is
A\(y^\)=max\{m:a1=⋯=am=1\},A\(\\hat\{y\}\)\\;=\\;\\max\\bigl\\\{\\,m:\\,a\_\{1\}=\\dots=a\_\{m\}=1\\,\\bigr\\\}\\,,\(1\)and each round commitsA\(y^\)\+1A\(\\hat\{y\}\)\+1tokens\. Throughput is thus governed by the expected accepted length together with the wall\-clock cost of a round\. The one structural fact that drives every design choice below is that verification halts at the first rejection: a corrected token at slot55standing behind a rejection at slot11is never even examined\. Expected accepted length depends on the probability that each successive prefix survives verification\. This motivates prioritizing early positions\.
### 4\.2A learned corrector over the block grid
At each sloti∈\{1,…,B\}i\\in\\\{1,\\ldots,B\\\}, DFlash produces a hidden statehi∈ℝdh\_\{i\}\\in\\mathbb\{R\}^\{d\}and retains its top\-KKcandidate tokens\. Letcikc\_\{ik\}denote the token id of thekk\-th retained candidate andℓi\(k\)\\ell\_\{i\}\(k\)its draft logit\. These candidates form a dense first\-order grid withB×KB\\times Knodes, in which every candidate at slotppconnects to every candidate at slotp\+1p\+1\. TheDCOCOcorrector assigns each transition a score
Sp\(a,b\)=ℓp\+1\(b\)⏟draft unary logit\+Δθ\(sp,zpa,zp\+1,b,ℓp\(a\),ℓp\+1\(b\)\)⏟learned correction,S\_\{p\}\(a,b\)=\\underbrace\{\\ell\_\{p\+1\}\(b\)\}\_\{\\text\{draft unary logit\}\}\+\\underbrace\{\\Delta\_\{\\theta\}\\bigl\(s\_\{p\},\\;z\_\{pa\},\\;z\_\{p\+1,b\},\\;\\ell\_\{p\}\(a\),\\;\\ell\_\{p\+1\}\(b\)\\bigr\)\}\_\{\\text\{learned correction\}\}\\,,\(2\)wherea,b∈\{1,…,K\}a,b\\in\\\{1,\\ldots,K\\\}index the candidates at the two slots,zikz\_\{ik\}is a candidate representation \(Eq\.[4](https://arxiv.org/html/2610.12570#S4.E4)\),sps\_\{p\}is a candidate\-independent pair state \(Eq\.[5](https://arxiv.org/html/2610.12570#S4.E5)\), andΔθ\\Delta\_\{\\theta\}is a shared two\-layer MLP\. The corrector uses only the hidden states, candidate ids, and logits available from the single DFlash pass\.
#### Candidate representation\.
Each candidate representation combines the candidate’s token embedding with its slot’s hidden state\. Using the frozen token\-embedding tableEEand layer normalizationLN\\mathrm\{LN\}, we compute
bik\\displaystyle b\_\{ik\}=LN\(WcandE\[cik\]\),\\displaystyle=\\mathrm\{LN\}\\bigl\(W\_\{\\mathrm\{cand\}\}E\[c\_\{ik\}\]\\bigr\)\\,,gi\\displaystyle g\_\{i\}=LN\(Wctxhi\),\\displaystyle=\\mathrm\{LN\}\\bigl\(W\_\{\\mathrm\{ctx\}\}h\_\{i\}\\bigr\)\\,,\(3\)zik\\displaystyle z\_\{ik\}=LNγ,β\(Wfuse\[bik;gi\]\),\\displaystyle=\\mathrm\{LN\}\_\{\\gamma,\\beta\}\\bigl\(W\_\{\\mathrm\{fuse\}\}\[\\,b\_\{ik\}\\,;\\,g\_\{i\}\\,\]\\bigr\)\\,,\(4\)
wherebikb\_\{ik\}is the projected and normalized candidate embedding,gig\_\{i\}is the projected and normalized slot context shared by all candidates at slotii, andzikz\_\{ik\}is their fused representation\. Here,\[⋅;⋅\]\[\\,\\cdot\\,;\\,\\cdot\\,\]denotes concatenation,Wcand,Wctx∈ℝr×dW\_\{\\mathrm\{cand\}\},W\_\{\\mathrm\{ctx\}\}\\in\\mathbb\{R\}^\{r\\times d\}, andWfuse∈ℝr×2rW\_\{\\mathrm\{fuse\}\}\\in\\mathbb\{R\}^\{r\\times 2r\}, with corrector widthr≪dr\\ll d\. The token embeddings and hidden states differ in scale by more than two orders of magnitude\. We therefore use non\-affine layer normalization for both projections in Eq\.[3](https://arxiv.org/html/2610.12570#S4.E3)\. The output normalization in Eq\.[4](https://arxiv.org/html/2610.12570#S4.E4)includes learnable scale and bias parametersγ\\gammaandβ\\beta\.
Figure 3:At high concurrency,DCOCOachieves the highest throughput, while Domino and DSpark fall below DFlash\.Qwen3\-8B throughput at \(a\)T=0T=0and \(b\)T=1T=1\. \(c\)DCOCO’s relative throughput gain over the strongest baseline at each concurrency\.
#### Pair state\.
For each pair of adjacent slots, we compute a shared state from their hidden states:
sp=Wpair\[hp;hp\+1\],Wpair∈ℝr×2d\.s\_\{p\}=W\_\{\\mathrm\{pair\}\}\[\\,h\_\{p\}\\,;\\,h\_\{p\+1\}\\,\]\\,,\\qquad W\_\{\\mathrm\{pair\}\}\\in\\mathbb\{R\}^\{r\\times 2d\}\\,\.\(5\)Becausesps\_\{p\}depends only on the slots, it is computed once and reused across allK2K^\{2\}candidate transitions between them\.
#### Transition score\.
The correctionΔθ\\Delta\_\{\\theta\}in Eq\.[2](https://arxiv.org/html/2610.12570#S4.E2)is computed by a two\-layer MLP with a GELU activation between the layers and a scalar output\. Its input is the concatenation\[sp;zpa;zp\+1,b;ℓp\(a\);ℓp\+1\(b\)\]\[\\,s\_\{p\}\\,;\\,z\_\{pa\}\\,;\\,z\_\{p\+1,b\}\\,;\\,\\ell\_\{p\}\(a\)\\,;\\,\\ell\_\{p\+1\}\(b\)\\,\]\. The successor’s draft logit provides the base score, whileΔθ\\Delta\_\{\\theta\}learns an additive correction conditioned on both candidates and their slot contexts\. The MLP’s output layer is zero\-initialized, so initiallyΔθ≡0\\Delta\_\{\\theta\}\\equiv 0and every transition score reduces to the successor’s draft logit,Sp\(a,b\)=ℓp\+1\(b\)S\_\{p\}\(a,b\)=\\ell\_\{p\+1\}\(b\)\. Prefix\-first greedy selection therefore reproduces the drafter’s original proposal at initialization\. Finally, all projection and MLP parameters are shared across slots and transitions, and all\(B−1\)K2\(B\-1\)K^\{2\}transition scores are computed in one batched operation before path selection begins\.
#### Training\.
The drafter and corrector are optimized together using the sum of the original drafter loss and the correction loss\. The token\-embedding table remains frozen throughout training\. For each transitionpp, the label\(ap⋆,bp⋆\)\(a^\{\\star\}\_\{p\},b^\{\\star\}\_\{p\}\)is the pair of verifier\-argmax tokens at the two slots, computed over the teacher\-forced context and located within the slots’ top\-KKsets, with maskmp∈\{0,1\}m\_\{p\}\\in\\\{0,1\\\}zeroing transitions where either token is absent\. The corrector minimizes an exponentially down\-weighted cross\-entropy over theK2K^\{2\}jointly softmax\-normalized transition scores,
ℒcorr∝−∑p=1B−1e−\(p−1\)/ρmplogexpSp\(ap⋆,bp⋆\)∑a,b=1KexpSp\(a,b\),ρ=4\.\\mathcal\{L\}\_\{\\mathrm\{corr\}\}\\;\\propto\\;\-\\sum\_\{p=1\}^\{B\-1\}e^\{\-\(p\-1\)/\\rho\}\\;m\_\{p\}\\,\\log\\frac\{\\exp S\_\{p\}\(a^\{\\star\}\_\{p\},b^\{\\star\}\_\{p\}\)\}\{\\sum\_\{a,b=1\}^\{K\}\\exp S\_\{p\}\(a,b\)\}\\,,\\qquad\\rho=4\\,\.\(6\)This softmax exists only in training; at inferenceSpS\_\{p\}is used unnormalized\. The complete loss term along with further information about the training procedure are detailed in App\.[A](https://arxiv.org/html/2610.12570#A1)\.
### 4\.3Prefix\-first path selection
Given the scored grid, one possible decoding strategy returns the path maximizing the sum of transition scores\. This sum does not explicitly account for prefix survival: a higher score at a later position can compensate for a lower score at an earlier position, even though later tokens contribute only if the preceding prefix is accepted\. Motivated by this asymmetry, we use a simple prefix\-first greedy rule\. The first slot keeps the drafter’s top candidate, and each subsequent slot selects the highest\-scoring successor of the chosen predecessor,
k1=argmaxkℓ1\(k\),kp\+1=argmaxbSp\(kp,b\)forp=1,…,B−1\.k\_\{1\}=\\arg\\max\_\{k\}\\,\\ell\_\{1\}\(k\)\\,,\\qquad k\_\{p\+1\}=\\arg\\max\_\{b\}\\,S\_\{p\}\(k\_\{p\},b\)\\quad\\text\{for \}p=1,\\dots,B\{\-\}1\\,\.\(7\)This rule makes each selection using the transition scores conditioned on the chosen predecessor, without lookahead over future transitions\. Its main advantage is computational: the walk costs\(O\(BK\)\)\(O\(BK\)\)on top of the\(O\(BK2\)\)\(O\(BK^\{2\}\)\)batched scoring pass\. Section 5\.3 shows that it achieves acceptance comparable to geometrically discounted global selection at higher throughput\. With\(Δθ≡0\)\(\\Delta\_\{\\theta\}\\equiv 0\), it reduces to the drafter’s own argmax at every slot, preserving the step\-0 equivalence noted above\.
## 5Experiments
#### Setup\.
We use the vLLM framework\(kwon2023vllm\)to evaluateDCOCOagainst vanilla decoding, DFlash, DSpark, and Domino for four verifier backbones: Qwen3\-\(4B/8B/Coder\-30B\-A3B\) and Llama\-3\.1\-8B in production\-like settings\. Evaluation covers ten benchmarks spanning mathematics, code, and general\-purpose generation, under greedy \(T=0T=0\) and stochastic \(T=1T=1\) decoding, with and without extended thinking where supported\. All drafters use block size 16 and are trained on a common corpus of approximately 800K prompts, with continuations generated by their respective verifiers\.DCOCOstarts from a six\-epoch DFlash checkpoint and trains for six additional epochs with the corrector; training\-budget comparisons are reported in App\.[B](https://arxiv.org/html/2610.12570#A2)\. Training and implementation details appear in App\.[A](https://arxiv.org/html/2610.12570#A1), and evaluation and serving settings in App\.[C](https://arxiv.org/html/2610.12570#A3)\.
#### Baselines\.
Beyond improvement achieved over vanilla decoding we compare against the uncorrected DFlash draft, DSpark, and Domino\. Each is retrained by us on the same corpus with the same five\-layer drafter backbone reading the same verifier layers, and served with the same stack, hardware, and generation limits\. Domino uses its published configuration \(causal\-encoder width 1024, correction rank 256\) and DSpark a rank\-256 Markov head with its confidence head\.
#### Metrics\.
Our primary metric is end\-to\-end decoding throughput intokens per second\(TPS\), measured on a single B200 GPU per system at concurrency 1 unless stated otherwise; alongside each system’s TPS we report its speedup over vanilla autoregressive decoding with the verifier alone \(TPS/TPSvanilla\\mathrm\{TPS\}/\\mathrm\{TPS\}\_\{\\text\{vanilla\}\}\)\. TPS is the quantity a deployment actually experiences, and it is the appropriate one for a method that adds compute to the decode loop: a corrector can raise the accepted length while losing wall\-clock time to its own scoring cost, and only TPS exposes that trade\. Every design constraint in §[4](https://arxiv.org/html/2610.12570#S4), the small corrector width, the single batched scoring pass, theO\(BK\)O\(BK\)walk, exists in service of this metric\. We additionally report the mean accepted lengthτ=𝔼\[A\(y^\)\]\+1\\tau=\\mathbb\{E\}\[A\(\\hat\{y\}\)\]\+1of Eq\.[1](https://arxiv.org/html/2610.12570#S4.E1)as the*mechanism*metric: it isolates proposal quality from serving overheads and explains*where*a TPS change comes from \(τ\\tauup⇒\\Rightarrowfewer verifier rounds per token\)\.
### 5\.1Main results
#### Conditions\.
Tab\.[1](https://arxiv.org/html/2610.12570#S5.T1)reports per\-suite results for Qwen3\-8B with thinking off, under greedy decoding \(T=0T\{=\}0\) and sampling \(T=1T\{=\}1\); Tab\.[2](https://arxiv.org/html/2610.12570#S5.T2)summarizes all four verifiers, with and without extended thinking, by their ten\-suite averages\. All numbers are output tokens/s at concurrency 1, with the system served on a single B200 GPU, generating at most 2048 tokens with thinking off and 4096 with thinking on, over the ten suites above\.T=0T\{=\}0entries are single deterministic runs;T=1T\{=\}1entries are mean±\\pmstd over*three*seeds\. Bold marks the best speculative method per row and temperature; vanilla decoding is the speedup denominator\. Per\-suite tables for every other configuration, the accepted\-length companion of every throughput table, and evaluation details are in App\.[D](https://arxiv.org/html/2610.12570#A4)and[C](https://arxiv.org/html/2610.12570#A3)\.
\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500265\.21293\.8 \(4\.88×\\times\)1412\.3 \(5\.33×\\times\)1257\.9 \(4\.74×\\times\)1625\.2 \(6\.13×\\times\)AIME\-25263\.71133\.7 \(4\.30×\\times\)1279\.9 \(4\.85×\\times\)1188\.4 \(4\.51×\\times\)1436\.8 \(5\.45×\\times\)GSM8K267\.0936\.9 \(3\.51×\\times\)1018\.1 \(3\.81×\\times\)921\.6 \(3\.45×\\times\)1175\.8 \(4\.40×\\times\)CodeHumanEval266\.6873\.9 \(3\.28×\\times\)950\.5 \(3\.57×\\times\)857\.5 \(3\.22×\\times\)1075\.6 \(4\.04×\\times\)MBPP267\.0800\.9 \(3\.00×\\times\)891\.7 \(3\.34×\\times\)778\.2 \(2\.92×\\times\)979\.1 \(3\.67×\\times\)LiveCodeBench264\.21080\.1 \(4\.09×\\times\)1161\.6 \(4\.40×\\times\)1084\.7 \(4\.11×\\times\)1328\.5 \(5\.03×\\times\)GeneralMT\-Bench266\.0434\.1 \(1\.63×\\times\)425\.6 \(1\.60×\\times\)386\.5 \(1\.45×\\times\)494\.7 \(1\.86×\\times\)Arena\-Hard\-v2264\.1423\.7 \(1\.60×\\times\)390\.1 \(1\.48×\\times\)386\.8 \(1\.46×\\times\)486\.9 \(1\.84×\\times\)Alpaca265\.9428\.8 \(1\.61×\\times\)436\.4 \(1\.64×\\times\)392\.9 \(1\.48×\\times\)496\.1 \(1\.87×\\times\)SpeedBench266\.5425\.3 \(1\.60×\\times\)426\.8 \(1\.60×\\times\)401\.7 \(1\.51×\\times\)498\.4 \(1\.87×\\times\)Average265\.6783\.1 \(2\.95×\\times\)839\.3 \(3\.16×\\times\)765\.6 \(2\.88×\\times\)959\.7 \(3\.62×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 1:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Qwen3\-8B, thinking off, concurrency 1, max 2048 generated tokens\. Each speculative cell reports TPS with its speedup over the no\-spec column in parentheses\. Bold: best method per row\.Table 2:All configurations at a glance: average speedup over vanilla decoding, unweighted mean over the ten evaluation suites\. Bold: best per row and temperature\. Qwen3\-Coder\-30B\-A3B has no thinking mode\. Per\-dataset throughput and accepted length: App\.[D](https://arxiv.org/html/2610.12570#A4)\.
#### Discussion\.
On Qwen3\-8B without thinking,DCOCOimproves average accepted length over Domino by 8\.1% at T=0 and 7\.5% at T=1, while improving request throughput by 14\.3% and 13\.6%\. Accepted length measures proposal quality, whereas request throughput also includes prefill and serving overhead\.
Tab\.[2](https://arxiv.org/html/2610.12570#S5.T2)shows the same ordering across verifiers and thinking modes:DCOCOhas the best average speedup in all twelve cells, by88–19%19\\%over the strongest baseline in each; it also has the best average accepted length in eleven of the twelve \(App\.[D](https://arxiv.org/html/2610.12570#A4)\)\. On the Qwen3 verifiers the margin under sampling stays within two points of the greedy margin; on Llama\-3\.1\-8B it halves \(\+16%\+16\\%atT=0T\{=\}0,\+8%\+8\\%atT=1T\{=\}1\)\.
Throughput is the number of tokens committed per verification cycle divided by the time a cycle takes, so a method can gain on either axis, andDCOCOgains on both\. On Qwen3\-8B it attains the highestτ\\tauin every cell of both configurations \(Tab\.[7](https://arxiv.org/html/2610.12570#A4.T7)and[9](https://arxiv.org/html/2610.12570#A4.T9)\)\. Relative to the other correction methods,DCOCOboth accepts longer prefixes and runs shorter cycles: against the strongest baseline,77–8%8\\%longer accepted prefixes and6%6\\%shorter cycles multiply to the1313–15%15\\%throughput gain\. Relative to the uncorrected drafter, it pays33–4%4\\%per cycle for1818–27%27\\%longer accepted prefixes \(App\.[C](https://arxiv.org/html/2610.12570#A3)\)\. Absolute speedups follow the drafter’s base acceptance: with thinking off, math and code reach3\.73\.7–6\.1×6\.1\\timeswhile open\-ended chat stays at1\.81\.8–1\.9×1\.9\\times\(2\.32\.3–2\.8×2\.8\\timesand1\.71\.7–2\.1×2\.1\\timesatT=0T\{=\}0in extended thinking\)\.
App\.[B](https://arxiv.org/html/2610.12570#A2)ablates the corrector’s two input pathways and its training: removing the pair state costs7\.3%7\.3\\%/5\.6%5\.6\\%of accepted length \(T=0T\{=\}0/T=1T\{=\}1\) and removing the candidate representations4\.8%4\.8\\%/3\.7%3\.7\\%, uniformly across the suites, while freezing the drafter, the corrector as a pure drop\-in, still improves DFlash by4\.4%4\.4\\%, with joint training worth a further≈15%\\approx\\\!15\\%\.
### 5\.2Scaling with concurrency
LLM serving systems batch concurrent requests to improve GPU utilization and throughput\. We therefore examine whether the benefits of draft correction persist as serving load increases\. Fig\.[3](https://arxiv.org/html/2610.12570#S4.F3)reports aggregate throughput from 4 to 32 concurrent streams on Qwen3\-8B with thinking off, averaged over all ten benchmark suites\.DCOCOachieves the highest throughput at every concurrency, with margins over the strongest alternative reaching23%23\\%under greedy decoding and18%18\\%under sampling, and remaining19%19\\%and12%12\\%, respectively, at 32 streams\. The comparison with DFlash in Fig\.[4](https://arxiv.org/html/2610.12570#S5.F4)reveals how these gains evolve under load\. Although accepted length remains nearly unchanged, Domino and DSpark progressively lose their throughput advantage and both become slower than the uncorrected drafter at the highest concurrency as their correction overhead outweighs the benefit in this regime\. In contrast,DCOCOremains faster than DFlash throughout, preserving the benefit of correction even when the sequential alternatives incur a net slowdown\. Additional results for the distinct verifiers are reported in App\.[F](https://arxiv.org/html/2610.12570#A6)\.
Figure 4:At high concurrency, overhead outweighs acceptance gains for Domino and DSpark, whileDCOCOremains faster than DFlash\.Accepted lengthτ\\tau\(solid\) and throughput \(dashed\), relative to DFlash; Shading highlights the separation between the accepted\-length and throughput ratios\. Qwen3\-8B, thinking off,T=0T=0\(dark\) andT=1T=1\(light\), averaged over all ten benchmark suites\. Absolute values: Tab\.[19](https://arxiv.org/html/2610.12570#A6.T19)\.
### 5\.3Path selection strategy
We compare three selection strategies over the same grid of transition scores produced by a trained corrector\. Global\-Sum maximizes the sum of transition scores across the block, while prefix\-first greedy\(Eq\.[7](https://arxiv.org/html/2610.12570#S4.E7)\) selects each successor using only the scores associated with the chosen predecessor\. To test whether emphasizing earlier transitions improves global selection, we also evaluate a geometrically discounted variant,
k^1:B=argmaxk1,…,kB\[ℓ1\(k1\)\+∑p=1B−1λp−1Sp\(kp,kp\+1\)\],geom\(λ\),\\hat\{k\}\_\{1:B\}\\;=\\;\\arg\\max\_\{k\_\{1\},\\dots,k\_\{B\}\}\\;\\Bigl\[\\,\\ell\_\{1\}\(k\_\{1\}\)\\;\+\\;\\sum\_\{p=1\}^\{B\-1\}\\lambda^\{\\,p\-1\}\\,S\_\{p\}\(k\_\{p\},k\_\{p\+1\}\)\\,\\Bigr\]\\,,\\qquad\\textsc\{geom\}\(\\lambda\)\\,,\(8\)which keeps the global argmax but shifts weight toward earlier transitions;λ=1\\lambda=1recovers the plain sum\. We reportλ=0\.75\\lambda=0\.75\.
Table 3:Path selection over identical trained scores\(Qwen3\-8B from\-pretrained corrector,T=0T\{=\}0, no thinking, 2048 max tokens\)\. Bold: best rule per row and metric\. Between greedy and geometric theτ\\taudifferences carry both signs and are an order of magnitude smaller than either rule’s gap to Global\-Sum; the throughput ordering is uniform\.Tab\.[3](https://arxiv.org/html/2610.12570#S5.T3)shows that Global\-Sum yields lower accepted length and throughput than Greedy on all nine evaluated suites\. Geometric improves accepted length over Global\-Sum on every suite and achieves acceptance comparable to Greedy: their per\-suite differences have both signs, with average accepted lengths of 5\.258 and 5\.254, respectively\. Greedy nevertheless achieves higher throughput on every suite, averaging a 2\.8% improvement over Geometric\. These results support greedy selection as an effective acceptance–latency trade\-off for the learned scores evaluated here, with an\(O\(BK\)\)\(O\(BK\)\)walk and no discount hyperparameter\.
## 6Conclusion
Parallel block drafters leave two things on the table: their top\-KKlists provide a significant coverage boost over the top\-1 choice, and the identity of each drafted token is information no other slot ever gets to use\.DCOCOis a lightweight corrector built on exactly these two facts\. Reading only what the drafter already produced, it scores every transition between adjacent candidates in parallel with a cheap neural scorer, then greedily takes the best transition at each step to form the proposed continuation, mirroring the way verification consumes a draft, front to back, stopping at the first miss\. Across several backbone models and ten benchmarks, the corrected system leads in both accepted length and decoding throughput at almost every point of measurement, and its advantage persists or widens at higher serving concurrencies, where competing correctors fall below the uncorrected drafter\. Correction, made cheap enough, is pure profit for speculative decoding\.
## References
## Appendix ATraining details
#### Training loss\.
For a single block the correction term is a weight\-normalised cross\-entropy over theK2K^\{2\}jointly softmax\-normalised transition scores,
ℒcorr=−1Z∑p=1B−1e−\(p−1\)/ρmplogexpSp\(ap⋆,bp⋆\)∑a,b=1KexpSp\(a,b\),Z=∑p=1B−1e−\(p−1\)/ρmp,ρ=4,\\mathcal\{L\}\_\{\\mathrm\{corr\}\}\\;=\\;\-\\frac\{1\}\{Z\}\\sum\_\{p=1\}^\{B\-1\}e^\{\-\(p\-1\)/\\rho\}\\;m\_\{p\}\\,\\log\\frac\{\\exp S\_\{p\}\(a^\{\\star\}\_\{p\},b^\{\\star\}\_\{p\}\)\}\{\\sum\_\{a,b=1\}^\{K\}\\exp S\_\{p\}\(a,b\)\},\\qquad Z=\\sum\_\{p=1\}^\{B\-1\}e^\{\-\(p\-1\)/\\rho\}\\,m\_\{p\},\\quad\\rho=4,\(9\)where the label\(ap⋆,bp⋆\)\(a^\{\\star\}\_\{p\},b^\{\\star\}\_\{p\}\)is the pair of verifier\-argmax tokens at the two slots, computed over the teacher\-forced context\. The maskmp∈\{0,1\}m\_\{p\}\\in\\\{0,1\\\}is11only when both verifier tokens lie inside their slots’ top\-KKcandidate sets and both slots pass the alignment mask; transitions the drafter cannot reach are dropped from supervision rather than taught\. In a batch, the sums in equation[9](https://arxiv.org/html/2610.12570#A1.E9)andZZextend jointly over all block, transition pairs, a single weighted mean, not a mean of per\-block means, andZZis clamped below by11, which bites only when a block has no supervised transition\. The complete loss is given by the adding the correction loss, with unit weight, to DFlash’s own loss\.
#### Training data\.
Following DFlash, we use approximately 800K prompts from the stem, math, and code splits of the Nemotron Post\-Training Dataset v2\(nvidia2025nvidianemotronnano2\)and CodeAlpaca\-20k\(codealpaca\)\. Each verifier regenerates its own continuations using greedy decoding \(T=0T=0\), with thinking disabled and at most 4096 generated tokens\. For each verifier, all methods train on the same resulting corpus\.
#### Training protocol\.
For each verifier,DCOCOis initialized from a DFlash drafter trained for six epochs, then trained for six further epochs alongside the corrector\. Baseline results use six training epochs under each method’s published objective; comparisons with extended training are reported in Appendix[B](https://arxiv.org/html/2610.12570#A2)\.
#### Optimization and checkpoint selection\.
All methods use AdamW with learning rate6×10−46\\times 10^\{\-4\}, no weight decay, and a cosine learning\-rate schedule with 4% warmup\. Training uses token\-budgeted sequence packing with a budget of 4096 tokens per GPU per micro\-step across eight GPUs and 23 gradient\-accumulation steps\. This corresponds to a nominal budget of4096×8×23=753,6644096\\times 8\\times 23=753\{,\}664tokens per optimizer step; the number of sequences varies with their lengths\. Validation metrics are diagnostic and are not used for checkpoint selection\. Each method is trained once with seed 42, so variability across training seeds is not measured\. The drafter loss used byDCOCOis specified above; baselines use their published losses\.
#### Relation of equation[9](https://arxiv.org/html/2610.12570#A1.E9)to the decode rule\.
Because the label fixes the true predecessor, the joint cross\-entropy orders the true successor above every alternative in the predecessor’s row, precisely the conditional decision that equation[7](https://arxiv.org/html/2610.12570#S4.E7)executes at decode time, while additionally suppressing every competing row, so the training objective is strictly stronger than the decision rule it must support\. The exponential training weight emphasizes earlier transitions, motivated by the requirement that preceding tokens must be accepted before a later transition can contribute\. It serves as a fixed proxy for prefix survival rather than an estimated acceptance probability\. This training weight is distinct from the geometric discount evaluated in Section 5\.3: the former controls the relative contribution of positions to the training loss, while the latter changes path selection at inference\.
#### Label extraction\.
Training does not execute an online speculative loop\. The context is a fixed, teacher\-forced corpus; the verifier’s hidden states over it are precomputed once, its output head is applied under no gradient, and the argmax at each slot, when present in that slot’s top\-KK, supplies the label\. Supervision is therefore conditioned exclusively on verifier\-correct prefixes\. This is not a train/serve mismatch but a consequence of prefix acceptance: a transition’s decision is only ever consumed when every earlier slot was accepted, i\.e\. matches the verifier, so verifier\-correct prefixes are precisely the states in which the corrector’s output matters\.
#### Corrector architecture\.
The corrector uses candidate\-representation widthde=128d\_\{e\}=128, pair\-state widthdh=128d\_\{h\}=128, andK=16K=16candidates per drafted slot\. These widths correspond tor=128r=128in the method description\. The two\-layer scoring MLP has input widthdh\+2de\+2=386d\_\{h\}\+2d\_\{e\}\+2=386, hidden width 256 with GELU activation, and a scalar output\. The pair projection has shape128×\(2d\)128\\times\(2d\)and the candidate–context fusion projection has shape128×256128\\times 256\. On Qwen3\-8B, the five\-layer drafter has hidden widthd=4096d=4096and the corrector has 2,229,505 parameters\. The same corrector architecture has 1,443,073 parameters on Qwen3\-4B, reflecting the smaller input hidden width\. The frozen token\-embedding table is shared with the underlying model and is not an additional corrector parameter allocation\. Inference uses BF16 weights\.
#### Draft\-length convention\.
The nominal block\-size setting is 16 for all methodsB=15B=15refers toDCOCO’s drafted positions, excluding the anchor supplied as context\.DCOCOtherefore scores\(B−1\)K2=14×162=3584\(B\-1\)K^\{2\}=14\\times 16^\{2\}=3584adjacent candidate transitions and commits at most 16 tokens per round, including the verifier’s additional token\. The comparisons use these native configurations rather than a strictly matched number of drafted tokens\.
## Appendix BTraining budget and convergence
Our arm trains for twelve epochs in total, six drafter\-only, matching the published DFlash recipe, followed by six joint epochs with the corrector, while every baseline trains for its standard six\. To rule out budget rather than the corrector as the source of the gains, we continue each baseline \(DFlash, Domino, DSpark\) to twelve epochs under its own objective and recipe, unchanged\. Table[4](https://arxiv.org/html/2610.12570#A2.T4)reports the result: all three are converged at six epochs, doubling their training moves accepted length by no more than 1\.9%, whereas the joint phase is where our arm’s gain accrues\. The comparison in the main tables is therefore between converged systems, not between budgets\.
Table 4:Extending baseline training to match our total budget, Q8B no\-thinking, max generated tokens 2048, T=0 averaged across the 10 benchmarks\. Baselines show no more than 2% improvement from a second six epochs; the joint phase accounts for our arm’s improvement\.#### Component ablations\.
The corrector’s correction termΔθ\\Delta\_\{\\theta\}reads two learned input pathways: the candidate representationszpa,zp\+1bz^\{a\}\_\{p\},z^\{b\}\_\{p\+1\}and the candidate\-independent pair statesps\_\{p\}\. We retrain the corrector with each pathway removed, under the recipe of App\.[A](https://arxiv.org/html/2610.12570#A1)unchanged: the−\-pair state variant drops the pair state \(transitions scored from candidate representations and logits alone\) and the−\-cand state variant drops the candidate representations \(a candidate\-blind scorer that recalibrates the draft logits from the pair state alone\)\. The Frozen backbone ablation keeps the corrector intact but freezes the drafter at its six\-epoch DFlash checkpoint, so the corrector trains as a pure drop\-in and the backbone never co\-adapts\. Tables[5](https://arxiv.org/html/2610.12570#A2.T5)and[6](https://arxiv.org/html/2610.12570#A2.T6)report throughput and accepted length, respectively\. Removing either input pathway hurts both metrics across all ten suites and both temperatures\. The pair state carries the larger share: without it, accepted length drops by7\.3%7\.3\\%/5\.6%5\.6\\%\(T=0T\{=\}0/T=1T\{=\}1averages\) and throughput by6\.3%6\.3\\%/4\.6%4\.6\\%; without candidate representations, accepted length drops by4\.8%4\.8\\%/3\.7%3\.7\\%and throughput by4\.6%4\.6\\%/3\.3%3\.3\\%\. Neither pathway is redundant, and their contributions are consistent across domains, largest on math and code\. Even with the drafter frozen, training the corrector increases average throughput from783\.1783\.1to817\.7817\.7tok/s atT=0T\{=\}0\(\+4\.4%\+4\.4\\%\)\. Freezing the drafter nevertheless reduces average throughput by15\.9%15\.9\\%/12\.9%12\.9\\%atT=0T\{=\}0/T=1T\{=\}1, respectively, relative to joint training\. By comparison, extending drafter training alone improves throughput by at most2%2\\%\(Tab\.[4](https://arxiv.org/html/2610.12570#A2.T4)\), suggesting that the gains from joint training cannot be explained by additional drafter training alone\.
\(a\)Greedy decoding,T=0T\{=\}0\(mean of 3 runs\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 5:Ablations: throughput \(output tokens/s, per\-stream\), Qwen3\-8B, thinking off, concurrency 1, max 2048 generated tokens, all ten suites\. Each ablation cell reports its value with the change relative toDCOCOin parentheses\.−\-pair state removes the corrector’s dedicated previous\-state channel;−\-cand state zeroes the candidate representations entering the transition scorer; Frozen backbone trains only the corrector on the fixed six\-epoch DFlash backbone\. Bold: best measured system per row\.\(a\)Greedy decoding,T=0T\{=\}0\(mean of 3 runs\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 6:Ablations: accepted lengthτ\\tau, Qwen3\-8B, thinking off, concurrency 1, max 2048 generated tokens, all ten suites\. Each ablation cell reports its value with the change relative toDCOCOin parentheses\.−\-pair state removes the corrector’s dedicated previous\-state channel;−\-cand state zeroes the candidate representations entering the transition scorer; Frozen backbone trains only the corrector on the fixed six\-epoch DFlash backbone\. Bold: best measured system per row\.
## Appendix CEvaluation details
#### Benchmarks and generation settings\.
We evaluate ten benchmarks across three domains: mathematics \(GSM8K\(cobbe2021gsm8k\), MATH\-500\(lightman2024let\), AIME\-25\(aime25\)\), code \(HumanEval\(chen2021codex\), MBPP\(austin2021program\), LiveCodeBench\(jain2025livecodebench\)\), and general tasks and chat \(SpeedBench\(abramovich2026speedbench\), Alpaca\(alpaca\), MT\-Bench\(zheng2023judging\), Arena\-Hard\-v2\(li2025arenahard\)\)\. We evaluate greedy decoding atT=0T=0and stochastic decoding atT=1T=1\. The maximum number of generated tokens is 2048 without thinking and 4096 with extended thinking\. Both thinking settings are evaluated for Qwen3\-4B and Qwen3\-8B; Qwen3\-Coder\-30B\-A3B and Llama\-3\.1\-8B are evaluated without a separate thinking mode\.
#### Serving configuration\.
All systems run on a single NVIDIA B200 GPU with tensor parallelism 1, using vLLM 0\.27\.0 and PyTorch 2\.13\.0\+cu130\. Model precision is BF16 \(\-\-dtype auto\); KV\-cache dtype uses the automatic setting \(\-\-kv\-cache\-dtype auto\)\. Prefix caching is disabled \(\-\-no\-enable\-prefix\-caching\)\. CUDA Graphs are enabled, eager execution is not forced, and no optimization\-level override is supplied\. Evaluation begins after server initialization and CUDA Graph capture complete\.
#### Timing and aggregation\.
For requestii, letnin\_\{i\}denote the number of generated output tokens andLiL\_\{i\}the request latency in seconds, including prefill\. Its reported rate isni/Lin\_\{i\}/L\_\{i\}, rather than the inverse inter\-token latency\. At concurrency 1, we report the median request\-level rate within each benchmark\. The reported ten\-suite averages give each benchmark equal weight\. No initial evaluation requests are discarded as warmup\. ForT=1T=1, the reported mean and standard deviation are computed across generation seeds 42, 43, and 44, after computing the benchmark statistic for each seed\. These quantify evaluation variability for fixed checkpoints, not variability across independent training runs\.
#### Evaluation subsets\.
We use fixed benchmark subsets selected with subsampling seed 1234, shared across methods\. GSM8K, MATH\-500, HumanEval, MBPP, LiveCodeBench, Alpaca, and Arena\-Hard\-v2 each contain 128 selected rows\. AIME\-25 uses all 30 rows and MT\-Bench all 80 rows\. SPEED\-Bench contains 80 rows from each of 11 subsets, for 880 rows in total, and is treated as one of the ten benchmark suites\. The evaluation manifest records the exact selected row indices\. For LiveCodeBench, we sample from the 1,055 available rows in thecode\_generation\_litev5 and v6 release files,test5\.jsonlandtest6\.jsonl\(version\_tag=v5\_v6\)\.
## Appendix DFull per\-dataset results
Per\-dataset throughput and accepted length for each configuration not shown in the main text, in the format of Tables[1](https://arxiv.org/html/2610.12570#S5.T1)and[7](https://arxiv.org/html/2610.12570#A4.T7)\.
Table 7:Mechanism: mean accepted lengthτ\\tau, Qwen3\-8B, thinking off, companion to Table[1](https://arxiv.org/html/2610.12570#S5.T1); no\-spec commits one token per round by construction and is omitted\.τ\\tauexplains the TPS movement; the corrector’s own overhead is visible only in throughput\.\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500262\.0608\.8 \(2\.32×\\times\)617\.1 \(2\.36×\\times\)567\.4 \(2\.17×\\times\)724\.9 \(2\.77×\\times\)AIME\-25260\.3586\.9 \(2\.26×\\times\)612\.5 \(2\.35×\\times\)574\.9 \(2\.21×\\times\)703\.1 \(2\.70×\\times\)GSM8K264\.1555\.6 \(2\.10×\\times\)559\.7 \(2\.12×\\times\)518\.6 \(1\.96×\\times\)646\.5 \(2\.45×\\times\)CodeHumanEval260\.6562\.9 \(2\.16×\\times\)572\.8 \(2\.20×\\times\)524\.7 \(2\.01×\\times\)654\.4 \(2\.51×\\times\)MBPP262\.8535\.6 \(2\.04×\\times\)548\.2 \(2\.09×\\times\)498\.2 \(1\.90×\\times\)618\.1 \(2\.35×\\times\)LiveCodeBench259\.2541\.9 \(2\.09×\\times\)554\.5 \(2\.14×\\times\)506\.6 \(1\.95×\\times\)624\.2 \(2\.41×\\times\)GeneralMT\-Bench264\.4477\.4 \(1\.81×\\times\)481\.9 \(1\.82×\\times\)465\.3 \(1\.76×\\times\)545\.6 \(2\.06×\\times\)Arena\-Hard\-v2260\.4439\.1 \(1\.69×\\times\)421\.9 \(1\.62×\\times\)404\.8 \(1\.56×\\times\)508\.3 \(1\.95×\\times\)Alpaca265\.8388\.1 \(1\.46×\\times\)389\.0 \(1\.46×\\times\)364\.2 \(1\.37×\\times\)440\.8 \(1\.66×\\times\)SpeedBench264\.3403\.3 \(1\.53×\\times\)403\.3 \(1\.53×\\times\)380\.9 \(1\.44×\\times\)458\.7 \(1\.74×\\times\)Average262\.4510\.0 \(1\.95×\\times\)516\.1 \(1\.97×\\times\)480\.6 \(1\.83×\\times\)592\.5 \(2\.26×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 8:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Qwen3\-8B, thinking on, concurrency 1, max 4096 generated tokens\. Same format as Table[1](https://arxiv.org/html/2610.12570#S5.T1)\.Table 9:Mean accepted lengthτ\\tau, Qwen3\-8B, thinking on, companion to Table[8](https://arxiv.org/html/2610.12570#A4.T8);DCOCOattains the bestτ\\tauin every cell in this configuration\.\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500278\.41356\.9 \(4\.88×\\times\)1477\.5 \(5\.31×\\times\)1367\.6 \(4\.91×\\times\)1636\.0 \(5\.88×\\times\)AIME\-25274\.81465\.6 \(5\.33×\\times\)1601\.0 \(5\.83×\\times\)1491\.2 \(5\.43×\\times\)1811\.7 \(6\.59×\\times\)GSM8K278\.4891\.0 \(3\.20×\\times\)915\.5 \(3\.29×\\times\)865\.8 \(3\.11×\\times\)1160\.8 \(4\.17×\\times\)CodeHumanEval276\.41049\.9 \(3\.80×\\times\)1144\.7 \(4\.14×\\times\)1038\.0 \(3\.76×\\times\)1260\.3 \(4\.56×\\times\)MBPP282\.31036\.3 \(3\.67×\\times\)1128\.5 \(4\.00×\\times\)1039\.0 \(3\.68×\\times\)989\.7 \(3\.51×\\times\)LiveCodeBench278\.7990\.0 \(3\.55×\\times\)1050\.5 \(3\.77×\\times\)972\.1 \(3\.49×\\times\)1448\.8 \(5\.20×\\times\)GeneralMT\-Bench281\.6420\.8 \(1\.49×\\times\)436\.4 \(1\.55×\\times\)416\.9 \(1\.48×\\times\)572\.5 \(2\.03×\\times\)Arena\-Hard\-v2279\.0409\.0 \(1\.47×\\times\)407\.3 \(1\.46×\\times\)387\.6 \(1\.39×\\times\)570\.5 \(2\.05×\\times\)Alpaca279\.2409\.8 \(1\.47×\\times\)426\.7 \(1\.53×\\times\)402\.1 \(1\.44×\\times\)478\.8 \(1\.72×\\times\)SpeedBench279\.2413\.0 \(1\.48×\\times\)419\.6 \(1\.50×\\times\)399\.7 \(1\.43×\\times\)494\.6 \(1\.77×\\times\)Average278\.8844\.2 \(3\.03×\\times\)900\.8 \(3\.24×\\times\)838\.0 \(3\.01×\\times\)1042\.4 \(3\.75×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 10:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Llama\-3\.1\-8B, thinking off, concurrency 1, max 2048 generated tokens\. Same format as Table[1](https://arxiv.org/html/2610.12570#S5.T1)\.Table 11:Mean accepted lengthτ\\tau, Llama\-3\.1\-8B, thinking off, companion to Table[10](https://arxiv.org/html/2610.12570#A4.T10)\. Domino attains bestτ\\tauon some datasets here, yet the lower average throughput \(Table[10](https://arxiv.org/html/2610.12570#A4.T10)\), theτ\\tau\-vs\-TPS trade at the aggregate level\.\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500343\.21043\.3 \(3\.04×\\times\)1138\.2 \(3\.32×\\times\)1050\.8 \(3\.06×\\times\)1231\.8 \(3\.59×\\times\)AIME\-25342\.9928\.1 \(2\.71×\\times\)941\.5 \(2\.75×\\times\)906\.7 \(2\.64×\\times\)1074\.5 \(3\.13×\\times\)GSM8K348\.0733\.5 \(2\.11×\\times\)728\.3 \(2\.09×\\times\)698\.2 \(2\.01×\\times\)854\.8 \(2\.46×\\times\)CodeHumanEval335\.2874\.8 \(2\.61×\\times\)880\.9 \(2\.63×\\times\)847\.7 \(2\.53×\\times\)1003\.8 \(3\.00×\\times\)MBPP333\.5759\.5 \(2\.28×\\times\)779\.0 \(2\.34×\\times\)734\.6 \(2\.20×\\times\)974\.0 \(2\.92×\\times\)LiveCodeBench338\.9684\.5 \(2\.02×\\times\)743\.9 \(2\.20×\\times\)698\.9 \(2\.06×\\times\)890\.8 \(2\.63×\\times\)GeneralMT\-Bench337\.0317\.6 \(0\.94×\\times\)316\.9 \(0\.94×\\times\)298\.8 \(0\.89×\\times\)510\.1 \(1\.51×\\times\)Arena\-Hard\-v2333\.5357\.1 \(1\.07×\\times\)347\.0 \(1\.04×\\times\)336\.2 \(1\.01×\\times\)456\.5 \(1\.37×\\times\)Alpaca348\.0298\.3 \(0\.86×\\times\)302\.7 \(0\.87×\\times\)296\.9 \(0\.85×\\times\)382\.7 \(1\.10×\\times\)SpeedBench341\.5427\.2 \(1\.25×\\times\)422\.8 \(1\.24×\\times\)403\.7 \(1\.18×\\times\)472\.0 \(1\.38×\\times\)Average340\.2642\.4 \(1\.89×\\times\)660\.1 \(1\.94×\\times\)627\.2 \(1\.84×\\times\)785\.1 \(2\.31×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 12:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Qwen3\-Coder\-30B\-A3B, thinking off, concurrency 1, max 2048 generated tokens\. Same format as Table[1](https://arxiv.org/html/2610.12570#S5.T1)\.Table 13:Mean accepted lengthτ\\tau, Qwen3\-Coder\-30B\-A3B, thinking off, companion to Table[12](https://arxiv.org/html/2610.12570#A4.T12)\.\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500366\.21764\.7 \(4\.82×\\times\)1974\.6 \(5\.39×\\times\)1599\.5 \(4\.37×\\times\)2165\.5 \(5\.91×\\times\)AIME\-25364\.41640\.5 \(4\.50×\\times\)1922\.1 \(5\.27×\\times\)1566\.0 \(4\.30×\\times\)2085\.9 \(5\.72×\\times\)GSM8K369\.61330\.9 \(3\.60×\\times\)1450\.5 \(3\.93×\\times\)1127\.0 \(3\.05×\\times\)1638\.4 \(4\.43×\\times\)CodeHumanEval370\.61226\.4 \(3\.31×\\times\)1348\.7 \(3\.64×\\times\)1075\.4 \(2\.90×\\times\)1475\.8 \(3\.98×\\times\)MBPP370\.21137\.6 \(3\.07×\\times\)1267\.5 \(3\.42×\\times\)978\.6 \(2\.64×\\times\)1435\.3 \(3\.88×\\times\)LiveCodeBench369\.21482\.9 \(4\.02×\\times\)1620\.5 \(4\.39×\\times\)1309\.8 \(3\.55×\\times\)1754\.1 \(4\.75×\\times\)GeneralMT\-Bench369\.0580\.4 \(1\.57×\\times\)593\.4 \(1\.61×\\times\)528\.2 \(1\.43×\\times\)661\.3 \(1\.79×\\times\)Arena\-Hard\-v2369\.6600\.8 \(1\.63×\\times\)610\.5 \(1\.65×\\times\)527\.7 \(1\.43×\\times\)692\.3 \(1\.87×\\times\)Alpaca368\.1559\.0 \(1\.52×\\times\)595\.6 \(1\.62×\\times\)513\.0 \(1\.39×\\times\)658\.7 \(1\.79×\\times\)SpeedBench369\.1645\.6 \(1\.75×\\times\)643\.9 \(1\.74×\\times\)575\.5 \(1\.56×\\times\)759\.0 \(2\.06×\\times\)Average368\.61096\.9 \(2\.98×\\times\)1202\.7 \(3\.27×\\times\)980\.1 \(2\.66×\\times\)1332\.6 \(3\.62×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 14:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Qwen3\-4B, thinking off, concurrency 1, max 2048 generated tokens\. Same format as Table[1](https://arxiv.org/html/2610.12570#S5.T1)\.Table 15:Mean accepted lengthτ\\tau, Qwen3\-4B, thinking off, companion to Table[14](https://arxiv.org/html/2610.12570#A4.T14)\.DCOCOleadsτ\\tauin 19 of 20 cells and both averages\.\(a\)Greedy decoding,T=0T\{=\}0\(single deterministic run\)
DomainDatasetNo\-specDFlashDominoDSparkDCOCOMathMATH\-500361\.0868\.8 \(2\.41×\\times\)921\.7 \(2\.55×\\times\)785\.8 \(2\.18×\\times\)1000\.4 \(2\.77×\\times\)AIME\-25359\.5861\.5 \(2\.40×\\times\)909\.9 \(2\.53×\\times\)755\.0 \(2\.10×\\times\)989\.8 \(2\.75×\\times\)GSM8K362\.0846\.8 \(2\.34×\\times\)869\.7 \(2\.40×\\times\)735\.9 \(2\.03×\\times\)974\.0 \(2\.69×\\times\)CodeHumanEval357\.9824\.4 \(2\.30×\\times\)875\.9 \(2\.45×\\times\)739\.7 \(2\.07×\\times\)934\.4 \(2\.61×\\times\)MBPP359\.5797\.0 \(2\.22×\\times\)836\.3 \(2\.33×\\times\)731\.1 \(2\.03×\\times\)923\.9 \(2\.57×\\times\)LiveCodeBench361\.2780\.1 \(2\.16×\\times\)842\.8 \(2\.33×\\times\)706\.5 \(1\.96×\\times\)896\.5 \(2\.48×\\times\)GeneralMT\-Bench363\.4741\.7 \(2\.04×\\times\)745\.6 \(2\.05×\\times\)651\.0 \(1\.79×\\times\)839\.0 \(2\.31×\\times\)Arena\-Hard\-v2362\.7682\.9 \(1\.88×\\times\)702\.1 \(1\.94×\\times\)574\.1 \(1\.58×\\times\)796\.0 \(2\.20×\\times\)Alpaca367\.9543\.2 \(1\.48×\\times\)551\.2 \(1\.50×\\times\)497\.4 \(1\.35×\\times\)604\.8 \(1\.64×\\times\)SpeedBench365\.7588\.7 \(1\.61×\\times\)596\.9 \(1\.63×\\times\)529\.2 \(1\.45×\\times\)663\.5 \(1\.81×\\times\)Average362\.1753\.5 \(2\.08×\\times\)785\.2 \(2\.17×\\times\)670\.6 \(1\.85×\\times\)862\.2 \(2\.38×\\times\)
\(b\)Sampling,T=1T\{=\}1\(mean±\\pmstd over seeds 42/43/44\)
Table 16:Throughput \(output tokens/s, per\-stream\) and speedup over no\-spec decoding, Qwen3\-4B, thinking on, concurrency 1, max 4096 generated tokens\. Same format as Table[1](https://arxiv.org/html/2610.12570#S5.T1)\.Table 17:Mean accepted lengthτ\\tau, Qwen3\-4B, thinking on, companion to Table[16](https://arxiv.org/html/2610.12570#A4.T16)\.
## Appendix ECoverage by verifier
Table[18](https://arxiv.org/html/2610.12570#A5.T18)summarises Figure[1](https://arxiv.org/html/2610.12570#S2.F1)for all four verifiers, and the pattern is strikingly uniform: at the first drafted slot the top\-16 pool contains the committed token about95%95\\%of the time and the drafter’s own first choice about81%81\\%, while by the last slot the pool still holds it in5757–61%61\\%of cases but the first choice finds it only about one time in five\. In other words, deep in the block roughly every second slot still has the right token waiting in the candidate pool, the drafter simply stops picking it\. This is the headroom the corrector re\-selects from\.
Table 18:Coverage by verifier: means over the 15 drafted slots of Figure[1](https://arxiv.org/html/2610.12570#S2.F1), with the first and last slot shown per verifier\. Top\-1 is the drafter’s own per\-slot accuracy;DCOCOusesK=16K\{=\}16\.
## Appendix FThroughput at higher concurrency
Batched serving is where correction overhead either pays or does not: as concurrency grows, the verifier’s cycle time is amortised across streams, so whatever a corrector adds per cycle weighs ever more heavily against the acceptance it buys\. This appendix extends the main\-text view of Figures[3](https://arxiv.org/html/2610.12570#S4.F3)and[4](https://arxiv.org/html/2610.12570#S5.F4)to the remaining backbones\. Figures[5](https://arxiv.org/html/2610.12570#A6.F5)–[7](https://arxiv.org/html/2610.12570#A6.F7)plot aggregate throughput withDCOCO’s margin over the strongest baseline at each load, and Tables[19](https://arxiv.org/html/2610.12570#A6.T19)–[22](https://arxiv.org/html/2610.12570#A6.T22)give the absolute numbers from concurrency 1:DCOCOis the fastest arm in every cell, all four backbones, both temperatures, by66–23%23\\%over the strongest baseline, while Domino drops below even the uncorrected drafter as load grows and DSpark sits at or below it throughout\. Figures[8](https://arxiv.org/html/2610.12570#A6.F8)–[10](https://arxiv.org/html/2610.12570#A6.F10)show why, plotting each corrector’s accepted length and throughput relative to DFlash with its per\-cycle overhead as the shaded gap between the two curves: Domino’s acceptance gain persists at every load, but the widening overhead consumes it, theτ\\taucurve stays above parity while the throughput curve slides below, DSpark buys little or no acceptance to begin with, andDCOCO’s two curves move together above parity because its shading stays thin\.
Figure 5:At high concurrency,DCOCOachieves the highest throughput, while Domino and DSpark fall below DFlash\.Qwen3\-4B throughput at \(a\)T=0T=0and \(b\)T=1T=1, averaged over the ten suites\. \(c\)DCOCO’s relative throughput gain over the strongest baseline at each concurrency\.DCOCO’s margin is1010–14%14\\%atT=0T\{=\}0and77–11%11\\%atT=1T\{=\}1\.Figure 6:DCOCOachieves the highest throughput at every concurrency, while Domino and DSpark stay at or below DFlash\.Qwen3\-Coder\-30B\-A3B throughput at \(a\)T=0T=0and \(b\)T=1T=1, averaged over the ten suites\. \(c\)DCOCO’s relative throughput gain over the strongest baseline at each concurrency\.DCOCO’s margin is1010–14%14\\%atT=0T\{=\}0and88–10%10\\%atT=1T\{=\}1\.Figure 7:DCOCOachieves the highest throughput at every concurrency, while Domino falls increasingly behind DFlash as load grows\.Llama\-3\.1\-8B throughput at \(a\)T=0T=0and \(b\)T=1T=1, averaged over the ten suites\. \(c\)DCOCO’s relative throughput gain over the strongest baseline at each concurrency\.DCOCO’s margin is99–16%16\\%atT=0T\{=\}0and66–12%12\\%atT=1T\{=\}1\.Figure 8:Domino’s acceptance gain is consumed by per\-cycle overhead as concurrency grows, and DSpark never matches DFlash’s acceptance, whileDCOCOremains faster than DFlash\.Accepted lengthτ\\tau\(solid\) and throughput \(dashed\), relative to DFlash; Shading highlights the separation between the accepted\-length and throughput ratios\.\. Qwen3\-4B, thinking off,T=0T=0\(dark\) andT=1T=1\(light\), averaged over all ten benchmark suites\. Absolute values: Tab\.[20](https://arxiv.org/html/2610.12570#A6.T20)\.Figure 9:At high concurrency, overhead outweighs Domino’s acceptance gain and DSpark gains no acceptance over DFlash, whileDCOCOremains faster than DFlash\.Accepted lengthτ\\tau\(solid\) and throughput \(dashed\), relative to DFlash; Shading highlights the separation between the accepted\-length and throughput ratios\. Qwen3\-Coder\-30B\-A3B, thinking off,T=0T=0\(dark\) andT=1T=1\(light\), averaged over all ten benchmark suites\. Absolute values: Tab\.[21](https://arxiv.org/html/2610.12570#A6.T21)\.Figure 10:As concurrency grows, Domino’s acceptance gain is consumed by per\-cycle overhead, whileDCOCOremains faster than DFlash\.Accepted lengthτ\\tau\(solid\) and throughput \(dashed\), relative to DFlash; Shading highlights the separation between the accepted\-length and throughput ratios\. Llama\-3\.1\-8B, thinking off,T=0T=0\(dark\) andT=1T=1\(light\), averaged over all ten benchmark suites\. Absolute values: Tab\.[22](https://arxiv.org/html/2610.12570#A6.T22)\.ConcurrencyDFlashDominoDSparkDCOCODCOCO/ DFlashDCOCOvs\. best*Greedy decoding,T=0T\{=\}0*1783\.1839\.3765\.6959\.71\.23×1\.23\\times\+14\.3%\+14\.3\\%42806\.43008\.62719\.03507\.31\.25×1\.25\\times\+16\.6%\+16\.6\\%84889\.15051\.04614\.46082\.61\.24×1\.24\\times\+20\.4%\+20\.4\\%167229\.17098\.47092\.98894\.31\.23×1\.23\\times\+23\.0%\+23\.0\\%329655\.09013\.99490\.311512\.41\.19×1\.19\\times\+19\.2%\+19\.2\\%*Sampling,T=1T\{=\}1\(mean over three seeds\)*1649\.8670\.9628\.7762\.21\.17×1\.17\\times\+13\.6%\+13\.6\\%42300\.32334\.12198\.92710\.01\.18×1\.18\\times\+16\.1%\+16\.1\\%84006\.33894\.93758\.14735\.31\.18×1\.18\\times\+18\.2%\+18\.2\\%165964\.55441\.15730\.36871\.91\.15×1\.15\\times\+15\.2%\+15\.2\\%327857\.96821\.87443\.48836\.11\.12×1\.12\\times\+12\.4%\+12\.4\\%Table 19:Aggregate throughput \(output tokens/s\) as concurrency grows, Qwen3\-8B, thinking off, averaged over the ten suites per concurrency workload\.ConcurrencyDFlashDominoDSparkDCOCODCOCO/ DFlashDCOCOvs\. best*Greedy decoding,T=0T\{=\}0*11096\.91202\.7980\.11332\.61\.21×1\.21\\times\+10\.8%\+10\.8\\%44097\.14032\.13517\.54660\.31\.14×1\.14\\times\+13\.7%\+13\.7\\%86942\.66560\.95953\.97781\.71\.12×1\.12\\times\+12\.1%\+12\.1\\%1610940\.39633\.99448\.612215\.51\.12×1\.12\\times\+11\.7%\+11\.7\\%3214181\.111966\.512746\.715602\.71\.10×1\.10\\times\+10\.0%\+10\.0\\%*Sampling,T=1T\{=\}1\(mean over three seeds\)*1927\.6995\.7838\.41086\.81\.17×1\.17\\times\+9\.1%\+9\.1\\%43345\.63226\.42929\.63721\.21\.11×1\.11\\times\+11\.2%\+11\.2\\%85697\.05306\.75015\.96191\.91\.09×1\.09\\times\+8\.7%\+8\.7\\%169092\.87830\.47965\.69834\.01\.08×1\.08\\times\+8\.2%\+8\.2\\%3211676\.99628\.310525\.812476\.21\.07×1\.07\\times\+6\.8%\+6\.8\\%Table 20:Aggregate throughput \(output tokens/s\) as concurrency grows, Qwen3\-4B, thinking off, averaged over the ten suites\. Bold: best method per row\.ConcurrencyDFlashDominoDSparkDCOCODCOCO/ DFlashDCOCOvs\. best*Greedy decoding,T=0T\{=\}0*1642\.4660\.1627\.2785\.11\.22×1\.22\\times\+18\.9%\+18\.9\\%41862\.61852\.51812\.22077\.21\.12×1\.12\\times\+11\.5%\+11\.5\\%83110\.63055\.52972\.43550\.51\.14×1\.14\\times\+14\.1%\+14\.1\\%164886\.74610\.14784\.75477\.81\.12×1\.12\\times\+12\.1%\+12\.1\\%327155\.26606\.87057\.27867\.91\.10×1\.10\\times\+10\.0%\+10\.0\\%*Sampling,T=1T\{=\}1\(mean over three seeds\)*1556\.9557\.8540\.0662\.31\.19×1\.19\\times\+18\.7%\+18\.7\\%41601\.01567\.81557\.31751\.21\.09×1\.09\\times\+9\.4%\+9\.4\\%82679\.32544\.92535\.82933\.21\.09×1\.09\\times\+9\.5%\+9\.5\\%164185\.43849\.44154\.34613\.01\.10×1\.10\\times\+10\.2%\+10\.2\\%325892\.45511\.05890\.46371\.91\.08×1\.08\\times\+8\.1%\+8\.1\\%Table 21:Aggregate throughput \(output tokens/s\) as concurrency grows, Qwen3\-Coder\-30B\-A3B, thinking off, averaged over the ten suites\. Bold: best method per row\.ConcurrencyDFlashDominoDSparkDCOCODCOCO/ DFlashDCOCOvs\. best*Greedy decoding,T=0T\{=\}0*1844\.2900\.8838\.01042\.41\.23×1\.23\\times\+15\.7%\+15\.7\\%43128\.03139\.23145\.03659\.21\.17×1\.17\\times\+16\.3%\+16\.3\\%85388\.75217\.45367\.76137\.41\.14×1\.14\\times\+13\.9%\+13\.9\\%168007\.27379\.97940\.58916\.81\.11×1\.11\\times\+11\.4%\+11\.4\\%3210730\.39435\.810660\.311731\.71\.09×1\.09\\times\+9\.3%\+9\.3\\%*Sampling,T=1T\{=\}1\(mean over three seeds\)*1487\.2497\.3459\.6536\.31\.10×1\.10\\times\+7\.8%\+7\.8\\%41724\.91728\.41702\.11931\.81\.12×1\.12\\times\+11\.8%\+11\.8\\%82969\.02668\.52898\.73255\.21\.10×1\.10\\times\+9\.6%\+9\.6\\%164308\.53765\.64140\.34644\.41\.08×1\.08\\times\+7\.8%\+7\.8\\%325396\.94517\.55547\.65897\.71\.09×1\.09\\times\+6\.3%\+6\.3\\%Table 22:Aggregate throughput \(output tokens/s\) as concurrency grows, Llama\-3\.1\-8B, thinking off, averaged over the ten suites\. Bold: best method per row\.
## Appendix GStochastic Verification with Deterministic Proposals
DCOCOselects draft tokens deterministically using the prefix\-first rule, including when the verifier uses stochastic decoding\. Conditional on the current context and the selected draft prefix, its proposal distribution is therefore a point mass:
pj\(v∣x,y^<j\)=𝟏\[v=y^j\]\.p\_\{j\}\(v\\mid x,\\hat\{y\}\_\{<j\}\)=\\mathbf\{1\}\[v=\\hat\{y\}\_\{j\}\]\.\(10\)The probability one refers to proposal selection, not verifier acceptance\. Letqj\(v\)=q\(v∣x,y^<j\)q\_\{j\}\(v\)=q\(v\\mid x,\\hat\{y\}\_\{<j\}\)denote the verifier distribution after applying the target sampling settings, including temperature\. Standard speculative sampling acceptsy^j\\hat\{y\}\_\{j\}with probabilitymin\{1,qj\(y^j\)/pj\(y^j\)\}=qj\(y^j\)\\min\\\{1,q\_\{j\}\(\\hat\{y\}\_\{j\}\)/p\_\{j\}\(\\hat\{y\}\_\{j\}\)\\\}=q\_\{j\}\(\\hat\{y\}\_\{j\}\)\. On rejection, its residual distribution simplifies to
rj\(v\)=qj\(v\)1\[v≠y^j\]1−qj\(y^j\)\.r\_\{j\}\(v\)=\\frac\{q\_\{j\}\(v\)\\,\\mathbf\{1\}\[v\\neq\\hat\{y\}\_\{j\}\]\}\{1\-q\_\{j\}\(\\hat\{y\}\_\{j\}\)\}\.\(11\)Whenqj\(y^j\)=1q\_\{j\}\(\\hat\{y\}\_\{j\}\)=1, rejection never occurs and the residual is not needed\.
This rule preserves the verifier distribution: the proposed token is emitted with probabilityqj\(y^j\)q\_\{j\}\(\\hat\{y\}\_\{j\}\), while any other tokenvvis emitted with probability\(1−qj\(y^j\)\)rj\(v\)=qj\(v\)\(1\-q\_\{j\}\(\\hat\{y\}\_\{j\}\)\)r\_\{j\}\(v\)=q\_\{j\}\(v\)\. Verification continues through accepted draft tokens, commits the residual sample at the first rejection, and discards the remaining draft suffix\. If all draft tokens are accepted, one additional token is sampled from the verifier\. Applying the same argument at each committed position preserves the target autoregressive distribution\.
Consequently, stochastic target decoding does not require stochastic draft selection:DCOCO’s transition scores need not be softmax\-normalized, and no distribution over the retained candidates needs to be sampled or passed to the verifier\. The verifier must use the point\-mass proposal semantics above\.Similar Articles
Draft in Parallel, Condition Through Depth: Adjacent Causal Injection for Speculative Decoding
提出DSpine,一种通过网络深度注入相邻因果条件的并行推测解码drafter,在SGLang中实现高效并行执行,较DFlash在Qwen3-8B上平均接受长度提升27.8%、吞吐量提升23.3%。
DFlash 2: Keep Drafting Parallel
DFlash 2 improves speculative decoding by predicting tokens in parallel, achieving over 20% more output per verification pass with minimal latency, and is integrated into major inference engines like SGLang and vLLM.
Decoupled Contrastive Decoding via Expert-Aligned Drafting
This paper introduces Decoupled Contrastive Decoding (DCD), which uses an expert-aligned lightweight proposer for speculative decoding while keeping the contrastive signal only in verification, achieving speedups over vanilla contrastive decoding without degrading output distribution.
DEdit: Iterative Draft Editing for Speculative Decoding
DEdit introduces a diffusion-based drafter for speculative decoding that iteratively edits drafts via token-to-token predictions, using a ProposalMix training scheme to repair errors while preserving correct tokens. It achieves macro-average speedups of 5.72× and 5.97× on Qwen3-4B and Qwen3-8B across seven benchmarks.
DLoop: Looped Speculative Decoding
DLoop 提出一种循环式投机解码方法,在验证前自适应地进行多次起草阶段,通过循环感知训练保持草稿模型可靠性,在 EAGLE-3、DFlash 等方法上实现 5% 到 41% 的墙钟加速且保持无损解码。