← All posts

Idea C: draft model as a difficulty signal (failed)

Use how often the speculative draft model's guesses get rejected to decide which problems deserve extra samples. It was no better than the model's own confidence, which is free.

ExperimentIDEA-C
Date2026-10-27
BenchmarkGSM8K (128 problems), greedy, 320-token cap
ModelQwen2.5-14B-Instruct, Q4_K_M with an importance matrix, 40 of 48 layers on the GPU (llama.cpp). Qwen2.5-0.5B Q8_0 as a draft model, up to 16 drafted tokens
HardwareOne of my dedicated test rigs: RTX 3080 10 GB, Ryzen 9 5950X, 128 GB RAM
VerdictFAIL

What I tested

Whether a low draft acceptance rate flags wrong answers, and whether sending the worst problems by that signal to an 8-sample majority vote gains more right answers than sending them by the model's own average token probability or at random.

Pass bar, set before the run

Set before the run: continue only if AUROC is above 0.65 and routing by acceptance beats routing by token probability for the same extra compute.

Result

SignalAUROCGain routing worst 43Gain routing worst 32
Low draft acceptance0.60+6+2
Low average token probability0.65+6+5
Answer hit the 320-token cap0.90+11+8
Random (expected)n/a+2.7+2.0

Mean draft acceptance was 0.515. The first run was void because this llama.cpp build needs --spec-type draft-simple to actually draft; the rerun fixed that.

What happened

Draft acceptance was a weak signal, below the bar and no better than token probability, which costs nothing. The surprise was the trivial check: whether the answer hit the token cap. Of 29 wrong answers, 28 had been cut off. That led straight to E16.

How to rerun

llama-server --port 8093 -c 4096 -np 1 -t 16 -fa on -m q14-Q4_K_M-imat.gguf -ngl 40 --spec-type draft-simple -md qwen2.5-0.5b-instruct-q8_0.gguf -ngld 99 --spec-draft-n-max 16 --spec-draft-n-min 1
python c_specstats.py
python c_export.py
python c_analyze2.py   # reads e15_compact.jsonl, c_specstats_compact.jsonl, c_pairs.txt

Code

All code for IDEA-C: c_analyze2.py, c_export.py, c_specstats.py, c_specstats_run.ps1.

Prior work

No novelty claim. My prior-art search found no prior work in this search, but a second model review rated the idea close to existing work, and it failed.

Written by Andrew Rose with help from AI tools. Every number comes from the run logs.

Questions or ideas? me@andrewroseit.com or @AndrewRoseIT.