AI engineering and inferenceLoading progress…

Expected progress

Trace draft-and-verify decoding, explain distribution-preserving acceptance, and calculate a simplified speedup.

How many tokens per verification?

Suppose each drafted token is accepted independently with the same probability a (a simplification for teaching). A verification of k drafted tokens then yields the accepted ones plus one token that the target supplies itself, for an expected 1 + a + a² + … + a^k = (1 − a^(k+1)) / (1 − a) tokens. With a = 1 and k = 4 that is 5. With a = 0.8 it is 3.3616.

acceptance rate a0.8drafted tokens k4
acceptedprobability
00.2
10.16
20.128
30.1024
4 (all)0.4096
expected tokens per verification = 1 + a + … + a^k = 3.3616 (accepted tokens + the one extra token the target always supplies) This assumes each token is accepted independently with the same probability: a teaching approximation.
Change a and k. The table is the probability of each number of accepted drafts.

Predict first. With acceptance one and four proposals, what is the ideal produced-token count?

Chapter context

A cheap draft proposes several tokens and a target model verifies them with parallel work. The opportunity comes from amortizing an expensive target step, but drafting, verification and rejection recovery all cost time.

Chapter reference: math, worked example & code

This section belongs to the whole chapter, so it is the same on every lesson in it and may cover a different lesson's topic. The code for the experiment you just ran is inside the experiment itself.

Math and notation

Under constant independent acceptance a and k draft proposals:

E[N]=∑i=0kai=1−ak+11−a(a≠1).E[N]=\sum_{i=0}^{k}a^i=\frac{1-a^{k+1}}{1-a}\quad(a\ne1).

At a=1 the sum is k+1. A simple speed estimate is E[N]/(tverify+ktdraft)E[N]/(t_{verify}+k t_{draft}). Exact samplers use conditional probabilities; this constant-a model is not their full correctness proof.

Worked example

For a=0.8,k=4, expected produced tokens are 1+0.8+0.64+0.512+0.4096=3.3616. If target-only generation takes 10 ms/token, verification costs 12 ms and four draft steps cost 1 ms each, speculative throughput is 3.3616/0.016=210.1 tokens/s versus 100 tokens/s baseline: an illustrative 2.101× speedup.

Reference code

The following example uses the Python standard library and does not call a remote service.

from math import isclose
a,k=.8,4
expected=sum(a**i for i in range(k+1))
assert isclose(expected,3.3616)
assert isclose(expected/.016,210.1)
assert isclose((expected/.016)/(1/.010),2.101)
assert sum(1**i for i in range(k+1)) == 5

Python examples are provided for study and local execution; this page does not execute Python.

Common mistakes

Expected accepted draft tokens alone omit the final target token in this model. a=1 needs the finite-sum limit. A correctness-preserving acceptance rule is more than an agreement heuristic.