Enabling MTP speculative decoding together with prefix caching silently costs ~20% accuracy
[blocker] config
Fields
id
gotchas/mtp-plus-prefix-caching-accuracy-lossClass
config
Severity
blocker
Concepts
prefix-cachingqwen3-6-35b-a3bspeculative-decoding
Symptom
On a finetuned Qwen3.6 35B-A3B (MoE) served with MTP (num_speculative_tokens=2) plus --enable-prefix-caching, internal classification accuracy drops ~20% versus the identical setup without prefix caching. Nothing errors; the server is simply faster and wrong.
Root cause
An interaction bug between the prefix-cache reuse path and the MTP speculative decoding path - likely how draft/MTP hidden states or KV blocks are reused across cached prefixes. The four-configuration ablation isolates it: plain decoding (baseline), + prefix caching (unchanged), + MTP (unchanged), + both (~20% drop). Neither feature alone is at fault.
Workaround
Do not combine MTP/EAGLE speculative decoding with prefix caching on models where output quality matters until this is fixed. Serve with one or the other, or fall back to plain decoding, and validate accuracy on your own task rather than trusting throughput.
notes
This is the dangerous class: the optimization makes the failure invisible because it also makes things faster. Accuracy regression on a MoE finetune is task-specific, so the ~20% figure is not a universal constant - but the two-feature interaction is the finding, and it was closed 2026-08-06 without the ablation being re-run by a maintainer.
Notes
This is the dangerous class: the optimization makes the failure invisible because it also makes things faster. Accuracy regression on a MoE finetune is task-specific, so the ~20% figure is not a universal constant - but the two-feature interaction is the finding, and it was closed 2026-08-06 without the ablation being re-run by a maintainer.