Goose: Anisotropic Speculation Trees for Training-Free Speculative Decoding
Organizations: Japan Advanced Institute of Science and Technology (JAIST)
Abstract
Speculative decoding accelerates large language model inference by drafting multiple candidate tokens and verifying them in a single forward pass. Candidates are organized as a tree: deeper trees accept more tokens per step, but adding depth requires sacrificing breadth (fallback options) under a fixed verification budget. Existing training-free methods draft from a single token source and shape their trees without distinguishing candidate quality across origins. We observe that two common training-free token sources -- n-gram matches copied from the input context, and statistical predictions from prior forward passes -- differ sharply in acceptance rate (~6x median gap, range 2-18x across five models and five benchmarks). We prove that when such a quality gap exists, the optimal tree is anisotropic (asymmetric): reliable tokens should form a deep chain while unreliable tokens spread as wide branches, raising the depth ceiling of balanced trees. We realize this structure in GOOSE, a training-free framework that builds an adaptive spine tree: a deep chain of high-acceptance context-matched tokens with wide branches of low-acceptance alternatives at each node. The resulting tree provably accepts at least as many tokens per step as either source alone. On five LLMs (7B-33B) and five benchmarks, GOOSE achieves 1.9-4.3x lossless speedup, outperforming balanced-tree baselines by 12-33% under the same budget.
Figures & tables
Appendix figures & tables15 assets
Supplementary material from the paper’s appendix.
Appendix
| ClassEval | GSM8K | HumanEval | MBPP | MT-Bench | Avg. | |||||||
| Model | Method | Spd | Spd | Spd | Spd | Spd | Spd | |||||
| Vicuna-7B | AR | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| PLD | 2.34 | 2.50 | 1.43 | 1.46 | 1.74 | 1.78 | 1.59 | 1.62 | 1.47 | 1.48 | 1.71 | |
| TR | 2.58 | 3.29 | 2.46 | 2.96 | 2.53 | 3.06 | 2.41 | 2.86 | 2.19 | 2.60 | 2.43 | |
| Lookahead | 2.27 | 2.41 | 1.63 | 1.67 | 1.72 | 1.77 | 1.75 | 1.78 | 1.58 | 1.60 | 1.79 | |
| REST | 1.68 | 1.73 | 1.17 | 1.19 | 1.16 | 1.17 | 1.05 | 1.05 | 1.08 | 1.08 | 1.23 | |
| Benchmark | Domain | Samples | Max tokens |
|---|---|---|---|
| HumanEval | Code | 164 | 512 |
| MBPP | Code | 500 | 512 |
| ClassEval | Code | 100 | 512 |
| GSM8K | Math | 1,319 | 1,024 |
| MT-Bench | Dialogue | 80 | 1,024 |
| Goose | EAGLE-3 | |||
|---|---|---|---|---|
| Dataset | tok/s | tok/s | ||
| HumanEval | 2.59 | 66.6 | 5.79 | 109.0 |
| ClassEval | 5.35 | 131.3 | 5.34 | 94.5 |
| MT-Bench | 2.22 | 57.0 | 5.36 | 102.0 |
| MBPP | 2.36 | 61.4 | 5.69 | 108.7 |
| GSM8K | 2.76 | 70.3 | 5.69 | 107.8 |
| Goose | EAGLE-2 | EAGLE-3 | ||||
|---|---|---|---|---|---|---|
| Dataset | tok/s | tok/s | tok/s | |||
| HumanEval | 4.50 | 114.8 | 4.14 | 62.2 | 3.29 | 62.6 |
| ClassEval | 5.54 | 133.4 | 4.11 | 58.9 | 4.18 | 74.8 |
| MT-Bench | 3.63 | 90.7 | 3.51 | 52.2 | 3.87 | 72.6 |
| MBPP | 3.51 | 91.0 | 4.19 | 63.6 | 3.55 | 68.5 |
| GSM8K | 8.90 | 221.7 | 4.28 | 63.6 | 4.62 | 86.2 |
| Model | ClassEval | MT-Bench | HumanEval | GSM8K | MBPP |
|---|---|---|---|---|---|
| Qwen3-8B | 70.8 | 53.3 | 33.0 | 48.3 | 38.3 |
| Llama-3-8B | 62.1 | 53.5 | 53.4 | 83.8 | 45.2 |
| Llama-3.2-1B | 61.4 | 35.1 | 60.7 | 37.9 | 36.7 |
| TinyLlama-1.1B | 66.1 | 84.5 | 33.2 | 59.8 | 33.4 |
| : PLD Suffix spine | HumanEval | MBPP | GSM8K | MT-Bench | ClassEval |
|---|---|---|---|---|---|
| Llama-3.1-8B (full ) | 4.21 4.80 | 3.30 3.63 | 6.28 9.26 | 3.22 3.91 | 5.00 5.89 |
| Llama-3.2-1B ( ) | 3.75 4.33 | 3.04 3.27 | 3.38 3.60 | 2.55 2.63 | 4.29 5.00 |
| TinyLlama-1.1B ( ) | 2.84 3.08 | 2.88 3.09 | 4.56 5.41 | 6.19 8.92 | 5.03 5.74 |
| GPU / task | Method | bs=1 | bs=4 | bs=8 | bs=16 | bs=32 |
|---|---|---|---|---|---|---|
| A40, HumanEval | Goose | 59.0 | 129.8 | 141.5 | 149.4 | 143.0 |
| AR | 31.0 | 96.5 | 168.2 | 265.0 | 366.1 | |
| A40, GSM8K | Goose | 62.4 | 138.5 | 155.7 | 168.7 | 156.4 |
| AR | 31.1 | 79.0 | 142.1 | 244.9 | 382.2 | |
| RTX 3090, HumanEval | Goose | 73.6 | 132.0 | 131.1 | 124.1 | — |
| AR | 42.4 | 136.1 | 228.3 | 339.0 | — |
| HumanEval | MBPP | MT-Bench | ClassEval | GSM8K ∗ | |
|---|---|---|---|---|---|
| Goose | 4.50 / 114.8 | 3.51 / 91.0 | 3.63 / 90.7 | 5.54 / 133.4 | 8.90 / 221.7 |
| SuffixDecoding (tree) | 2.98/86.6 | 2.14/63.5 | 2.33/68.0 | 3.97/108.9 | 5.59/162.0 |
| Model | Dataset | Goose | Suf. (cold) | Suf. (warm) | Merged (warm) |
|---|---|---|---|---|---|
| Llama-3-8B | ClassEval | 4.92 | 3.53 | 3.66 | 3.55 |
| GSM8K | 5.90 | 3.38 | 3.79 | 3.68 | |
| HumanEval | 4.13 | 2.76 | 2.94 | 2.88 | |
| MBPP | 3.58 | 2.25 | 2.54 | 2.54 | |
| MT-Bench | 2.71 | 1.63 | 1.73 | 1.71 | |
| Llama-3.1-8B | ClassEval | 5.50 | 3.97 | 4.06 | 4.05 |
| Goose | Sequoia (official) | ||||
|---|---|---|---|---|---|
| Dataset | tok/s | tok/s | Sequoia paper | ||
| C4 | 4.16 | 116.9 | 4.79 | 107.8 | 5.08 |
| CNN/DM | 3.04 | 86.6 | 3.91 | 91.1 | 4.05 |
| OpenWebText | 3.28 | 93.4 | 3.95 | 91.9 | 3.86 |
| Target | Dataset | Spd | Spd | ||
|---|---|---|---|---|---|
| Llama-3-8B | ClassEval | 8.63 | 1.52 | 8.95 | 1.52 |
| GSM8K | 8.89 | 1.56 | 9.12 | 1.54 | |
| HumanEval | 8.56 | 1.53 | 8.88 | 1.51 | |
| MBPP | 8.42 | 1.48 | 8.75 | 1.48 | |
| MT-Bench | 7.57 | 1.36 | 8.00 | 1.38 | |
| Model | Dataset | Heuristic | Allocator | Allocator (inst.) |
|---|---|---|---|---|
| Llama-3-8B | ClassEval | 4.80 | 5.39 | 5.24 |
| GSM8K | 8.84 | 7.48 | 7.25 | |
| HumanEval | 4.03 | 4.47 | 4.50 | |
| MBPP | 3.58 | 3.92 | 3.98 | |
| MT-Bench | 3.41 | 3.56 | 3.47 | |
| Llama-3.1-8B | ClassEval | 5.46 | 5.95 | 5.81 |
Speculative Decoding
Speculative decoding accelerates generation by drafting multiple tokens and verifying them in parallel with a larger target model.
See all 309 papers