Back to blogDeutsche Version
AI Automation

Speculative Decoding: Find the Draft-Model Break-Even Point

Acceptance rate alone cannot justify a draft model. Compare drafting and verification overhead with committed-token savings under real serving load.

9 min readUpdated
Precision token-verification machine with brass candidate billets, cyan inspection gantry and red reject interlock. Text: LLM INFERENCE — WHEN DOES THE DRAFT PAY OFF?

BLUF — a draft model earns its place in a production inference service only when drafting plus verification costs less than generating the same committed tokens directly, at the load your service actually receives. Acceptance rate alone cannot establish that break-even point. Compare a no-speculation baseline with candidate draft models at identical target-model settings, measure committed tokens per verification cycle, and require lower cost per accepted, SLO-compliant response without sacrificing capacity or quality.

This article provides an accounting model and a reproducible experiment design, not a measured GPU speedup. The buyer decision is whether to operate an additional inference-time proposer. It is different from replacing a large model with a smaller student through knowledge distillation: the target model still participates in every speculative verification cycle.

What the target verifies

Ordinary autoregressive decoding produces the next token and repeats. In speculative decoding, a cheaper proposer generates several candidate tokens. The target evaluates the proposed continuation in a parallel verification pass. A correct sampler commits an accepted prefix, handles the first rejection with the appropriate correction, discards the remaining speculative suffix and continues from the committed sequence. When all candidates are accepted, the standard algorithm can commit an additional target-sampled token.

The original speculative decoding paper derives distribution-preserving rejection sampling. For sampling, validation is not simply “keep whatever equals the target’s argmax”. It depends on the target and proposal probabilities; at rejection the residual distribution supplies the replacement. For greedy decoding, matching the target’s greedy continuation is a different, simpler case. Do not implement a custom accept/reject loop from a conceptual diagram and assume it preserves sampling semantics.

Conceptual speculative token sequence: propose A B C D, accept A B, reject C and discard D, commit A B and correction X before the next draft.

Read the diagram as a conceptual sequence: the proposer suggests A, B, C and D; verification accepts A and B, rejects C and discards D; the sampler emits replacement X and the next draft starts after A, B, X. Letters are illustrative token labels, not model output or a claim that X is always the target argmax. The target distribution is conditioned on each relevant prefix. At end-of-sequence or an output cap, stop rather than requiring a bonus token.

Lossless is an algorithmic statement, not a production shortcut

The vLLM speculative decoding documentation distinguishes theoretical distribution preservation, rejection-sampler and greedy-equality tests, and numerical instability. Floating-point operations and changed batch shapes can produce different outputs. The same random seed does not make distributional equivalence a promise of byte-identical answers across configurations.

Keep the target revision, tokenizer, chat template, precision, sampling parameters, logits processing and stopping rules fixed. Verify support for structured output, adapters, parallelism and your model family in the pinned engine release. A feature documented for one method is not blanket support for every proposer. Never use synthetic acceptance settings as evidence of real workload performance: those can model a hypothetical acceptance pattern, not measure your draft model’s agreement.

The current documentation is a moving reference. Record the installed version and container digest alongside the exact configuration. The Transformers generation-strategy guide for v4.57.1 documents assisted generation, prompt lookup, self-speculation and tokenizer conversion, with restrictions specific to that version. It is useful for distinguishing methods, not evidence that those restrictions or APIs apply unchanged to a newer Transformers or vLLM release.

A break-even worksheet that exposes the missing cost

For one homogeneous workload segment, let T be the measured baseline decode time per committed output token. Let D(k) be draft time for a proposal of length k, V(k) target verification time, H(k) additional scheduling, sampling and state-management overhead, and M(k) the expected number of newly committed tokens per cycle. A screening estimate is speculative time per committed token = [D(k) + V(k) + H(k)] / M(k). The candidate crosses this local decode break-even when D(k) + V(k) + H(k) < M(k) × T.

Use non-overlapping critical-path time attribution. If the implementation overlaps drafting, verification or scheduling, measure the cycle’s elapsed critical-path time rather than adding overlapping profiler spans. This worksheet is a single-segment screening model; it does not predict queueing latency or fleet throughput under continuous batching. Use ratios of total elapsed cycle time to total committed tokens, not an unweighted average of per-cycle ratios.

Under the paper’s simplifying independent, constant per-position acceptance assumption α, with k draft tokens and an available correction or bonus token, M(k) = 1 + α + α² + … + αᵏ. This expression counts survival of successive prefix positions. An overall accepted/proposed token ratio is not automatically an estimate of α under variable draft lengths or changing contexts. In production, record accepted-prefix lengths and committed tokens per cycle directly. EOS, caps, adaptive depth and different algorithms change the accounting.

Illustrative arithmetic only: T = 10 ms, k = 4 and α = 0.7 give M = 2.7731 tokens. If D = 4 ms, V = 12 ms and H = 2 ms, the estimated decode time is 18 / 2.7731 = 6.49 ms per committed token. Increasing draft time to 16 ms instead gives 30 / 2.7731 = 10.82 ms: the same acceptance assumption now loses to the baseline. These inputs are invented for the worksheet, not benchmark observations, a vendor quote or a deployment forecast.

Latency break-even is not financial break-even. For reserved GPUs, the bill may remain unchanged until capacity is removed or avoided. Compute whole-service cost per accepted, SLO-compliant response over the same interval, including draft resources, idle capacity, retries, rejected requests, warm-up and operational maintenance. Include failed work in the cost numerator, not the useful-response denominator. Do not add a separate GPU penalty if it is already included in fleet cost.

Benchmark grid: the baseline is a first-class candidate

Freeze a redacted arrival trace and segment by input length, actual output length, language, task and sampling policy. Hold hardware and the target deployment constant for the initial comparison; if a proposer requires more hardware, label that as a separate resource configuration and include its cost. Fix prefix-cache settings and cache warm-up separately so a change in prefill does not masquerade as better decode. The prefix-caching economics worksheet explains that separate decision.

Run cellConfigurationCaptureQuestion exposed
BaselineSpeculation off; same target and tracePhase latency, memory, useful responses/s, cost/responseWhat must a proposer beat?
Short draftCompatible small draft; short proposalCycle time, committed tokens, acceptance by positionDoes low drafting overhead repay verification?
Longer draftSame draft; greater proposal depthSame metrics plus discarded suffix workDo extra candidates survive long enough?
Alternative draftDifferent compatible proposer; same depthDraft time, memory and per-task acceptanceIs better agreement worth its resource cost?
Peak-load replayRepeat all candidates at peak offered rateQueue time, p95/p99 latency, errors and goodputDoes the latency gain survive contention?
Restart and fallbackCold process, then baseline restorationReadiness time, memory peaks and lost workCan operations reverse the change safely?

This is an unfilled measurement grid. Do not enter predicted speedups into its result cells. Sweep representative low, normal and peak offered request rates; keep arrival timing independent of completion so a slowing server does not silently reduce the offered load. Bound admission and record cancellations and timeouts. Repeat runs in a varied order and report variability as well as means. Separate cold model loading from a warmed serving experiment.

For every cell, collect TTFT, request-normalised decode time, user-visible streaming gaps, end-to-end latency, output throughput, peak device memory, available KV capacity and preemption where exposed. A speculative server can emit tokens in bursts: near-zero gaps inside a burst can flatter token-level averages while the user still waits between bursts. Inspect p95/p99 gaps and per-request completion rather than treating one average inter-token latency as the whole experience.

Inspect the installed metrics schema before naming counters. Record each numerator and denominator: accepted draft tokens / proposed tokens, accepted-prefix distribution, committed tokens / cycle and SLO-compliant successful responses / interval. Keep aggregate labels low-cardinality; never put prompts or customer identities into telemetry labels. The self-hosted inference SLO framework supplies the service-level denominator and phase instrumentation.

Decision table: retain, tune or disable

Observed resultDecisionRisk to test before approval
Decode improves; goodput and quality meet floorsCanary the measured configurationTraffic drift can move break-even
Acceptance rises but cost/response worsensPrefer cheaper draft or baselineLarger proposer consumes memory and time
Low-load gain; peak-load queueing regressionLimit rollout to proven load rangeThreshold oscillation and route capacity
High rejection in one language or taskKeep baseline for that cohortAggregate acceptance hides segment loss
TTFT dominates with short outputsPrioritise prefill or queue bottleneckFaster decode may barely affect response time
Unsupported feature or unverified sampler semanticsDo not enable that combinationSilent incompatibility can invalidate outputs

A load-aware policy needs hysteresis, a minimum observation window and a tested configuration transition. Do not assume an engine can toggle an arbitrary draft model per request or free its memory immediately. If the installed engine supports only startup-time selection, use separately provisioned routes or roll back the deployment; account for their capacity cost. A simple baseline can be the better operational design even when a complex policy wins one lab cell.

Release checklist and rollback contract

Before the experiment: pin target and draft revisions, tokenizer compatibility, engine image, hardware, parallelism, sampler and stopping rules. Inspect the exact method’s support matrix. Approve data handling for the benchmark and store configuration provenance without retaining confidential prompts unnecessarily.

Before the canary: require an identical quality contract, protected task/language floors, error budget and cost boundary for baseline and candidate. Compare greedy outputs where appropriate; for sampling, test the implementation’s correctness and evaluate representative quality without demanding identical samples. Reject a lower-cost result caused by shorter, truncated or malformed answers.

Before promotion: test peak arrivals, restart, cancellation and long contexts. Reserve rollback headroom; removing a proposer may increase target decode work, while loading one may temporarily increase memory use. Keep the previous image and configuration deployable. Roll back when a protected quality floor fails, p95/p99 latency exceeds its agreed budget, failures rise or cost per useful response no longer justifies the additional service complexity.

Turn speculation into a capacity decision

Bring one target endpoint, a redacted traffic profile and the existing SLO/cost boundary to an inference architecture review. I can help define the candidate sweep, measurement contract and reversible rollout. The useful deliverable is a tested decision about draft overhead versus committed-token savings—not an acceptance-rate screenshot. If no candidate clears the service-level gates, keep speculation disabled and optimise the bottleneck the baseline actually reveals.

#enterprise-ai#ai-evaluation

Building AI into your operations?

I help teams design and ship compliant AI automation — production agents with n8n and LangGraph, RAG systems, and the evals to keep them reliable.

A

Written by

Ade Christanto

AI Automation Specialist and former network engineer focused on practical AI implementation for German B2B and Mittelstand companies.