They seem to have forgotten to mark it as a dflash model in terms of their categories so it is basically unfindable in google, enjoy! I will have dflash + ddtree implemented by tomorrow hopefully, claude did most of the implementation but there’s some things it just doesn’t understand.
I ran a few benchmarks with this yesterday to compare to the others. The gains for bfcl were decent (and got exactly the same score), but on AgentBench there was no increase. I’m currently only running each sample 3 times (and taking the mean score) so it might just be randomness, but once I’ve found a few more benchmarks that work reliably I might start increasing the number of runs to ensure the numbers are fairly stable (and if it comes to it, I’ll start reviewing logs, but I’m really hoping the numbers will be reliable enough to avoid this 😄).
I think the dflash model was not trained on a very big dataset and that’s why you’re seeing bias there with the speed being better on bfcl but not on AgentBench. I have been really struggling to see any improvement with the ddtree implementation because the token acceptance drops off a sharp cliff at 6-7. I’ll still package everything up and throw it on github later so people can mess around with it with other models (35B is insanely fast with this) but until we have a stronger dflash model for 27B I don’t think it’s really going to do much for us.
Ah, that makes sense - and I realise now the HF page does say “This model is still under training” so maybe it’ll get better. I’ll try the MoE version out at some point (which doesn’t have this disclaimer) to see if it’s more general there.
I will download again, my acceptance is around 7%.. quite useless at the moment. they said they are working in some vllm sliding window attention feature as well. (hf question)
I had terrible issues with spec decoding on both the moe and dense Qwen3.6’s - quality dropped significantly - I mindlessly used --speculative-config ‘{{“method”:“qwen3_next_mtp”,“num_speculative_tokens”:2}}’
I saw poor coding, but also a measurable drop in things that require more creativity, like architectural design (I’ll publish those findings shortly).
Apart from quality I found that using Qwen’s recommended sampling params for Qwen35-27B, it would get caught in loops - to fix that I put min_p: 0.08 - which is not supported by spec decoding.
I understand Qwen uses NGram and it’s just not suitable for coding - but - I know very little about this - was, as you pointed out above, struggling to find information via google.
The big question then - is dflash good for surgical, precise coding and for other more creative but still very precise work like technical documentation, design etc.?
My understanding is that speculative decoding is lossless. The predicted tokens are checked against the main models output (but multiple predicted tokens can be checked in one go), and any incorrectly predicted tokens are never used.
This video explains it well:
MTP doesn’t use a separate model, but it should still be lossless. Unless there are bugs, I think your difference might be caused by something else.
Yep, my benchmark scores are roughly the same with speculative decoding or without. There is always some variance between runs, sometimes dflash does better sometimes worse by a few points, but overall its always in the same ballpark.
I tried pulling the latest version here, but it seems to keep eating up all my RAM (I’m running with the max set to 0.85, but it keeps getting up to around 99% and getting 0 scores, so I’ve been terminating it to try again). I’m not sure what’s going on here, but I might abort testing this one for now and come back to it when the disclaimer on the model page is gone 🙃
There’s an important caveat to this which is some speculative decoding frameworks require greedy decoding mode. When sampling, the speculative heads otherwise don’t know what decision the model will make. Among other things, disabling the sampling obviates most other sampling parameters including presence_penalty, repetition_penalty, etc. which Qwen3.x really need. And the inference engine may nearly silently force greedy mode.
In such cases, greedy may be set by default and that - rather than the speculation - is what causes looping. Thus, the output is technically lossless but behaves different in practice. The drafter is not at fault but may be presumed to be.