Literature review · Pluralis · Part III · August 2026

Laps and Bytes

Part II identified four levers for speculative decoding in pipeline-parallel inference. This deep dive takes the two that decide WAN performance: amortize traversals (get more accepted tokens out of every pipeline lap) and shrink the wire (spend fewer bytes per lap). They are the numerator and denominator of one objective — tok/s = L(n) ÷ T_lap(n) — and they trade against each other: bigger verification trees raise acceptance and multiply inter-stage bytes. The literature now contains enough theory and measurement to size that trade quantitatively.

1/(1−α)
hard ceiling on accepted tokens for chain drafts — trees are the only way past it
~21
accepted tokens per pass at 1024-node trees (SpecExec, greedy) vs 8–10 SpecInfer plateau
<50 B
uplink per round for exact distributed verification (DSSD); 0 distribution bytes with shared-RNG races
3–4 bit
inter-stage activations shown viable on the PP channel (TAH-Quant); Petals shipped 8-bit
01

One objective, two levers

For a single decode stream on an N-stage WAN pipeline verifying a speculation tree of n nodes per lap, throughput is

tok/s  =  L(n)  ÷  T_lap(n),     T_lap(n) = Σi [ RTTi + n·sh/BWi ] + compute(n) + T_return

where L(n) is expected accepted tokens for an n-node tree (drafter-dependent, growing ≈ logarithmically in n — Sequoia, Thm 3.6), and sh is the per-node payload crossing each link (≈ d_model × bytes-per-value, plus protocol overhead). Lever 1 raises L(n); lever 4 shrinks sh and T_return. Everything below is evidence about the shape of those two functions. DSD ('25) publishes the same algebra as a communication-reduction ratio — accepting k tokens per round cuts comm latency by (N−1)t₁(k−1)/k, measured ≈37% at 8 nodes — and the split-inference-over-WAN paper measured the constant term: at ~80 ms RTT, RTT is 63–64% of step time and acceptance below ≈1.15–1.20 tokens/pass does not pay at all.

02

Deep dive · Amortize traversals

Chains saturate: the 1/(1−α) ceiling

For a chain drafter with per-token acceptance rate α and draft length K, the classic result (Leviathan et al.) is E[L] = (1−αK+1)/(1−α), which saturates at 1/(1−α) as K grows. An α = 0.8 drafter can never average more than 5 accepted tokens per lap no matter how long it drafts; α = 0.9 caps at 10. Over WAN — where drafting is local and nearly free while each lap costs ~200 ms — the classical cost-ratio optimum pushes K up hard, but the geometric ceiling stands:

Chain drafts saturate fast

E[accepted tokens per verification pass] = (1−α^(K+1)) / (1−α) · dashed lines mark each ceiling 1/(1−α)

0 2 4 6 8 10 1 4 8 12 16 draft length K (chain) E[accepted / pass] ceiling 10.0 α = 0.9 ceiling 5.0 α = 0.8 ceiling 3.3 α = 0.7
Why adaptive draft length only buys ~10%: SpecDec++ (threshold-policy MDP, +7.2–11.1% over best fixed K) and DISCO (per-step stop classifier, +10%) optimize along a curve that is already nearly flat past K ≈ 8. The ceiling itself only moves by improving α (better drafters) — or by abandoning chains for trees.

Two quantitative warnings from the 2025 scaling-law study (arXiv 2505.07858): acceptance length grows only logarithmically in draft capacity — τ ≈ 0.74·log₁₀(draft layers) + 4.61 and τ ≈ 0.08·log₁₀(pretrain tokens) + 5.05 — so each extra accepted token costs roughly an order of magnitude more drafter; and the optimal verification width shrinks ≈ 1/√batch, so amortization budgets belong to low-batch regimes — exactly the single-stream WAN setting.

Trees keep growing: log-in-n, no ceiling

Sequoia proves that with optimal topology the expected accepted length G(n) is unbounded, growing ≈ log n — while naive k-independent-sequence trees asymptote (+33% tokens/step over them at 512 nodes). The measured frontier confirms it. EAGLE-2's dynamic tree is the accepted-per-node efficiency champion (τ ≈ 3.7–5.4 from only 60 nodes: top-10 expansion, depth 6, global rerank), tuned for GPUs where verification FLOPs bind. SpecExec is the accepted-per-lap champion, built for the offloading regime whose cost structure matches WAN — a Dijkstra-style search materializes the top-B cumulative-probability prefixes:

Accepted tokens vs verification budget

SpecExec vs SpecInfer trees, Llama-2 7B draft → 70B target, greedy · from SpecExec (NeurIPS'24), Fig. 3 / Table 2

SpecExec @ 1024~21 SpecExec @ 512~19 SpecExec @ 256~16 SpecExec @ 128~13.5 SpecInfer @ 1024~10 (plateau) SpecInfer @ 128~9
Tree construction is where the amortization headroom lives: the same 1024-node budget yields ~21 accepted tokens with optimal-prefix construction and ~10 with independent sequences. EAGLE-2 (60 nodes → ~5 accepted) sits below both budgets but far above both in accepted-per-node — the right choice when verification compute, not the lap, is the binding cost.

Free acceptance from better verification rules

A second, purely verifier-side family raises L(n) at zero draft cost — all lossless, all stackable on any tree:

RuleSourceIdeaMeasured gain
Block verificationSun et al. '24Verify the whole draft block jointly instead of token-by-token; provably optimal among lossless chain verifiers+5–8% wall-clock, free
Traversal verification'25Leaf-to-root tree verification — accepting a leaf accepts its whole path; gains grow with depth & temperature+2.2–5.7% acceptance
SpecTrICML'24Multi-draft selection as optimal transport; (1−1/e)-optimal in near-linear time1.37× over single-draft SD
Optimal MDSD'25Exact optimal multi-draft acceptance via subset selection; shows RRS leaves 0.9–1.5 pp on the table~+1 pp/position (compounds over depth)
SpecHub'24Sparse-LP relaxation of the OT verifier+0.05–0.27 tok/step vs RRS
UniVer'26Conditional-OT down the tree, unifying multi-step × multi-draft; current best lossless tree verifierτ +7.5–8.5% vs RRS-w/o-replacement
Typical acceptanceMedusa '24Accept if p_target(x) > min(ε, δ·e^(−H)) — the only knob that moves the α-ceiling itself; not losslessgrows with temperature

At a 200 ms lap, a "+5–8%" verifier-side gain is 10–16 ms of WAN time saved per lap, from a code change that touches no model and no network.

PP-specific mechanics: depth rides the pipeline

The pipeline changes tree economics in one important way: tree depth can grow one layer per stage-hop instead of one lap per layer. SpecPipe/PipeDec's schedule generates draft layer ℓ+1 while layer ℓ is in flight, keeps a separate tree-KV per stage so each hop transmits only the newest tree layer (width × d_model, not the whole tree), and migrates accepted tokens' KV into the model cache without recompute. FlowSpec adds in-flight pruning where only index sets travel — dead branches stop consuming downstream bytes. PipeInfer sizes micro-speculations (1–4 tokens) reactively with a confidence cutoff and cancels invalidated runs mid-pipe; Speculative² Decoding pre-builds the next tree during verification so a cache hit hides all draft latency — at WAN lap times there is room to pre-speculate several plausible outcomes. DiP-SD gives the multi-stream version: jointly choose per-stream draft length and batch assignment to maximize E[accepted]/pipeline-span. One caution from SPD: with in-pipeline drafting heads, returns saturate as stage count grows because newly injected tokens carry only shallow features — deep pipelines favor a strong external drafter over in-pipe heads.

03

Deep dive · Shrink the wire

What exactness minimally requires

The accept test itself is nearly free: for γ drafted tokens the verifier needs token ids (~3 B each) plus the scalar draft probability q(x) of each chosen token (2 B) — ~40 bytes at γ = 8. The expensive part is rejection resampling, which needs the full target distribution p and draft distribution q co-located somewhere. Published protocols occupy exactly three exact placements — plus a fourth, information-theoretically optimal one that no system ships yet:

ProtocolUplink / roundDownlinkExact?Measured
Naive distributed SDids + full draft distributions (~61 KB measured, OPT vocab; ~MBs at 128K vocab)full logits ~500 KB≤1× — loses to no speculation (DSSD, PicoSpec: 0.44×)
DSSD (ICML'25)γ ids + γ scalars q(x) → <50 B1 bonus token; full P only on rejection (device resamples the residual locally)✓ lossless1.5–2.4× at 0–50 ms RTT
PicoSpec ('26)ids + scalars <50 Btop-K (K=10) sparse distribution: ~500 KB → <100 B≈ exact w.r.t. the truncated sampler; true residual tail dropped2.90×; partial-arrival verify
Top-K draft uplink (2509.04576, TSLT)K=320 fp16 ≈ 10 KB (vs ~500 KB); ~0.85 mass keptaccepted ids + rejection positionexact w.r.t. truncated Q; acceptance shifts, bias bounded by dropped masscomm share 0.30 → 0.07
Conformal sparsification (NeurIPS'25)adaptive per-token support under a bit budget (~5000 bits)dropped mass ≤ α by online conformal controlbounded rejection-rate inflation (Thm 1)
Shared-RNG exponential races ('25)token ids only — zero distribution bytes either way (shared noise; verifier's own race winner is the corrected token)ids only✓ exactly P-distributed; cost ≈ D_KL[P‖Q] bits/tokenunshipped over any network — open niche (needs cross-hardware float determinism)
Attention-mask rollback (Intel '26)rejected positions masked (attention_mask=0) + logical position_ids instead of KV trimming — no extra round trips, ~48 ms/rejection saved on iGPU✓ bit-exactpart of the 100 ms/hop-viable stack

Activations are the real bytes: compress the residual stream

In steady-state PP decode the dominant traffic is the hidden state crossing each link — d_model values per token per hop (per tree node per hop when verifying trees). The evidence for how low it goes: Petals shipped dynamic blockwise 8-bit in production ("halves bandwidth… no noticeable effect on quality"); TAH-Quant reaches 3–4 bits on the PP channel (tile-wise Hadamard + entropy-guided bit allocation, 4.3× end-to-end — a training paper, but the forward-pass quantizer is directly reusable at inference); the TP analog (arXiv 2411.09510) lands at ≈4.25 effective bits with +1–3% perplexity, with the sensible rule "quantize only where links are slow." BloomBee ('26, arXiv 2604.21072) adds the lossless option: byte-separation coding of activations to 46% of original size (vs 69–71% for ZSTD/ZipNN), bit-exact at ~300 ms compression overhead — chosen precisely because activation outliers make quantization risky, and worth +18.4% throughput alone at 20 Mbps. The split-computing literature (FrankenSplit: learned variational bottleneck + entropy coding, −60% bitrate at no accuracy loss) has never been applied to the LLM residual stream — an open transplant. Two more unclaimed ideas: anchor+delta coding of activations across adjacent decode steps (CacheGen proved 2.4–2.9× lower variance for deltas in KV space), and joint compression of tree batches (siblings share prefixes; nobody compresses them together).

Byte accounting: when does bandwidth start to bind?

Computed for this review (framing ~20 B ignored; per token per hop = d_model × bytes/value). W* is the tree width at which per-hop serialization exceeds a 25 ms hop RTT — i.e., where bandwidth replaces latency as the binding constraint:

ConfigPayload / node / hopt_xfer @ 10 Mbps@ 100 Mbps@ 1 GbpsW* @ 10W* @ 100W* @ 1G
8B (d=4096) fp168 KiB6.6 ms0.66 ms0.07 ms438381
8B int42 KiB1.6 ms0.16 ms0.02 ms151531526
70B (d=8192) fp1616 KiB13.1 ms1.31 ms0.13 ms219191
70B int44 KiB3.3 ms0.33 ms0.03 ms876763

Readings: at ≥100 Mbps with quantized activations, latency dominates all the way to SpecExec-scale trees — width is nearly free. At 10 Mbps, int4 is what buys tree room (8B: W* 4→15); a 70B in fp16 on a 10 Mbps link is bandwidth-bound at width 2, making activation quantization mandatory before any speculation tuning. Protocol metadata (≤50 B) and top-K rejections (≤100 B) are noise everywhere. Real-WAN cross-check: the split-inference paper measured 8 KB/token (7B) and 16 KB (70B) per link, with RTT = 63–64% of step time at 80 ms.

Return path and churn

The return leg needs only accepted ids — and even those compress: range-coding tokens against the drafter's shared model costs ≈ cross-entropy bits (LLMZip: 0.71 bits/char with a 7B prior), the same ≈D_KL bound the exponential-races scheme achieves natively. Intel's shards relay the sampled token hop-by-hop instead of a 16 KB hidden state on the return path. For volunteer churn, KV migration is the one big transfer left: CacheGen's anchor+delta, layer-tiered quantization and arithmetic coding compress KV 3.7–4.3× beyond an 8-bit baseline (~15–17× vs fp16) with per-chunk bandwidth adaptation.

04

Joint sizing: the bandwidth-aware tree

Putting the two levers into the §01 objective yields the design chart. Take an 8-hop pipeline at 25 ms/hop (200 ms lap), an 8B model with int4 activations (2 KiB/node/hop), and a SpecExec-class drafter (L(n) ≈ 3.05·ln n − 1.3, fit to its measured curve). Sweep tree size n at three link speeds:

Effective throughput vs tree size — the optimum is bandwidth-sized

Illustrative model, computed for this review: tok/s = L(n) ÷ [0.2 s + 8·n·2 KiB/BW] · 8 hops × 25 ms · 8B int4 · SpecExec-fit L(n)

0 10 20 30 40 50 60 70 4 8 16 32 64 128 256 512 1024 verification tree size n (nodes, log scale) effective tok/s no speculation: 5 tok/s n*≈256 · 67 tok/s 1 Gbps n*≈64 · 40 tok/s 100 Mbps n*≈16 · 17 tok/s 10 Mbps
Three regimes, one lesson per link speed: at 10 Mbps the optimum is a small tree (n*≈16) and wire compression is worth more than tree growth; at 100 Mbps the two levers contribute equally (n*≈64, ~8× over no speculation); at 1 Gbps the lap is pure latency and mega-trees pay until acceptance flattens (n*≈256, ~13×). This is Sequoia's optimizer with t(n) rebuilt from RTT and bandwidth — a formula nobody has published in full. BloomBee ('26) comes closest: a break-even bandwidth threshold S* for when speculation pays at all, plus a learned MLP pruner that keeps 96% of acceptance on 40% of the tree bytes. The full n*(depth, RTT, BW) policy is still the piece of theory a WAN deployment should write down first. Numbers shift with the drafter's real L(n) curve and acceptance on live traffic; the shape does not.

The same sweep explains Part II's systems: FlowSpec's segment pruning and PipeDec's one-layer-per-hop transmission both exist to keep the effective n·sh term small while letting logical tree size grow — they move the 10 Mbps curve toward the 1 Gbps one without touching the link. BloomBee's learned pruner is the third instance — scoring candidates before transmission, it keeps 96% of acceptance while cutting tree size 60%.

05

Takeaways

Chains cap at 1/(1−α); trees are the only unbounded amortizer. Adaptive draft length buys ~10% on a curve that is already flat; tree construction (SpecExec's optimal prefixes: ~21 accepted at 1024 nodes vs ~10 for independent sequences) is where the WAN headroom lives, and Sequoia proves the log-growth is real, not an artifact.

Verifier rules are free money. Block/traversal verification and OT-based multi-draft rules (SpecTr, UniVer) add 2–10% acceptance losslessly, stack on any tree, and cost only code. Typical acceptance is the sole way to move the α-ceiling itself — at the price of exactness.

Exact verification needs ~50 bytes, not kilobytes. DSSD's placement (ids + scalars up, full distribution down only on rejection, residual resampled locally) is lossless and measured; PicoSpec's top-K downlink and Intel's mask rollback finish the protocol. The unshipped optimum is shared-RNG exponential races: zero distribution bytes, exactly P-distributed, ≈D_KL bits/token.

Activations are the bandwidth story, and 4 bits is the working floor. Petals proved 8-bit in production; TAH-Quant shows 3–4-bit on the same channel. Below ~100 Mbps or above ~8B fp16, quantization is a prerequisite for speculation, not an optimization (70B fp16 @ 10 Mbps is bandwidth-bound at tree width 2).

Size the tree to the link. The joint model gives n* ≈ 16 / 64 / 256 at 10 Mbps / 100 Mbps / 1 Gbps for an 8-hop, 8B, int4 pipeline — 3.5× to 13× over no speculation. Four publishable gaps: the bandwidth-aware Sequoia optimizer (BloomBee's break-even threshold S* is the first step — the full sizing policy is open); exponential races over WAN; a FrankenSplit-style learned bottleneck for the residual stream; joint compression of tree activation batches.