跳转到主要内容

采样参数继承:当 0.7 的温度从规划器泄露到验证器时

阅读需 2 分钟Tian PanTian Pan

一个在 8% 的情况下会推翻自己答案的验证器(verifier)并不是一个表现不稳定的模型。这是一个由于框架默认采用继承机制而进入生产环境的采样配置 Bug。规划器(planner)需要 temperature=0.7 来头脑风暴子任务的分解。而验证器 —— 其全部工作就是针对答案是否符合评分标准给出低方差的“是”或“否” —— 却是通过同一个 harness 调用实例化的,并默默地沿用了相同的温度设置。没有人故意这么设置。甚至根本没有人去设置它。

这是你的技术栈中最昂贵却无人认领的参数。它在调用树中不断累积:验证器上方的总结器、下方的结构化输出提取器,以及包裹整个流程的重试循环,都像使用全局变量一样沿用着规划器的“保持创意”旋钮。这笔账会同时体现在三个地方:评估的不稳定性、Token 支出,以及资深工程师花半天时间对一个结果发现根本不是退化的“性能退化”进行二分法排查。

那些看似合理实则不然的继承模式

大多数智能体(agent)框架将模型配置作为构造函数参数暴露给单个客户端对象,然后将该客户端在调用树中传递。规划器智能体、验证器智能体和结构化输出提取器各自获得对同一个客户端的引用,这意味着它们都获得了相同的 temperaturetop_p 和种子(seed)默认值。这种模式很方便 —— 你只需在应用程序的边缘配置一次模型 —— 而方便正是它在你不再需要它之后仍能长期存在的原因。

问题在于,“模型”并不是一个单一的角色。一个现代智能体至少包含四个不同的“发言者”,每个角色都有不同的采样需求:

  • 规划器(Planner):提议备选分解方案的规划器受益于多样性。0.6–0.9 范围的温度能产生多样性,让验证器可以从多个候选方案中选出优胜者。
  • 验证器(Verifier):根据标准对候选方案进行评分的验证器必须接近确定性。最近的研究表明,LLM 作为裁判(LLM-as-judge)的自洽性在 temperature=0.1 左右达到峰值,而不是 0.0,但任何超过 0.3 的设置都会引入翻转率(flip-rates),从而破坏验证步骤的价值。
  • 总结器(Summarizer):为下一步压缩工具输出的总结器需要一条中间路线:既要有足够的确定性以保证可重复性,又要有足够的灵活性来处理不寻常的措辞,而不至于截断为固定模板。
  • 结构化输出提取器(Structured-output extractor):为下游代码生成 JSON 对象的提取器需要 temperature=0 以及语法受限解码。除此之外的任何设置都会导致解析失败,重试循环会将 1% 的错误率转化为 1% 的尾部延迟峰值。

当继承成为默认行为时,所有四个角色都会获取规划器的设置。测试框架实现者的心理模型 —— “我配置了模型” —— 与运行时的现实并不相符。验证器并没有针对验证任务进行配置;它被配置成了最近一个调用者所需的模式,而最近的调用者通常需要的是创意。

为什么验证器的 Temperature 0 也不是标准答案

在第一次事故之后,人的本能是将验证器覆盖为 temperature=0 并认为 Bug 已修复。这只对了一半。温度为零是正确的“意图”,但最近关于 LLM 裁判的研究从两个具体方面使实现变得复杂。

首先,在现代推理系统中,temperature=0 并不能产生完全确定性的输出。服务端的批处理合成(Batch composition)改变了浮点运算的顺序,进而改变了 logit 值,即使在贪婪采样时也可能导致概率最高的 Token 发生翻转。“1000 次运行,1000 个不同的答案”效应已被详尽记录,而最近关于批处理不变内核(batch-invariant kernels)的研究表明,解决此问题的代价约占吞吐量的 60%。对于大规模运行的验证器来说,这就是你能达到的 SLO 与无法达到的 SLO 之间的区别。

其次,即使采样在数学上是贪婪的,单次样本评估也是脆弱的。每次调用仅给出一个“是/否”结果的裁判捕捉到了分布的众数,但没有告诉你任何关于分布离散度(spread)的信息。那些严肃对待这一问题的论文 —— 即那些在多个温度下运行相同比较并计算翻转次数的论文 —— 发现裁判的最佳温度更接近 0.1 而非 0。因为轻微带噪的采样能暴露模型信念确实处于 51/49 的情况,而这些情况应该被标记出来,而不是默默地倾向于其中一方。

正确的验证器配置不是“温度为零”。而是“低温度、多次采样,并在生产环境中观察翻转率指标”。如果翻转率超过阈值(例如 5%),验证器会升级到更强大的模型或人工审核。这将采样参数从一个你设置一次就了事的旋钮,变成了一个你可以观察的信号。

将按角色划分的采样配置作为框架原语

架构层面的修复方案是停止将采样参数视为模型客户端配置,而开始将其视为角色配置。一个角色配置集(Role Profile)捆绑了 temperaturetop_ppresence_penaltyfrequency_penaltymax_tokens、可选的 seed,以及与结构化输出配套的语法或 schema 约束。当调用方调用 planner(规划器)时,它向框架请求的是 planner 配置集,而不是模型客户端。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 11 分钟

供应商将你的模型标识符重定向到特定租户的微调模型,而其他人使用的却是基础模型

如果将 LLM 模型标识符视为权重的名称而非路由决策的标签,那么供应商可能会在评估套件仍保持“绿色”通过状态时,静默地将你的租户从微调模型切换回基础模型,导致客户最先察觉到问题。

insider
llm
阅读需 9 分钟

评估选择偏差:为什么你的测试集会对那些导致用户流失的失败视而不见

从生产链路中更新的评估集继承了幸存者偏差:遭遇最严重失败的用户已经离开,并停止生成链路。分数在攀升,而留存率在下降。以下是如何打破这一循环的方法。

insider
evals
阅读需 10 分钟

工具调用顺序是偏序,而非集合

大多数生产环境中的 Agent 将其工具集视为一个无序的能力包。实际上,它是一个偏序关系,而 Bug 就隐藏在那些无人声明的依赖边界中。

insider
agents
阅读需 11 分钟

确定性预算:将随机性视为按层面的分配,而非全局开关

温度不是一个全局开关。应按层面分配随机性——路由、解析、合成、生成、探索——否则你将为不需要的方差付出代价。

insider
agents
阅读需 11 分钟

智能体输出的验收抽样:制造业质量保证领先于代码审查的秘诀

智能体每周交付数百个 PR,而其中大多数完全没有经过审查。制造业在一个世纪前就通过验收抽样解决了这个问题——利用 AQL 表、批次拒收和转移规则,将对智能体的信任从“凭感觉”转变为明确且可衡量的制度。

insider
agents