Writing is one-at-a-time; checking is all-at-once
Here is the asymmetry the whole trick stands on. To generate 6 tokens, the big model must run 6 sequential passes — token 4 can't start until token 3 exists. But to verify 6 already-written tokens ("what would I have said at each position?") it needs exactly one pass, because all positions can be scored in parallel. Run both and compare the clocks.
Simulated big-model pass: 600 ms. Real GPUs have the same shape: a forward pass over 6 positions costs barely more than over 1, because decoding is memory-bound, not compute-bound.
The relay — draft fast, verify in one pass
Top lane: a small draft model (10× faster per token) races ahead and proposes k tokens. Bottom lane: the big model verifies them in one pass — the matching prefix is accepted, the first miss is rejected, and the big model's own token replaces it (gold). Note the guarantee: the final text is exactly what the big model alone would have written.
Simulated costs: big pass 600 ms, draft step 60 ms. The speedup shown is measured from those clocks, not asserted. A round with 0 accepted drafts still yields 1 token (the big model's correction) — that's the built-in safety net.
The quality dial — when does the intern pay for itself?
Three knobs decide everything: how often a draft token matches the big model (quality q), how many tokens are drafted per round (k), and what a draft step costs relative to a big pass (c). Every time you move a slider, this page runs 2,000 fresh simulated rounds and measures the speedup. Find the sweet spot — then find the cliff.
Boilerplate flies, poetry stalls
Draft quality isn't a setting — it's a property of the text itself. In a for-loop, after for (let i = 0; even a tiny model knows what comes next. In free verse, almost nothing is predictable, for the small or the big model alike. Run the same speculative decoder (k=6, draft cost 15%) over both and compare the measured accept rates and wall-clocks.
Each token carries its own "how guessable is this" probability (high for syntax like ; and ), low for creative word choices); acceptance is sampled live on every run — run twice and the numbers wiggle.
The break-even map — where speculation backfires
Put it all on one map: acceptance rate q across the x-axis, speedup up the y-axis, one curve per draft length k. The dashed line at 1.0× is sea level — below it, speculative decoding is actively slower than doing nothing. Move the sliders, then press Simulate to drop 400 Monte-Carlo rounds onto the map and check the theory against measurement.