TreeSpark: Calibrated, Load-Adaptive Draft Trees for Semi-Autoregressive Speculative Decoding
Organizations: Boson AI · University of Washington · McGill University
Abstract
Speculative decoding accelerates language-model inference by letting a cheap drafter propose tokens that the target model verifies in parallel. Recent block drafters make drafting nearly free: a single backbone pass emits an entire block of draft tokens. Draft trees promise a further gain -- several alternative continuations verified in one target forward -- but existing constructions rank candidates by per-position marginals that ignore which parent a candidate extends, so on semi-autoregressive drafters wider trees mostly add mis-ranked nodes; and a tree of fixed size ignores how much speculation each decoding round, and each serving load, can support. We introduce TreeSpark, which reads a parent-conditioned distribution from the drafter's existing Markov head at negligible cost, calibrates it into an edge-acceptance estimate, and lets path survival govern everything else: best-first expansion, per-round stopping, and a load-adaptive serving policy. Sampling siblings without replacement, with matching residuals in recursive rejection, keeps decoding lossless at any temperature. Adaptive trees improve on matched fixed budgets at every temperature; against a tuned chain on the same drafter, TreeSpark accepts 15-25% more draft tokens per round and decodes 8-14% faster in single-request wall-clock, and under rising load it gracefully shrinks the tree back to the chain. Code and artifacts: https://github.com/PopSoda2002/TreeSpark
Figures & tables
| : (5/5) | : (3/3) | : – (7/8) | |
| : (4/4) | chain (parity) | chain (parity) |
| Target | Method | ||||
|---|---|---|---|---|---|
| Qwen3-4B | DFlash chain | 3.86 | – | – | – |
| DDTree | 4.18 | 4.60 | 4.89 | 5.13 | |
| DSpark chain | 4.39 | – | – | – | |
| TreeSpark | 4.57 | 5.18 | 5.50 | 5.81 | |
| Qwen3-8B | DFlash chain | 3.96 | – | – | – |
| DDTree | 4.25 | 4.66 | 4.98 | 5.19 |
| Target | Config | Verified | AR speedup | Util. | Uncommitted | |
|---|---|---|---|---|---|---|
| Qwen3-4B | chain | 7.00 | 4.961 | 3.124 | 51.23% | 48.77% |
| TreeSpark | 6.96 | 5.179 | 3.198 | 56.92% | 43.08% | |
| TreeSpark | 12.99 | 5.795 | 3.373 | 33.93% | 66.07% | |
| TreeSpark | 23.17 | 6.150 | 3.318 | 20.19% | 79.81% | |
| Qwen3-8B | chain | 7.00 | 5.183 | 3.158 | 53.13% | 46.87% |
| TreeSpark | 7.02 | 5.356 | 3.153 | 58.63% | 41.37% |
| Decoder | AR | AR | AR | |||
|---|---|---|---|---|---|---|
| DSpark chain | 5.07 | 3.30 | 5.13 | 3.14 | 4.97 | 3.06 |
| TreeSpark | 6.34 | 3.75 | 5.92 | 3.38 | 5.72 | 3.38 |
Appendix figures & tables6 assets
Supplementary material from the paper’s appendix.
Appendix
| Config | ||
|---|---|---|
| chain ( ) | 7.0 / 5.13 | 7.0 / 4.97 |
| fixed | 13.6 / 5.87 | 14.0 / 5.59 |
| fixed | 26.4 / 6.20 | 28.0 / 5.92 |
| fixed | 51.1 / 6.52 | 56.0 / 6.28 |
| TreeSpark | 7.1 / 5.36 | 7.5 / 5.08 |
| TreeSpark | 13.2 / 5.93 | 14.6 / 5.73 |
| Acceptance predictor | AUC | ECE |
|---|---|---|
| Full pool (descriptive) | ||
| confidence head (raw) | 0.699 | 0.260 |
| Markov conditional (raw) | 0.883 | 0.131 |
| Held-out odd-indexed prompts | ||
| Platt (all-edge fit) | 0.702 | 0.070 |
| (raw) † | 0.948 | 0.042 |
| Target | AIME25 | LiveCodeBench | Arena-Hard-v2 |
|---|---|---|---|
| Qwen3-4B | 6.398 | 6.005 | 4.337 |
| Qwen3-8B | 6.756 | 6.279 | 4.460 |
| Qwen3-14B | 6.617 | 6.547 | 4.282 |
| bs | no-spec | chain | fixed | adaptive |
|---|---|---|---|---|
| 1 | 31 | 140 | 182 | 176 |
| 4 | 123 | 563 | 745 | 683 |
| 8 | 247 | 1134 | 1034 | 1425 |
| 16 | 495 | 2034 | 1231 | 2153 |
| 32 | 1000 | 2555 | 1312 | 2718 |
| 64 | 1524 | 2798 | 1342 | 2984 |
| Estimator | TV to analytic |
|---|---|
| Direct target sampling (reference) | 0.066 |
| TreeSpark sampled tree (ours) | 0.047 |
| Top- + naive rejection (control) | 0.462 |
Speculative Decoding
Speculative decoding accelerates generation by drafting multiple tokens and verifying them in parallel with a larger target model.
See all 291 papers