最近到处都在说 reasoning effort。简单说,它就是模型回答前“想多深”的那个旋钮。
这期主菜是 Sebastian Raschka 七月中那篇讲控制推理努力的文章。这个词最近被包装得太玄了。拆开看,就是训练时教模型听懂“这次少想点”这句话。
先收几条背景,懂行的跳过。
两年前 o1 把推理模型带火了,四个月后 DeepSeek-R1 把训练细节公开了
R1 用的是 RLVR。就是在数学和代码这种能自动判对错的领域,答对给 1 分,答错给 0 分,靠这个信号硬训出来。中间那串推理过程本身不参与训练更新。
有意思的地方在这。没人教,模型自己就学会了写中间步骤、发现错了回头改。业内管那个自我纠正的瞬间叫“啊哈”时刻。名字起得玄,事情很朴素:奖励只看结果,过程是模型自己长出来的。
<think> 标签其实不负责让模型思考
这条我特别喜欢。Raschka 的说法是,这对标签是装饰性的。模型会不会思考,跟它没关系。
它就是个分隔符。告诉界面和训练流程:这中间是草稿纸,最后那段才是答案。R1 训练时确实有个格式奖励,鼓励模型把推理塞进标签里。但那是给外部流程看的,不是给模型开窍用的。
留个白话版:草稿纸不会让你变聪明,但交卷时老师得知道哪页是草稿。
第一代推理模型没有关闭键
R1 那批是专用推理模式。你问它今天几号,它也给你推演半天。没有开关。
后来 Qwen3 这类改成混合模式。同一个模型,能思考也能不思考。关的方式有点土:分词器里设个 enable_thinking 为 False,模型会在开头吐一个空的标签对,等于自己对自己说“不写了”。土,但管用。
GPT-5.6 每个尺寸带五六个努力档位,实现细节没公开
OpenAI 没讲怎么做的。但从开源的 gpt-oss 能猜个大概:系统提示里写一句 Reasoning effort: low 之类的,模型就照办。
这条对普通人的意义在算账。努力档位直接连着 token 数。档拉高,答案更长更准,但收益递减。订阅制用户对“递减”应该有体感:同一个问题,高档位的回答经常只是更啰嗦,不是更对。
实现方式其实就两招
文章推测来推测去,路子就两条。要么训练时对不同提示给不同的长度惩罚,要么训完再用 SFT 教模型听档位指令。gpt-oss 和 GPT-5.6 大概率是两招混着用。
Inkling 的报告给了个具体例子。系统消息里写期望努力水平,RL 时按生成 token 数扣奖励。推理时发一句 Thinking effort level: 0.8 过去。就这么直白。
六个开源模型,六种做法,没有最佳答案
这是文章第六节,也是我只看懂一半的部分。DeepSeek V4 有三档思考模式,Think Max 那档还附一句系统指令,大意是不许走捷径。Kimi 的 Toggle 方法在训练里交替进行有预算和无预算两个阶段,据说省了四分之一到三成的 token,性能基本不掉。Qwen3 的硬预算功能是训练后自己冒出来的,没显式教过。
六家的细节我没全吃透,先放在这里。但有一件事我看明白了:每家做法都不一样。有标准答案的东西,不会长出六种做法。
模型大小和推理努力是两个独立的旋钮
实验里有个结果值得记:小模型开高努力,有时能追上大模型开低努力的分数。
这条对普通人最实在。预算不够上大模型的时候,把手里模型的努力档位拉高,是一条真实的省钱路径。不是所有活都值得这么干,但值得知道有这条路。
自动选档位是圣杯,但 GPT-5 的 Auto 模式已经因为效果不好被砍了
这条我收的时候犹豫了一下,还是收了。它戳破一个常见幻觉:既然档位这么麻烦,让模型自己选不就好了。试过了,不行,撤了。
短期内还是得自己拨这个旋钮。要么在 prompt 里写明白,要么靠外层的 agent 帮你猜。指望模型自己知道这次该想多深,暂时想多了。
补一句这期的整体判断。推理努力,本质上就是把“想多久”从一个玄学问题变成一个可调参数。参数就该有参数的待遇:知道它在哪,知道往哪拧,知道拧过头是浪费。
被讲得越玄的东西,拆开越简单。这个词属于典型的那种。
本周就这些。上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。那六家开源实现里我要是哪里讲岔了,尤其欢迎指出来。
下周见。
