Skip to content
Tech News
← Back to articles

Speculative Decoding in vLLM on AMD GPUs

read original get AMD Radeon RX 7900 XTX Graphics Card → more articles
Why This Matters

Speculative decoding is one of the main levers for cutting LLM serving costs, and this post documents how it behaves in vLLM on AMD Instinct MI300X and MI355X hardware under ROCm. That matters because most published inference-optimization results come from Nvidia-based stacks, and the benchmarks show gains are far from automatic — throughput varied by drafting method, proposal length, model family, and workload.

Key Takeaways
Worth a Look

AMD Radeon RX 7900 XTX Graphics Card — If you want to experiment with vLLM and speculative decoding on AMD hardware yourself, the Radeon RX 7900 XTX is the flagship consumer RDNA 3 card and a popular choice for local LLM tinkering with ROCm. Its large VRAM pool makes it practical to hold both a target model and a small draft model at once, exactly the setup the article's draft-and-verify experiments rely on.

See AMD Radeon RX 7900 XTX Graphics Card on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

TL;DR: Speculative decoding allows vLLM to verify multiple drafted tokens in a single target-model pass. In our experiments, its effect on output-token throughput varied across drafting methods and proposal lengths, and also depended on the model family, draft checkpoint, workload, and acceptance behavior.

Introduction

Large language models support a wide range of applications, but serving them at scale requires careful optimization. Standard autoregressive decoding is the baseline used by most LLM serving systems: the model generates one token, appends it to the sequence, and then uses the updated sequence to generate the next token. This process is simple and reliable, but the serving loop still advances one committed token at a time because output tokens must be produced in strict left-to-right order.

Speculative decoding [1] builds on this baseline through a draft-and-verify mechanism. A lightweight draft component proposes candidate future tokens, and the target model verifies those candidates before they are committed. When several draft tokens are accepted, the system can commit multiple output tokens from a single target-model verification step while preserving the target model's output behavior.

This post explores how speculative decoding works in vLLM and shares measurements from our test environment. We first review the autoregressive decoding baseline and the draft-and-verify process. We then examine five speculative-drafting approaches: native MTP, Gemma 4 MTP, EAGLE-3, DFlash, and DSpark. These methods differ in how the draft component receives information from the target model and whether candidate tokens are generated sequentially, autoregressively, in parallel, or through a hybrid approach. Finally, we show how to enable the methods tested in our environment, report measurements from our experiments on AMD Instinct™ MI300X and MI355X GPUs using the ROCm™ open software platform, and discuss practical tuning and observability considerations.

The autoregressive decoding baseline

In standard autoregressive decoding, each decode step produces and commits one new token. For example, generating four output tokens requires four sequential decode steps:

Step 1: context → model → T1 Step 2: context + T1 → model → T2 Step 3: context + T1 T2 → model → T3 Step 4: context + T1 T2 T3 → model → T4

After each step, the generated token is appended to the sequence and becomes part of the input for the next step. This makes the decoding loop straightforward, but it also requires one model decode step for every output token. During long generations, this token-by-token loop can dominate latency and limit serving throughput.

The key question behind speculative decoding is therefore:

... continue reading