AI engineering and inferenceLoading progress…

Radix trees

Identify reusable prompt prefixes, calculate saved prefill work and distinguish token savings from hit rates.

Radix trees

A different way to find the longest shared prefix is a tree in which each path from the root spells a cached sequence, so shared beginnings are stored once. A radix tree additionally merges chains of single-child nodes into one edge, which keeps it small. Lookup walks down the tree as far as the new prompt matches.

└ 1
  └ 2
    └ 3
      └ 4
      └ 5
    └ 6
nodes (one per token, shared tokens stored once): 6 radix edges (single-child chains merged): 5 the new prompt reuses its first 3 token(s)

The tree is an index: it finds the longest shared prefix fast. Which entries to keep or evict is a separate policy; a safe evictable entry is a leaf, because removing an inner node would cut off the sequences below it.

Edit the cached sequences and the query. Count the nodes and radix edges.

Predict first. Does a tree lookup itself decide which GPU block to evict?

Chapter context

Prefix caching reuses compatible KV state for a repeated beginning of a prompt. A repeated suffix alone is not enough, because causal hidden states depend on the preceding context.

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

A simple saved-token estimate is

S=H P,S=H\,P,

where H is the number of hits reusing P prefix tokens. If all R requests contain P prefix and U unique tokens, the baseline prompt work is R(P+U)R(P+U) and the nominal fraction saved is HP/[R(P+U)]HP/[R(P+U)]. This models token work, not directly wall-clock speed.

Worked example

One hundred requests each contain a 500-token common prefix and a 300-token unique suffix. Eighty hits reuse the entire prefix. Saved prefill tokens are 80×500=40,000 out of 100×800=80,000 baseline tokens: 50% token work saved despite an 80% request hit rate. Cache lookup and new-output generation still take work.

Reference code

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

requests,hits,prefix,unique=100,80,500,300
saved=hits*prefix
baseline=requests*(prefix+unique)
assert saved == 40000 and baseline == 80000
assert saved/baseline == .5
assert hits/requests == .8

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

Common mistakes

Textual similarity is not cache identity. A common suffix is not a common causal prefix. Hit rates need definitions and do not directly translate into end-to-end speedups.