Learning Difficulty Aware Length Controlfor Efficient Hybrid Reasoning Models
Edmund and Geffen dig into When2Think, a framework that teaches large reasoning models to spend fewer tokens on easy math problems while still thinking deeply on hard ones, using a clever difficulty-aware reward signal instead of a separate controller or reward model.
Transcript
Edmund So I love that the title is basically, teach the model when to stop thinking before it bores us all to death.
Geffen Yeah, and the funny part is, that’s actually the problem they’re solving. Large reasoning models that overthink easy math and still underthink the hard stuff.
Edmund Right. The efficiency tax thing they talk about really clicked for me. You either let the model ramble forever, or you slap on a global token limit and suddenly the hard problems get worse.
Geffen Exactly. People have been stuck there for a while. Compression papers, routing papers, all trade compute for accuracy in this very blunt way. This one reframes it as: per-instance compute control, not a single budget for everything.
Edmund And they do it in a way that doesn’t require a separate controller model or a reward model, which is the part that made me sit up. It’s just a post-training recipe on top of an existing reasoning model.
Geffen Mm-hm.
Edmund Before we go deeper, this is very us for episode nine eighty-six by the way. Almost a year in and we’re still talking about token budgets on math benchmarks.
Geffen Honestly, Edmund, if Exploring Next ever stops talking about math benchmarks, that’s when you should worry.
Edmund Fair. So, plain language: what’s the core move in When2Think?
Geffen They turn the model into a hybrid reasoner with two explicit modes. There’s a System One style NoThink mode where it just answers directly, and a System Two style Think mode where it does long chain-of-thought until a special end-of-thinking token, then gives the final answer.
Edmund So the model literally starts its output with a Think or NoThink token?
Geffen Yeah. That token is the switch. During training, an exploration policy forces it to try both modes by picking that token uniformly at random. Then the rest of the tokens come from the main policy. They use importance sampling to correct for the fact that exploration distribution isn’t the same as the target policy.
Edmund Okay, so it’s not just, we sometimes zero out the chain-of-thought. It’s, we’re teaching one unified policy that chooses between short and long reasoning on each instance.
Geffen Right. And then the clever bit is how they shape the reward so the model learns a difficulty-aware sense of when to think. That’s the IDAC thing, Instance-level Difficulty-Aware Control.
Edmund Walk me through IDAC, because that sounds like branding until you look at the math.
Geffen So they precompute reference stats for each problem: how often the base model gets it right, and how many tokens it tends to use. That gives them a proxy for difficulty and typical cost. Easy problems: high baseline accuracy, low tokens. Hard ones: lower accuracy, higher tokens.
Edmund Got it.
Geffen Then, when they do reinforcement learning with verifiable rewards, the base reward is simple: did you get the answer right, as checked by a deterministic verifier. On top of that, IDAC adds a bonus or penalty depending on how your token usage compares to the reference for that particular instance and how hard that instance is.
Edmund From a product lens, this is exactly the kind of win you care about if you’re running a math-heavy tutoring app or an automated grader. Same hardware, more correct answers per dollar, and no extra latency on the easy questions kids get right anyway.
Geffen Right. And importantly, it’s a post-training framework. So if you already have a decent math L R M, you don’t need to redesign the architecture. You run this R L loop with your verifier and your precomputed stats, and you get a model that internally decides when to spin up the full chain-of-thought.
Edmund But am I, as a normal team, actually going to run that loop myself? Or am I just waiting for labs to hand me a model that has When2Think style behavior baked in?
Geffen Realistically, the latter. You need good verifiers, a clean math dataset, and infrastructure for R L fine-tuning. That’s lab or big-platform territory. What you get as a user is maybe a knob that says, hybrid reasoning mode, or a cost-performance tier that quietly uses this under the hood.
Edmund Yeah, like a slider that says, save tokens when you can, and behind the scenes it’s exactly this Think versus NoThink policy with IDAC turned on.
Geffen The open question for me is generality. Math is perfect for this because difficulty and correctness are crisp. Once you move to proofs, coding, or long-form analysis, your verifier isn’t a simple equality check, and your difficulty stats get noisy.
Edmund So you’d want a better difficulty signal than just, the base model struggled here, therefore it’s hard.
Geffen Yeah. I’d love to see them combine this with something like uncertainty estimates or external eval harnesses for difficulty. Or even per-skill difficulty, not just per-instance. Right now it’s a good first approximation, but it might mislabel some weird edge cases.
Edmund Any worries on the methodology side? Or are you mostly sold?
Geffen I’m mostly sold for the math setting they test. The one thing I’d watch is whether the model quietly learns a bias like, always Think on certain templates, even if those templates include some actually easy variants. The offline stats help, but they’re only as good as the reference model and dataset.
Edmund So you might end up with a slightly over-conservative Think reflex on some patterns, just because the reference model used to struggle there.
Geffen Yeah. It’s not a dealbreaker, just something you’d want to probe in ablations. But compared to blunt length penalties that hurt hard problems, this is a big step toward sane compute allocation.
Edmund I also like that it unifies System One and System Two in a single policy instead of spinning up separate fast and slow models plus a router. That’s simpler to ship: one model file, one deployment path, internal mode token you never expose.
Geffen And it fits our whole, the harness is the product thing. Here, the harness is basically the reward shaping and the Think or NoThink protocol. Swap in a better base model later and rerun the same recipe.
Edmund Alright, Geffen, if someone from a lab asked you what to do next with this, what’s your one-line answer?
Geffen Run the same IDAC idea on a code-reasoning model with a real verifier and see if you still get that accuracy-plus-efficiency win, or if math was the easy mode.
Edmund Yeah, and if they get that to work, I want a button in every coding agent that just says, only think hard when it actually matters. Until then, I’ll keep yelling at chain-of-thought walls of text in my editor.