Speculative decoding is a technique that uses a cheap drafter to propose the next n tokens while the target model verifies them in one pass. If enough draft tokens are accepted, we save target-model decode steps, improving latency and throughput.

The MTP head predicts one token per step, passing its hidden state forward so each step builds on the last.

Image source: Z.ai GLM 5.2.

Training the drafter with Megatron

During training, one large advantage of multi-token prediction is that the drafter does not need to be a separate model. It can be added as a small prediction layer on top of an existing checkpoint and trained alongside the main objective. In Megatron, this is enabled with --mtp-num-layers 1; the additional layer uses the model’s hidden states to predict future tokens.

MTP training adds an auxiliary loss to the standard language-modeling loss.

Training is straightforward for many open source models: add the MTP loss to the standard language-modeling loss with a relatively small weight. This lets the auxiliary layer learn the target model’s generation patterns without materially changing the behavior of the base model. Because the target model verifies every speculative token at inference time, the goal is not for the MTP layer to be independently correct. It only needs to make proposals the main model is likely to accept.

This also makes MTP practical for post-training. It can be introduced during fine-tuning or in a short continuation run, rather than requiring a new pre-training pipeline.

Inference

Speculative decoding is not a silver bullet. Because we need verification work done by the target model (essentially a pre-fill), at a certain batch size, the verification can provide more overhead than just decoding from the target model. We ran this experiment for ourselves on different workloads:

When does accepted speculative decoding translate into higher throughput and lower latency? When does a large target batch make verification the bottleneck?

The setup

  • A 9B model on one H100, served with vLLM.
  • No MTP: ordinary autoregressive decoding.
  • Main concurrency sweep: three proposed draft tokens per step from the checkpoint’s MTP head.
  • MTP-depth sweep: 1, 2, 4, 8, and 16 proposed tokens at fixed concurrency 32.
  • Concurrency: 1, 10, 24, 32, 40, 64, 80, 128, and 256.
  • Three task shapes: text regions (text), form regions (key-value), and tables. All three use image inputs and require OCR output.
  • Each workload ran independently for a fixed 120-second measurement window.
  • Acceptance uses vLLM’s cumulative process counters, snapshotted before and after each workload.
  • Every reported workload completed with zero request errors.

Baseline: no MTP

The no-MTP run tells us what batching alone can do. Throughput and request latency rise strongly with concurrency.

No-MTP baseline across three image-backed workloads.

MTP improves over the baseline up to a certain batch size

MTP n=3 versus no-MTP across concurrencies: throughput and latency gains hold at low load but fade as verification dominates near c=64–256.

With three MTP steps, accepted draft tokens let the model advance several output positions per target-model verification instead of one. MTP depth is fixed at three, so acceptance stays roughly constant as concurrency changes. What changes is the cost of target verification as the batch grows: at low and moderate concurrency, verification is still cheap enough that those skipped sequential decode steps translate directly into higher throughput and lower latency, especially for the longer key-value and table outputs.

The story is different at higher concurrencies:

MTP throughput and latency improvement versus the no-MTP baseline across text, key-value, and table workloads.

However, text recovers at very high concurrency, where its short-output shape can still exploit the larger batch: MTP does not have one concurrency threshold. Its benefits depend on request shape, output length, and how efficiently the target model verifies the resulting batch.

Why not propose more tokens?

Acceptance is what turns speculative work into speed: every accepted draft token removes a sequential target-model decode step. But tokens farther into the future are harder to predict. The useful quantity is therefore not how many tokens we propose, but how many output positions each target verification actually advances.

At concurrency 32, one- and two-token drafts are accepted almost entirely and advance about 2.0 and 2.9 tokens per verification pass, respectively. Four-token drafts advance roughly 3.2–4.0 tokens. Beyond that, the accepted span stops growing: 8- and 16-token drafts still advance only about 3.1–4.4 tokens, while draft-token acceptance falls to 27–42% and then 13–20%.

Those extra speculative positions add drafting and verification work without removing more target decode steps. That is why deeper MTP eventually reverses the gain. From one to 16 steps, table throughput falls from 2,486 to 607 tok/s while mean latency rises from 9.1 to 35.3 seconds; key-value throughput falls from 1,541 to 414 tok/s while latency rises from 3.8 to 12.8 seconds.

Throughput, mean request latency, and draft-token acceptance as MTP depth increases at fixed concurrency 32. The 9B model ran on one H100 in independent 120-second workload windows; all measurements completed with zero request errors and the profiler was disabled.

The bottom line: generation versus drafting latency

We enabled vLLM’s named profiler scopes to separate target forward/verification from MTP drafting.

Target forward and verification time versus drafting time at concurrency 64, 128, and 256.

From concurrency 128 to 256, drafting time rises 42%, from 62ms to 88ms. Target forward/verification rises almost , from 427ms to 1,272ms. Therefore, the limitation at high concurrency is the high verification cost on the larger target batch.1

Takeaway

MTP wins when accepted draft tokens remove more sequential decode work than drafting and batched verification add:

  • Speculation depth determines the useful accepted span. At concurrency 32, that span grows to only about 3–4 tokens per verification pass and then plateaus. Deeper proposals are mostly rejected, reducing throughput and increasing latency.
  • Concurrency determines the cost of each verification. With depth fixed at three and acceptance nearly flat, MTP wins at low and moderate concurrency, loses across all workloads around 64–80, and becomes workload-dependent at 128–256.
  • Workload shape determines the operating point. Longer key-value and table outputs gain most while accepted speculation is cheap, but they also degrade most when deeper drafts or larger target batches add unproductive work.
  • Verification is the dominant pressure at high concurrency.

Tune MTP depth around the accepted span first, then compare MTP with ordinary decoding at the serving concurrency you expect. Acceptance is the mechanism; throughput and latency are the outcomes.

Engineering by Jean Ghislain Billa and the Reducto ML team. Edited by Palak Agarwal.

If these types of problems excite you, apply to join our team.

Footnotes

  1. Profiler ranges report attributed CUDA time rather than per-request wall-clock latency. CUDA work can overlap, so these totals are a directional phase decomposition, not a strict additive latency breakdown.