
Controlling Reasoning Effort in LLMs
Sebastian Raschka explains how modern reasoning LLMs implement adjustable "reasoning effort" or thinking-budget controls, tracing the mechanics from DeepSeek-R1's original RLVR recipe through hybrid think/no-think switches (Qwen3) to full effort-level systems in GPT-5.6 and gpt-oss. He then does a comparative deep dive into six flagship open-weight models' documented recipes — DeepSeek V4 (separate effort specialists distilled together), Nemotron 3 Ultra (SFT + truncated-trace training + hard budgets), Kimi K2.5/K3 (Toggle alternating budgeted/unconstrained RL, multi-teacher distillation), GLM-5 (turn-level/interleaved thinking via SFT), Qwen3 (Thinking Mode Fusion), and Inkling (continuous 0-1 effort conditioning during RL) — showing the shared techniques (effort-labeled SFT data, mode-conditioned RL with variable length penalties/context windows, and robustness training for hard token cutoffs) behind these UI toggles.
What it claims
Reasoning-effort controls are not prompt tricks. An effort label only works if post-training tied it to behaviour. Raschka collects the documented mechanics from six open-weight reports. The figures the page gives:
- Kimi's Toggle cuts generated tokens by about 25–30% with little change in benchmark scores (evaluated on K2 Thinking).
- Nemotron 3 Ultra trains its medium-effort mode on only about 2.5% of RLVR prompts.
- Inkling does most of its post-training through asynchronous RL with more than 30 million rollouts, conditioned on a continuous effort value.
The practical point is that effort level and model size are two separate cost knobs. In the Artificial Analysis curves for GPT-5.6 Luna, Terra and Sol, a smaller model at higher effort can match a larger model at lower effort.
How it works
The control surfaces at inference, as documented:
- gpt-oss: the system prompt carries
Reasoning effort: low/medium/high. The author presumes GPT-5.6 does the same, but OpenAI has not published this. - Qwen3:
enable_thinking=Falsemakes the tokenizer prefill an empty<think></think>. This is a hard switch./thinkand/no_thinkin the prompt are soft switches. - DeepSeek V4: Think Max adds a system instruction beginning "Reasoning Effort: Absolute maximum with no shortcuts permitted." This instruction is backed by its own RL context window and a smaller length penalty, so it does nothing on other models.
- Nemotron 3 Ultra:
- Regular mode is
enable_thinking=True. - Medium effort adds
medium_effort=True, which appends{reasoning effort: efficient}to the last user message. - Reasoning-off prefills an empty think block.
- An optional client-side budget closes
</think>itself if the model hasn't, then lets it answer. - Kimi K2.5: instant mode is
thinking: {"type": "disabled"}in the official API, orchat_template_kwargs={"thinking": False}on vLLM or SGLang. - Kimi K3:
reasoning_efforttakes low, high or max. Max is the default. - GLM-5: thinking is turned off per request with
thinking: {"type": "disabled"}. The open chat template prefills<|assistant|></think>. - Inkling: a system message such as
Thinking effort level: 0.8.
The training details that the summary names but does not explain:
- Nemotron truncation training: regular reasoning traces are cut at random token budgets and keep their original answers. The inserted
</think>is masked out of the SFT loss. Medium-effort SFT data come from GPT-OSS-120B running in its medium mode. - Kimi Toggle: RL alternates between a budgeted phase and an unconstrained phase every fixed number of iterations.
- Each problem's budget is a chosen percentile of the lengths of correct rollouts.
- The budget only switches on once mean accuracy on that problem passes a threshold.
- The motivation is a stated failure mode: a fixed budget overfits the model to short solutions and loses test-time scaling.
- The final checkpoint has no budget selector.
- Kimi K3: a verifiable response that runs over budget gets −1 instead of 0 or +1. The max-effort specialist is trained first, then the budget is lowered for high and low. This is done in three domains, giving nine specialists that are merged by multi-teacher on-policy distillation:
flowchart LR A[Max-effort specialist] -->|lower budget| B[High] B -->|lower budget| C[Low] D["×3 domains: general, agents, coding"] --> E[9 specialists] A --> E B --> E C --> E E --> F[Multi-teacher on-policy distillation] F --> G[Single K3 checkpoint]
- Qwen3: stopping a reasoning span at a hard budget was never trained explicitly. The ability emerged after Thinking Mode Fusion.
How to use it
If you are building effort control into your own model, the page points to two routes:
- Effort-labelled SFT targets that show the desired reasoning length.
- A per-label length penalty or context window during RLVR. For example, a strong penalty for "low" and little or none for "high".
The two can be combined. To make outputs survive hard client-side cutoffs, use Nemotron's truncated-trace SFT. To keep long-reasoning ability while training for brevity, use Toggle.
Limits
- OpenAI methods are guesses. The OpenAI training details are the author's educated guesses, not disclosed facts.
- Undisclosed parameters:
- DeepSeek V4 does not give its length penalty or which teacher maps to which mode.
- Inkling does not give its reward formula, its token-cost coefficients, or whether effort was also conditioned in SFT.
- Kimi K2.5 does not give the data mix behind instant mode.
- No cross-model comparison is possible. Base models, data, compute and benchmarks all differ, and the author says no method can be called best.
- Saturation and cost axis. Gains flatten at high effort; GPT-5.6 Sol shows this. The cost curves use API price rather than compute, and are specific to each benchmark.
- Research proposals skipped. Alternative budget methods from research papers were left out as unproven proofs-of-concept.
- Automatic effort selection is unsolved. GPT-5's Auto mode appears to have been removed from the UI.
Organisations named here
- OpenAI
- DeepSeek
- Moonshot AI
- NVIDIA
- Z.ai
- Thinking Machine Labs
- Thinking Machines Lab
- DeepSeek-R1
- Kimi K1.5
- Kimi K2 Thinking
- Sebastian Raschka
- Tülu 3
Technologies named here
- vLLM
- o1
- DeepSeek R1
- SGLang
- DeepSeek-R1-Zero
- Transformers
- SymPy
- DeepSeek-V3
- WolframAlpha
- GPT-5.6
- GPT-5.6 Luna
- Codex
- GPT-5.6 Terra
- ChatGPT UI
- GPT-5.6 Sol
- GPT-5
- gpt-oss
- gpt-oss-120b
- Qwen3
- Inkling
- DeepSeek V4
- Nemotron 3 Ultra
- Kimi K2.5
- K2
- K2 Thinking
- Kimi K3
- GLM-5
- GLM-4.5
- DeepSeekMath-V2
- Model Context Protocol
- GRPO
Techniques named here
- Reinforcement learning with verifiable rewards
- Think tokens
- Inference scaling
- Self-consistency / majority voting
- Reasoning effort / thinking mode toggle
- Effort-conditioned SFT
- Effort-conditioned RLVR with length penalty
- Thinking Mode Fusion
- Toggle
- On-policy distillation
- Hard reasoning budget with truncation training
- Continuous effort conditioning
Related in training



