
Co-founder of EAGLE AI @EagleCorp. Professor in CS @UWaterloo @VectorInst. CMU ML PhD @SCSatCMU. @PKU1898 Alumni.
Waterloo, Canada
Joined May 2018
- Tweets397
- Following274
- Followers3.8K
- Likes1.1K
Replying to @EagleCorp
On @NVIDIA’s Nemotron 3.5 Super VL:
Single request: 647 vs 236 tokens/s, 2.74× vanilla.
At 512 concurrent requests: 33,480 vs 19,823 aggregate tokens/s, 1.69× vanilla.
SPEED-Bench qualitative, 4× B300, TP4, T=0.
I'm excited to share a paper I worked on with @chiatzen_w
Lossy speculative decoding methods are usually judged by how many draft tokens get accepted per round, so we wanted to see if that actually makes decoding faster. We tested 5 methods across 12 model pairs and found that they accept 1.34× more tokens per round, but the outputs also get 1.54× longer, which cancels out most of the gain.
Thanks to Prof. @hongyangzh and Haochen for all their guidance and support!
arxiv.org/abs/2610.23818
Hongyang Zhang retweeted
EAGLE-4 is here—a game changer for agentic coding, with massive decoding speedups.
Honored to be a day-0 engine partner with @EagleCorp
Train with TorchSpec. Serve with TokenSpeed. Training and inference in one diagram 👇
Technical deep dive: lightseek.org/blog/eagle-4
Hongyang Zhang retweeted
EAGLE-4 is here.
From EAGLE-1 to EAGLE-3, we’ve kept making inference faster.
EAGLE-4 is our fastest yet.
961.6 tokens/s on @Alibaba_Qwen’s Qwen3.8-27B with TokenSpeed (BF16, 4× @NVIDIA B300, TP4, one request, T=0).
Github: github.com/eagle-hq/EAGLE-4
How do you make speculative decoding fast at any batch size? Let the drafter measure the hardware.
Working with @EagleCorp, we've brought EAGLE-4 to AMD Instinct MI355X GPUs on day 0. EAGLE-Harness profiles drafting and verification costs at startup, then dynamically selects the optimal guess tree for the workload.
On Qwen3.8-27B (BF16, single GPU):
⚡ ~300 tok/s single request
⚡ 1.6× faster than built-in MTP
⚡ Performance holds from 1-32 concurrent conversations
⚡ Lossless vs. plain decoding, including Gated DeltaNet layers via FlyDSL tree verification
Details + launch scripts for SGLang and ATOM: amd.com/en/developer/resourc…
Excited to announce our work "Attention Drift" has been accepted to NeurIPS 2026 🎉
I'm so happy to see our method's widespread adoptation. Now supported by all major inference engines, vLLM, Tokenspeed, SGLang and TRT-LLM. Also community trained speculative decoding models for Minimax M3 (@inferact and @AMD) and Kimi K2.6-K3 trained (@lightseekorg) being served in production as EAGLE 3.1
Shout out to all the great team mebers @themishtimoi @yigitcancomlek @kaan_oktay @hongyangzh and Stephen Xia.
And special thanks to @fal for helping for making this research possible 🙂
Hongyang Zhang retweeted
writing a speculative decoding engine from scratch in ~3k lines of PyTorch + FlashInfer. Paged KV, continuous batching, CUDA graphs, EAGLE-3 chain + tree. 1.94× at batch 1 on an H100, every output byte-identical to greedy. Blog coming soon
Hongyang Zhang retweeted
This technique makes LLM inference 2-3x faster:
(Google Search uses this in production)
Under autoregressive decoding, the target model produces one token per forward pass.
Each token is conditioned on the sequence generated so far, so generation cannot advance until another pass runs through every transformer layer.
At low batch sizes, this process is usually memory-bandwidth bound, leaving much of the GPU's compute idle.
Instead, a cheaper draft path can propose several future tokens. The large target model can then check the complete block in one forward pass (this is similar to prefill).
This technique is called speculative decoding. Google uses it in production for AI Overviews in Search.
Suppose the drafter proposes five tokens. If the target accepts all five, it can also add one bonus token from the same verification pass.
If the fourth token is wrong, the first three are accepted. The target corrects the fourth, and the remaining draft is discarded.
With the proper acceptance rule, the output distribution remains identical to the target model's distribution.
There are four common ways to generate drafter tokens:
1. Two-model speculative decoding
A smaller model generates a few tokens sequentially, and the larger model verifies them together.
This is the most basic setup since it leaves the target unchanged. The tradeoff is that you must maintain another set of weights, another KV cache, and more scheduling work.
2. EAGLE
EAGLE replaces the separate draft LLM with a lightweight module trained on the target model's hidden states.
It drafts from the target's internal representation, but the module must be trained for that checkpoint.
3. Medusa
Medusa attaches several prediction heads to the target model. Each head predicts a different future position, so several candidate tokens are produced in parallel.
The heads do not condition on each other, so their predictions may not form one consistent sequence. Medusa builds a tree and verifies several candidate paths together.
4. LayerSkip
LayerSkip uses the target model's early layers as the drafter. The remaining layers verify and correct the proposed tokens.
This removes the second model and additional prediction heads. However, it requires a checkpoint trained for reliable early exits using layer dropout and an early-exit loss.
In production, the useful metric is accepted tokens per target pass after accounting for drafting time, verification overhead, and extra memory.
A more accurate drafter can still make the complete system slower if producing its guesses costs too much.
To dive deeper, I wrote a deeper breakdown of speculative decoding, including the acceptance process and why the output distribution remains unchanged.
Read it below.
Great research! Although EAGLE-3 has been available for ~1.5 years, I have heard from many people in both industry and academia that it has yet to be surpassed. EAGLE-3 continues to perform best in real-world serving scenarios, especially at large batch sizes.
EAGLE-4?!🤔🤔🤔
Releasing the @Kimi_Moonshot K3 Draft Collection — 3 draft models (EAGLE-3, DFlash2, DSpark) trained with TorchSpec and @vllm_project on @NVIDIAAI GB200. 🚀
We also shared the data recipes. More on the blog → lightseek.org/blog/kimi-k3-d…
As TorchSpec team, we've been working on accelerating Kimi-K3 since its release. Now happy to share the SOTA speculative decoding models (DFlash2, EAGLE-3, DSpark) for K3.
P.s. we've observed high acceptance != faster, each architecture has their own drawbacks! 🧵
Releasing the @Kimi_Moonshot K3 Draft Collection — 3 draft models (EAGLE-3, DFlash2, DSpark) trained with TorchSpec and @vllm_project on @NVIDIAAI GB200. 🚀
We also shared the data recipes. More on the blog → lightseek.org/blog/kimi-k3-d…
Hongyang Zhang retweeted
Releasing the @Kimi_Moonshot K3 Draft Collection — 3 draft models (EAGLE-3, DFlash2, DSpark) trained with TorchSpec and @vllm_project on @NVIDIAAI GB200. 🚀
We also shared the data recipes. More on the blog → lightseek.org/blog/kimi-k3-d…
Hongyang Zhang retweeted
almost a year ago, me, @scriptosis and @harish20205 were sitting on a train reading the EAGLE-3 paper and discussing this idea (and we’re now going to present our first paper in a conference).
a lot of EAGLE-3's performance still depends on params you pick yourself, so we were thinking, why not learn to pick those params based on the actual hardware/load instead?
finally got around to actually trying it out :)
wrote a small blog on what came out of it:
pradheep.dev/blogs/energy-ba…
Hongyang Zhang retweeted
been playing with something i’m calling “energy throttling llms”
the question was pretty simple. when you run EAGLE-3 speculative decoding with SGLang, how do you actually choose the params instead of just guessing them every time?
what i ended up with was much simpler than i expected. track the traces from real runs, treat each config as an action, and train a tiny mlp contextual bandit on top of that. that’s basically it.
for this setup, even a small model with some old rl ideas is enough to pick the EAGLE-3 params based on the energy the gpu can actually sustain, instead of just pushing speculation blindly.
built and tested on @lmsysorg SGLang.
Hongyang Zhang retweeted
New blog! 🚀 MTP, EAGLE-3, DFlash or DSpark, which speculative decoding method should you actually use?
There’s no universal winner. The best choice changes with the model, workload, and speculation depth.
We break down how 5 methods work, how to enable and tune them in vLLM, and benchmark them across Gemma, Qwen, Kimi and MiniMax on @AMD Instinct MI300X & MI355X.
Deep dive 👇
vllm.ai/blog/2026-08-23-spec…
EAGLE-3 was introduced ~1.5 years ago. Since then, we’ve seen MTP, DFlash, DSpark, DFlash 2 and many other speculative decoding algorithm emerge, yet none has fundamentally replaced EAGLE-3.
What’s interesting is that optimizations targeting small batch sizes or specific workloads don’t necessarily win across every scenario. We may be heading toward an ecosystem where different speculative decoding algorithms coexist and each shines in different cases.
I think that diversity is ultimately a good thing for the entire ecosystem.
Hongyang Zhang retweeted
AMD MI355X now is close to Nvidia B200 on MiniMax-M3 serving.
Thanks to @AMD team. released dual technical blogs detailing full-stack ATOM + ATOMesh co-optimization for our 428B MSA sparse MoE multimodal base model.
• EAGLE3 speculative decoding for lower generation latencyCore upgrades:
• MSA-aligned Page-16 KV cache for 1M ultra-long context
• Layer-wise FP8 quantization avoiding vision/MoE precision drop
• Distributed P/D separation architecture for large-scale clusters
🔗 Blog 1: rocm.blogs.amd.com/artificia…
🔗 Blog 2: rocm.blogs.amd.com/software-…
Hongyang Zhang retweeted
You want to serve large OCR models at low latency?
I've been playing around with speculative decoding for @VikParuchuri/@datalabto's Chandra 2 and I'm releasing an initial EAGLE-3.1 model that gets a ~2x speedup at small batch sizes!
Hongyang Zhang retweeted
Scale your distributed #AI inference from a single vLLM instance to a multi-tenant grid. Explore prefill-decode disaggregation, KV-cache tiering, model cascading, and troubleshooting recipes for TTFT and TPOT regressions.
red.ht/4w53nIm
Exactly. There are too many noises in speculative decoding. Many methods claim to be 2x, 3x, 15x... faster than baseline. All are fake news. A fair benchmark is much needed.
































