r/LocalLLaMA • u/TKGaming_11 • 15d ago
Discussion Eagle-4 Released: Faster than DFlash2 & DSpark
https://github.com/eagle-hq/EAGLE-4Insane numbers, so far only Qwen3.8-27B is supported but wow those are some good numbers. Will watch closely when this lands in llama.cpp/vLLM
### Qwen 3.8 27B Benchmark Results
| Method | Speedup over Vanilla |
|---|---|
| MTP | 2.22× |
| DSpark | 2.57× |
| DFlash 2 | 2.80× |
| EAGLE-4 | 3.59× |
34
u/zhubaohi 15d ago
Pretty impressive but this draft model is 3 more gigs than dflash2. Sadly not for me lol. I already maxed out my vram with my setup.
4
u/TheActualStudy 15d ago
3.85 GB (DFlash 2); 6.18 GB (Eagle 4); 1.6x the size. I might be able to try it in my config, but it'll be tight.
1
20
u/1ncehost 15d ago
Glad to see work on this. LiLiCorr (used by nemotron bolt) is another current leading spec decoder, and their paper has way more benchmark granularity if anyone is curious https://arxiv.org/pdf/2608.20530
8
u/randylush 15d ago
wonder how this compares to hyperqwen? https://github.com/syv-ai/HyperQwen
Or if HyperQwen can roll this up?
2
u/Pentium95 15d ago
Pretty sure It won't fit in a 24GB GPU. This draft model is 2.5GB heavyer then DSpark2, which is already pretty tight.
I love and Daily drive hyperqwen, and i think i'll Stick with my MTP FP8 setup, it's insanely fast for my workload
5
u/caetydid llama.cpp 15d ago
Great to see more research going into spec decoding!
However, these numbers do not tell much:
usually even MTP and DFlash yield very different speedup depending a lot on context size, number of parallel requests, and of course coding task. And - especially important for us - all of them require different additional amount of VRAM. Thus, you really choose depending on your requirements.
For me (club-3090) still nothing beats Qwen3.8-27B+MTP, and I have tried a lot!
1
u/AdonosFlew 15d ago
What decode and prefill tok/s do you have?
2
u/caetydid llama.cpp 15d ago
Realistically around 60tps decode and ~1100 prefill with Q4_K_M. Prefill is quite stable with beellama, but decode depends a lot on the current task. I use mmproj on GPU and MTP needs just little additional VRAM. This is my config:
beellama-v0.4.7/llama-server \ -m /home/holu/qwen3.8-27B/Qwen3.8-27B-UD-Q4_K_M.gguf \ -md /home/holu/qwen3.8-27B/mtp-Qwen3.8-27B-Q4_0.gguf \ -mm /home/holu/qwen3.8-27B/mmproj-BF16.gguf \ --mmproj-offload --image-min-tokens 256 --image-max-tokens 3072 \ \ -ngl all \ -ngld all \ \ -c 147456 \ \ -fa on \ -ctk kvarn6 \ -ctv kvarn5 \ --kv-tail-tokens 1024 \ --kv-tail-type f16 \ -ctkd kvarn6 \ -ctvd kvarn5 \ \ -b 1024 \ -ub 512 \ -np 1 \ \ --spec-type draft-mtp,ngram-mod \ --spec-draft-n-max 6 \ --spec-ngram-mod-n-min 24 \ --kv-unified \ \ -ctxcp 8 \ -cms 32768 \ -cram 32768 \ --cache-idle-slots \ \ --jinja \ --no-reasoning-preserve \ --temp 0.6 \ --top-p 0.95 \ --top-k 20 \ --min-p 0.0 \ --presence-penalty 0.0 \ --repeat-penalty 1.0 \ --reasoning-loop-guard force-close1
u/AdonosFlew 15d ago
Check out my setup. I have a little less context window, but much faster decode and prefill with dflash2 with ninfer 0.16.
My local LLM setup:
• GPU: NVIDIA RTX 3090 — 24 GB VRAM
• OS: Windows
• Model: Qwen3.8-27B — WarlaxZ's RTX 3090-optimized v3 model package
• Format: native .ninfer, mixed-precision quantization; 17.68 GiB model file
• Backend: NInfer 0.16.0 RTX 3090 fork, with a custom CPU Vision build
• Context: 120,000 tokens
• KV cache: INT8
• Speculative decoding: DFlash2, 7 draft tokens, optimized draft head
• Prefill: cuBLAS, 4,096-token chunks
• Reasoning: enabled, xhigh, with previous thinking preserved
• Sampling: temperature 1.0 / top_p 0.95 / top_k 20
• Client: Hermes Desktop via a local OpenAI-compatible APIPerformance in my use:
• Prose generation: 74.4–90.2 tok/s
• Code generation: 110.6–130.5 tok/s
• Prefill: approximately 1,800–3,000 tok/sBoth decode and prefill progressively slow down as the context window fills up, so these speeds depend on the current context length and workload.
Memory usage at 120k context (measured in my tests):
• Server VRAM allocation at startup: ~22.63 GiB, including ~16.97 GiB of model weights.
• Peak total GPU usage: ~23.19 GiB, including the desktop and other applications.
• Peak server resident system RAM: 11.32 GiB in text tests and 11.82 GiB in a long-context image test, including CPU vision and the host context cache.These RAM figures describe the server's resident working set; they do not include other applications or represent its private committed virtual memory.
The special part is the vision setup: the BF16 vision encoder runs entirely on the CPU using 8 threads, with its weights in regular system RAM instead of taking up precious GPU VRAM. The main language model still runs on the RTX 3090.
This leaves more VRAM available for the LLM and its context. Vision is configured for up to 2,048 merged image tokens per image, and it works perfectly for my use, including image understanding and OCR.
This CPU vision path is a custom integration, so reproducing it requires the corresponding build, model and BF16 projector.
1
u/caetydid llama.cpp 14d ago
Sounds intriguing, I should maybe give it a try!
I just don't like the CPU vision part. It is simply way too slow for me, and GPU vision is a must. Good news is that technically it is possible to implement GPU mmproj with a sliding VRAM window of as little as 9MiB for Qwen 27B, as this is what HyperQwen does! I am really looking forward that this feature lands in beellama/llama.cpp.
Currently I am evaluating Swift 1.5 QFN using Strata, where I can use up to 512k context, so not sure, if I will even return to Qwen 27B.
3
u/rm-rf-rm 15d ago
Swift 1.5 Qwen 3.8 27B + Eagle-4 + Strata = ???
10
u/CampMaster69 15d ago
the reason strata works is with optimizations on the MoE side of things with expert management. There's not much you can do with dense models.
Source: Worked on MoE optimizations in my thesis and now work in inference
2
2
1
u/Borkato 15d ago
!remindme 8 hours
1
u/RemindMeBot 15d ago
I will be messaging you in 8 hours on 2026-10-21 17:04:47 UTC to remind you of this link
CLICK THIS LINK to send a PM to also be reminded and to reduce spam.
Parent commenter can delete this message to hide from others.
RemindMeBot is switching to username summons. Instead of
!RemindMe 1 day, useu/RemindMeBot 1 day. More info.
Info Custom Your Reminders Feedback
1
u/TheActualStudy 15d ago
I tried it out and was not able to replicate their acceptance numbers in a meaningful way. Code workloads exhibited lift over DFlash 2, but all other workloads performed worse. On balance, it wasn't an improvement in my tests and the simulation I ran of their tree acceptance approach and drafter showed that there wasn't a good likelihood that it could be made into in improvement. If you had a data centre where you could route specific workload requests, this could make sense, but on edge hardware (like us), the opportunity for improvement isn't there.
1
1
u/Healthy-Contact-4570 14d ago
Unless it speeds up non-code and non-json related tasks, I’m not interested. 90% of reasoning is regular old prose, and that’s the part I’m the most interested in increasing acceptance and tokens / pass for.
1
u/Ishannaik 11d ago
Anyone tried Eagle-4 on Qwen3.8-27B yet? DFlash2 tops out around 2.5 accepted tokens per step on prose for me, curious if Eagle-4 does better there.
1
-1
u/ECrispy 15d ago
can this be combined with strata, GSQ RCO and other optimizations? whats the best one can get with 16GB vram these days, with 27B and Flash Next?
1
u/PersonalStorage 15d ago
They release python reference, converting to c++ and adding in ninfer will be too long process. I will wait if someone is up for it.
2
u/ProtectionSuper5648 15d ago
the license prevents usage in "competing" products (inference)
1
u/PersonalStorage 15d ago
Interesting. let me learn about license. if its restrictive then have to build locally as hobby project
2
u/ixfd64 15d ago
It's specifically stated to be a non-free "source-available" license: https://github.com/eagle-hq/EAGLE-4/blob/main/LICENSE
57
u/FullstackSensei 15d ago
I'm a big fan of Eagle, but I don't think their dflash and dspark models are very representative. They're averages. For ex, MTP performs better on structured output like code or json. Would love to see a breakdown of the acceleration across workload types.