The Speculative Decoding Number Nobody Publishes
Acceptance rate, not architecture, sets your realized speedup — and how often you swap base checkpoints decides which variant you can afford to run.
Acceptance rate decides the speedup
Standard geometric acceptance model, per-token acceptance probability α and draft length γ: expected accepted tokens per target pass is (1−α^(γ+1))/(1−α). At γ=5 that is 4.69 tokens at α=0.9, 3.69 at α=0.8, and 2.38 at α=0.6. Divide by (1+γc), with c the drafter's cost as a fraction of one target pass. At α=0.8 and c=0.1 the result lands near 2.46x, inside the published band. Hold the configuration fixed and drop to α=0.6 and the same math gives 1.59x. That one parameter moves the result by nearly a full multiple, and none of the four variants compared by Daily Dose of Data Science reports it.
The token bookkeeping shows why acceptance dominates. Propose five tokens and accept three: three ship, the target supplies position four, the tail is discarded, and the sequence advances by four per target pass. Accept all five and verification hands back a free bonus token, so the sequence advances by six. A real slice of every headline multiple sits in that bonus, and it pays out only at high acceptance. Acceptance is itself workload-conditional. Low-temperature code generation agrees with a small drafter far more often than high-temperature prose.
Concurrency determines whether this pays at all
Speculative decoding converts idle compute during memory-bandwidth-bound decode steps into extra tokens. Heavy batching already fills the device with useful work, so the gain shrinks as concurrency rises. That makes it a latency play for interactive surfaces (chat, coding assistants, agentic loops) and a poor investment for high-throughput offline batch scoring.
The second-order cost is memory, and it is opportunity cost rather than fixed overhead. The two-model path carries a second weight set plus a separate KV cache, which lowers max batch size and max context length on a fixed GPU. Lose 20% concurrency there and a 2–3x per-request latency win can still be net-negative on cost per token served. Measure both. Keep the drafter inside the same model family: tokenizer and output-behaviour alignment is a hard serving constraint, not a preference.
Refresh cadence picks the variant
| Variant | Reported speedup | Training requirement | What breaks at the next checkpoint swap |
|---|---|---|---|
| Two-model | 2–3x on T5-XXL, identical outputs | None; target untouched | Nothing — it is a serving-config change |
| EAGLE | 2.7–3.5x latency, ~2x throughput on LLaMA2-Chat 70B | Draft module trained per target checkpoint | Draft-module retraining becomes a release blocker |
| Medusa-1 | >2.2x, backbone quality unchanged | Heads only, backbone frozen | Head retraining plus tree-width retuning |
| Medusa-2 | 2.3–3.6x | Joint head and backbone tuning | Retraining plus quality-regression risk |
| LayerSkip | 2.16x summarisation, 2.0x TOPv2, 1.82x coding | Layer dropout and early-exit loss during training | Not retrofittable — forecloses on third-party checkpoints |
The last column is the actual decision. On a quarterly base-model refresh, EAGLE's latency win costs a retraining pass on every checkpoint swap, and keeping two-model as a maintained fallback means a swap never waits on a retraining pipeline. LayerSkip is cheapest at serve time and most expensive at decision time, because the training run has to have already happened.
Distribution preservation makes the gate exact
The original algorithm is distribution-preserving: draft tokens never reach output unverified, and the accepted stream provably matches the target model's output distribution. There is no quality tax, categorically unlike quantization or distillation. So the gate can be exact rather than statistical: byte-identical output on greedy decoding, plus token-level agreement or KL divergence on the sampling path, wired into CI. None of this substitutes for KV caching, PagedAttention or FlashAttention. Speculative decoding cuts the number of target passes; the cache prevents recomputing accepted context. Ablate one lever at a time or the drafter gets credit for cache wins.
A published speedup multiple was measured at someone else's batch size. Instrument accepted tokens per target-model pass at your own production batch sizes.
What to do
Instrument per-request acceptance rate and mean accepted tokens per target-model pass in the serving path this sprint, segmented by task, temperature and batch size, before evaluating any variant.
Sweep batch size (1, 4, 16, 64) and draft length (2, 4, 6, 8) on your top interactive endpoint this sprint and publish the crossover where net speedup falls below 15%.
Price draft-module or head retraining as a recurring per-checkpoint cost this quarter before approving any EAGLE or Medusa evaluation.