Speculative decoding has become the "standard" way to squeeze more speed out of Large Language Models (LLMs) without losing quality. However, even state-of-the-art methods like EAGLE-3 have had a hidden ceiling: they generate draft tokens one by one (autoregressively). If you want five draft tokens, you have to wait for five sequential passes from the drafter model.
P-EAGLE (Parallel-EAGLE) lets you generate all draft tokens in a single forward pass using a parallel-capable drafter head.
By removing the sequential drafting bottleneck, P-EAGLE delivers up to a 1.69x speedup over vanilla EAGLE-3 on real-world workloads using NVIDIA B200 GPUs. For builders, this means you can hit lower latency targets for reasoning and coding models while using the same hardware.
When to use it
- Real-time Coding Assistants: When using models like Qwen3-Coder-30B where latency directly impacts developer flow.
- High-Throughput Reasoning: For long-sequence tasks (like GPT-OSS 120B workflows) where the "drafting overhead" of traditional speculative decoding starts to eat into your gains.
- NVIDIA B200/H100 Deployments: While it works on other cards, the parallel nature of the draft generation thrives on high-compute architectures.
- Using vLLM v0.16.0+: You are already running or can upgrade to the latest vLLM versions that support the Unified Parallel Drafting PR.
Phase 1: Define the Spec and Scaffold
The goal is to move from a standard vLLM setup to one that utilizes a P-EAGLE speculator. You need two components: the Target Model (the big LLM) and the P-EAGLE Drafter (the small specialized head).
Checklist before prompting:
- vLLM Version: Ensure you are on
v0.16.0or higher. - GPU Memory: P-EAGLE requires a bit more memory during inference because it handles $K$ tokens in parallel.
- Model Choice: Identify if a pre-trained head exists. Current options include:
amazon/gpt-oss-20b-p-eagleamazon/gpt-oss-120b-p-eagleamazon/Qwen3-Coder-30B-A3B-Instruct-p-eagle
Phase 2: Implementation via Vibe Coding
Since the integration is now part of the vLLM core, implementation is primarily about configuration. You can prompt your AI coding assistant to help you scaffold a Dockerfile or a Python deployment script.
Prompting your AI Assistant
Use a prompt like this to generate your deployment wrapper:
"I need a Python script to serve an LLM using vLLM with P-EAGLE parallel speculative decoding. Use
openai/gpt-oss-20bas the target model andamazon/gpt-oss-20b-p-eagleas the speculator. Setnum_speculative_tokensto 5 and ensure theparallel_draftingflag is enabled in the speculative config. Include a basic health check and a sample request using the OpenAI-compatible API."
The Implementation Snippet
If you are running via the CLI, the command looks like this:
vllm serve openai/gpt-oss-20b \
--speculative-config '{"method": "eagle3", "model": "amazon/gpt-oss-20b-p-eagle", "num_speculative_tokens": 5, "parallel_drafting": true}'
In your Python code, the configuration is handled via the SpeculativeConfig class:
from vllm import LLM, SamplingParams
# Key configuration for Parallel EAGLE
llm = LLM(
model="openai/gpt-oss-20b",
speculative_model="amazon/gpt-oss-20b-p-eagle",
num_speculative_tokens=5,
use_v2_block_manager=True, # Recommended for modern vLLM features
speculative_config={
"method": "eagle3",
"parallel_drafting": True # This unlocks the 1.6x speedup
}
)
prompts = ["Explain the difference between autoregressive and parallel decoding."]
sampling_params = SamplingParams(temperature=0.7, top_p=0.95, max_tokens=100)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(f"Generated text: {output.outputs[0].text}")
Phase 3: Validate and Ship
You cannot "vibe" your way through performance validation. You must verify that the parallel drafting is actually faster for your specific prompts.
- Baseline Test: Run the model with
--speculative-config '{"parallel_drafting": false}'. - P-EAGLE Test: Run with
--speculative-config '{"parallel_drafting": true}'. - Monitor Tokens Per Second (TPS): Use the vLLM metrics endpoint to compare
vllm:avg_generation_throughput.
Pitfalls and Guardrails
What if I get an "invalid config" error?
Check your vLLM version. Parallel drafting was integrated starting from v0.16.0 (PR #32887). If you are on an older version, the parallel_drafting key will be ignored or cause a crash.
Why is my latency higher than vanilla EAGLE?
Parallel drafting creates a larger batch size for the drafter model because it’s predicting $K$ tokens at once. On older GPUs with lower memory bandwidth, this "parallel overhead" might outweigh the benefits. P-EAGLE is highly optimized for newer architectures like the NVIDIA B200.
Can I use any model as a P-EAGLE drafter?
No. You specifically need a "Parallel-EAGLE" head. Standard EAGLE heads expect to be called one token at a time. If you use a standard head with parallel_drafting: true, your output will likely be gibberish because the model hasn't learned the "mask" tokens used to fill the parallel slots.
How do I handle very long sequences?
P-EAGLE was specifically trained to handle long sequences (up to 10k+ tokens). However, parallel drafting increases memory pressure. If you run out of VRAM, try reducing num_speculative_tokens from 5 down to 3.
What to do next
- Download the weights: Grab the P-EAGLE heads for GPT-OSS or Qwen3-Coder from the Amazon HuggingFace organization.
- Update vLLM: Ensure your environment is running
pip install vllm --upgrade. - Benchmark your specific task: Run a test with
num_speculative_tokensset at 3, 5, and 7 to find the sweet spot for your hardware.

