跳到主要内容

自我批判税:让模型检查自己的工作如何导致成本翻倍却收益甚微

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个团队将自我批判循环(self-critique loop)投入生产,因为基准测试数据看起来令人无法拒绝:Self-Refine 报告称在七项任务中平均提升了 20% 的绝对性能,Chain-of-Verification 在问答任务中将幻觉减少了 50% 到 70%,而在一篇被广泛引用的论文中,反思提示词(reflection prompts)将数学方程的准确率提高了 34.7%。一个月后,财务审查揭示了账单。产品的单次请求成本大约增加了三倍,p99 延迟增加了三倍,而实际在生产流量中表现出的质量提升更接近 3% 而非 30%。自我批判循环确实做到了它宣传的效果,只是团队从未计算过它的代价。

这就是自我批判税:一种在 PPT 上看起来像是免费提升质量,但在发票上却表现为结构性成本增加的可靠性模式。模式本身是合理的——在某些实际情况下,“生成并验证”确实是正确答案。失败的原因在于将其作为默认配置而非经过校准的干预手段进行部署,并在季度的错误时间点发现“模型检查自己的工作”实际上是一项采购决策。

在设计评审中没人算过的 Token 账

从底线开始算。一个自我批判循环至少包含两次模型调用:一次生成输出,一次进行批判。大多数生产实现还会增加第三次:一次根据原始输出加批判内容生成修正版本的修改环节。直觉上认为这会使成本增加三倍,但实际成本更糟,而且是在对计费影响最大的方向上变糟。

批判步骤的输入并不是一段全新的提示词。它逐字包含了原始输出,加上系统提示词,以及批判准则。如果原始生成产出了 800 个 token,而批判提示词本身有 400 个 token 的指令,那么批判调用的输入大约是 1,200 个 token——接着批判过程本身又会增加数百个输出 token。修正步骤随后会重新摄入原始输出、批判内容和修正提示词。到循环结束时,团队已经支付了大约单次调用 2.5 到 3 倍的 token 费用,且主要集中在输出 token 上——而在旗舰模型中,输出 token 的价格通常比输入 token 贵四到五倍。

输出 token 的这种集中度是基准测试论文中没有包含的部分。论文报告的是准确率提升;发票报告的是随着最昂贵 token 类别扩展的成本结构。在设计文档中“成本翻倍”的流程,在成本仪表盘上往往实际支出高出 3 到 4 倍,因为团队只预估了“两次调用”,而没有考虑到“两次调用且偏重于价格表中昂贵的一侧”。

延迟也遵循类似的模式,但带有一种长尾效应的转折。p50 延迟通常会翻倍,因为批判是在生成之后顺序运行的。p99 延迟通常会翻倍甚至三倍,因为当链条中的任何一步遇到慢路径(长输出、重试、供应商的瞬时减速)时,它会在整个链条中累积,而不是被平滑掉。一个在单次运行时签署了 p99 小于两秒的 SLO 团队,现在在使用平均延迟远低于阈值的自我批判循环时,却频繁违反同样的 SLO。

质量提升是真实的,但比论文中描述的要小

关于自我批判模式的公开数据并非虚假,但它们是有条件的。Self-Refine 报告的 20% 平均提升是在选定的七个展示该方法的任务中得出的,且各任务间的方差巨大——有些任务提升了两位数,有些则在误差范围内。CoVe 在事实性问答中的幻觉减少效果最强,因为验证问题可以被清晰地分解;在开放式生成中效果较弱,因为要验证的“事实”是分散的。Reflection 在数学方程编写中取得的 34.7% 提升,伴随着在函数调用(function calling)中 18.1% 的提升——两者都有意义,但如果产品是做客服摘要的,那么数学那项数据就不应该是你预算参考的标准。

接着是 Huang et al. 2024 年的研究结果,其分量足以重塑该领域:在大语言模型没有外部反馈的情况下,无法可靠地自我修正推理,在几种情况下,它们的性能在自我修正后反而会下降。产生原始答案的模型通常不是询问答案是否正确的合适模型,因为导致原始错误的相同偏见和知识盲点在批判时会再次出现。模型评价自己的输出没问题,循环结束,团队发布了一个为了得到相同答案而运行两次的系统。随后的综述论文《大语言模型何时能真正修正自己的错误?》正式确定了这一局限性:当模型能够获得可靠的外部反馈时,自我修正效果很好;反之,效果很差。

在生产环境中,“可靠的外部反馈”通常指以下之一:模型可以运行的代码解释器、其返回值能验证声明的工具调用、针对结构化输出的确定性检查器,或者作为验证者的另一个经过不同训练的模型。这些都不是“让同一个模型批判自己”,然而“让同一个模型批判自己”正是大多数“生成并验证”流程实际在做的事情。

因此,能保留到生产环境中的性能提升比基准测试显示的要窄。一个在开发阶段测量到 15% 评估提升的团队,在生产流量中通常只能看到 3% 到 7% 的提升——有时是因为评估集过度代表了批判有效的案例,有时是因为模型在生产分布上的校准有所不同,有时是因为批判提示词是在与用户实际发送的内容不匹配的工作负载上微调的。无论哪种情况,成本都是一样的。

这种模式物物有所值的场景

这里的观点并不是说自我批判(self-critique)是一个糟糕的模式,而是说它是一种针对性的干预手段,却被当作默认方案过度滥用了。在以下三种工作负载中,成本计算足够清晰,足以证明其支出的合理性。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates