DoubtLess uses a small model to make a big one stop overthinking

DoubtLess uses a small model to make a big one stop overthinking

6 min read

A training-free decoding trick called DoubtLess cuts reasoning model output by roughly a third with no accuracy loss, by letting a smaller model steer a larger one away from repeated self-checking after the answer is already found.

TL;DR: A new method called DoubtLess cuts a reasoning model’s chain of thought by about 31% with no accuracy drop, and it does it at decode time with a small helper model, so you skip retraining entirely.

Reasoning models are expensive because they talk to themselves. You ask Qwen3-32B a competition math problem and it generates a long chain of thought, checks its work, second-guesses, says “wait” a few times, reconsiders, and eventually lands on an answer it often already had. You pay for every one of those tokens. In agent loops you pay for them over and over.

The paper is “DoubtLess: Training-Free Contrastive Decoding for Efficient Reasoning” (arXiv, posted across cs.AI, cs.CL, and cs.LG, code at github.com/leoluolol/DoubtLess). The claim: shorten the thinking without touching accuracy and without a training run. That combination is the interesting part. Most compression methods make you pick two of the three.

What is DoubtLess actually doing?

The setup is contrastive decoding with a twist. You have your big reasoning model generating a chain of thought. Alongside it you run a much smaller reasoning model, and you run that small model twice on the big model’s chain so far: once prompted to be brief, once prompted to be verbose.

Those two passes produce two logit vectors. The difference between them is a direction that points from “verbose” toward “brief.” You scale that difference by a strength parameter and add it to the big model’s logits at every decoding step.

That’s it. No fine-tuning, no steering vector baked into the weights, no banning the word “wait.” The small model acts as a live nudge, biasing the big model toward tokens that a brief thinker would prefer over a verbose one.

a small guiding figure nudging a much larger figure along a shorter path while the larger figure's default winding path

The elegance is that the steering signal is computed fresh at each step from the actual context, not frozen ahead of time. A fixed steering vector added to hidden states, which is one of the baselines the authors compare against, doesn’t adapt to where the model is in its reasoning. DoubtLess does, because the small model is re-reading the chain as it grows.

Why does the small-model trick beat the obvious heuristics?

The lazy ways to shorten chains of thought all have a tax. Stop decoding early and you cut off chains that genuinely needed more steps. Ban “wait” and similar backtracking words and you remove a crutch the model sometimes actually uses to catch an error. Both reduce accuracy on the hard problems, which are exactly the ones where you don’t want to be cutting corners.

DoubtLess reports it outperforms five inference-time baselines across seven benchmarks spanning competition mathematics, graduate-level science, and competitive programming. On Qwen3-32B it shortens the chain by 31% with accuracy unchanged. That last clause is the one to pressure-test, and the behavioral analysis gives a reason to believe it.

Here’s the mechanism that makes it make sense: most of the token savings come after the correct answer first appears in the chain. The model finds the answer, then keeps re-checking it. DoubtLess reduces that repeated checking. So you’re not cutting into the reasoning that produces the answer. You’re cutting the anxious re-verification that happens once the answer is already sitting there in the text.

a timeline where the answer appears early and a long tail of repeated checking marks gets trimmed away after it

If that holds up, it explains why accuracy survives. The tokens being removed were, on average, not load-bearing. That is a cleaner story than “we found a better place to truncate.”

Does this hold up outside the benchmark?

Two results push it past a math-leaderboard curiosity.

First, the agent result. In a self-debugging coding agent, DoubtLess cut thinking tokens per turn by 20% with unchanged task performance. That matters more than the benchmark number for anyone running agents in production, because agent loops multiply token cost. A reasoning model that overthinks once is annoying. A reasoning model that overthinks on every turn of a ten-turn debug loop is a bill. Twenty percent off each turn compounds.

Second, it generalizes. The authors report it works on two other model families with accuracy unchanged, and that it stacks: apply it on top of a model already trained for brevity and it shortens the chain further. That stacking point is the one I’d watch. It suggests the redundancy DoubtLess removes is a different redundancy than training-based compression removes, so the two aren’t fighting over the same tokens.

I’d flag the honest caveats, because the paper doesn’t resolve all of them. You’re now running a second model at inference, the small reasoning model, and running it twice per step. The paper frames this as efficient and the small model is “much smaller,” but there is real added compute per decode step. Whether net throughput improves depends on how the brief/verbose passes are batched and how the small model’s size compares to the token savings on the big one. “31% fewer tokens” and “31% cheaper or faster end to end” are not the same number, and the abstract-level material here is about token count, not wall-clock or dollars. Measure it on your own stack before you quote a savings figure to anyone.

The strength parameter is also a knob, and knobs that trade brevity against accuracy need tuning per model and per task. The clean “accuracy unchanged” headline presumably sits at a chosen strength. Push it harder and you’ll find the edge where accuracy starts to go.

What a builder should do with this

Clone the repo (github.com/leoluolol/DoubtLess) and try it against the one workload where overthinking is actually costing you: an agent loop with a reasoning model doing many turns. That is where a 20% per-turn cut shows up as a line item you can see.

Set up the comparison honestly. Measure three things, not one: output tokens, end-to-end latency, and total compute including the small steering model running twice per step. The token reduction is the paper’s headline, but your win or loss lives in whether the small model’s overhead is smaller than the big model’s savings. For a 32B model steered by something genuinely small, the math probably works. For a 7B model it might not be worth it.

The catch most readers will miss: this is a decode-time intervention, which means it plays badly with hosted APIs that don’t give you logit access. If you’re calling a closed model through an endpoint, you can’t add vectors to its logits, so DoubtLess is for people running open-weight reasoning models they control. That’s Qwen, Llama-family, the self-hosted crowd. If that’s you, this is a free-ish efficiency lever with a believable mechanism behind why accuracy survives. Test the strength parameter, verify on your own evals, and don’t quote the 31% as your number until you’ve measured your own.