跳到主要内容

能力激发差距:升级到更新模型为何会破坏你的产品

· 阅读需 10 分钟
Tian Pan
Software Engineer

你升级到了最新模型,结果产品却变差了。不是灾难性的崩溃——新模型在基准测试中得分更高,能处理更难的问题,拒绝的不该拒绝的内容也更少了。但你的产品实际需要的那项能力?退化了。你精心调优的提示现在产出的是模棱两可、过度修饰的输出,而你需要的是明确的断言。你的领域特定格式指令被"贴心地改进"成了通用格式。那种让工作流程可靠运行的严格指令遵从感,现在像是在自动驾驶。

这就是能力激发差距:模型在原则上能做什么与它在生产环境中你的提示下实际做什么之间的鸿沟。而随着每一轮以安全为重点的训练循环,这个差距系统性地扩大。

理解这一现象发生的原因——以及如何应对——是构建在前沿模型之上的团队面临的最重要的工程问题之一。

为什么安全训练会抑制特定能力

通过 RLHF 及其变体(DPO、Constitutional AI)进行的训练后对齐,在广泛期望的维度上提升了模型:降低了毒性、改善了对有害内容的拒绝率、提高了不确定性的校准度。但这些改变并非免费的。它们通过调整模型权重来改变跨所有输入的行为,而不仅仅是有害输入。

这里的机制很重要。安全行为并非被干净地隔离——减少有害输出的梯度更新,也会抑制某些恰好与危险行为相关的词符分布。自信的断言使用的语言模式与错误信息相似。领域术语与可能被滥用的专家知识存在重叠。以牺牲警示语为代价的精确指令遵从,在恶意情境下看起来像是操纵。因此,训练在全局范围内压制这些模式。

研究已将这正式描述为"对齐税":对齐税率随安全训练方向在能力子空间上投影的平方而缩放。通俗地说:安全训练对通用能力空间的干扰越多,你在生产任务中的损失就越大。更新的论文表明,这在推理模型中尤为明显,在这些模型中,安全对齐明显降低了逐步推理的质量。

从业者常常忽略的关键洞见:能力并未被销毁,而是被抑制了。模型仍然可以访问那些行为——权重并没有被归零。它们只是被向下加权,使其更难触发。这就是为什么激发(elicitation)有效。

什么实际上会退化,以及为何难以察觉

并非所有的能力退化都是等价的。对生产系统伤害最大的退化分为几种模式:

指令遵从漂移。 模型遵从你指令的精神而非字面意思。你要求一个恰好有这五个字段的 JSON 对象,结果得到六个字段,因为模型认为多一个字段更有帮助。这种漂移很微妙——输出看起来是对的,但下游解析失败。

果断性崩溃。 更新的对齐模型会添加旧版本跳过的回避语和限定词。GPT-3.5 会写"答案是 X",而更新的安全调优模型则写"值得注意的是,X 通常被认为是答案,但这可能因情况而异。"这对通用聊天机器人来说无所谓,但对于需要权威语气的应用——面向客户的通信、领域专家模拟、结构化决策工具——这是致命的。

风格和格式抑制。 如果你的应用依赖特定的输出格式(特定的 Markdown 结构、代码风格、长度限制),新模型可能会用其训练认为"更好"的格式来覆盖它。模型已经从 RLHF 信号中吸收了足够多关于"好输出"长什么样的偏好,以至于你的明确指令与其内化的偏好相互竞争。

领域词汇规范化。 在广泛安全语料库上微调的模型,往往会将领域特定语言规范化为通用替代词。医学、法律、金融和技术领域都有精确词汇,词语选择至关重要。对齐模型可能系统性地用通俗解释替换精确术语。

这些退化难以察觉的原因:标准基准测试分数无法捕捉它们。MMLU 衡量知识广度,HumanEval 衡量代码正确性,两者都无法捕捉你的特定格式是否被保留,或者你的语气要求是否被满足。你需要自己的评估套件——而大多数团队只有在第一次痛苦的退化之后才会构建它。

在上线前检测退化

这里的基本原则是将模型升级视为软件依赖升级:不运行测试套件就不上线。挑战在于构建那个测试套件。

构建黄金数据集。 从你的生产流量中取 50–200 个有代表性的输入,最好涵盖你的产品处理的各类用例的分布。包括之前让你踩坑的边界情况。对于每个输入,创建一个参考输出或一组好的输出必须满足的标准。这个数据集就是你的回归基准。

使用统计检验。 主观比较("我测试了 10 个提示,感觉变差了")是噪音。McNemar 检验是正确的工具:给定在相同输入上评估的两个模型,它检验性能差异是否具有统计显著性。研究表明,这种方法在适当的样本量下可以检测到低至 0.3% 的准确率下降。在每次模型升级前运行它。

分别追踪能力维度。 聚合准确率分数掩盖了模型能力的异质性。按任务类型分拆你的评估:指令遵从、格式一致性、语气一致性、事实准确性、推理质量。一个模型可能在事实准确性上提升,而在指令遵从上退化——聚合评分会掩盖这一点。

运行影子模式。 在将生产流量切换到新模型之前,同时运行两个模型。记录两者的输出,对照黄金数据集评估两者,比较分布。输出长度、格式或词汇的差异通常是行为变化的先行指标,这些变化最终会体现在面向用户的质量指标上。

主要提供商的模型版本控制实践在这里很重要。当你引用滚动别名(如 gpt-4claude-3-5-sonnet)而不是特定快照版本(如 gpt-4-0125-preview)时,你选择了可能在不通知的情况下改变行为的自动更新。对于生产系统,固定到快照标识符并有意识地进行升级。

通过激发恢复被抑制的能力

一旦确定了退化,第一直觉是升级到更强大(也更昂贵)的模型,或者追求微调。两者通常都没有必要。因为能力是被抑制而非缺失,更好的激发通常能恢复它。

少样本示例作为行为锚点。 如果你需要模型产生自信的、不加修饰的断言,就在提示中展示自信的、不加修饰的断言的示例。上下文示例创造了一个模型对齐的分布。三到五个精心选择的示例通常优于大量的系统提示工程。关键是示例要演示格式、语气和词汇——而不仅仅是内容。

针对被抑制行为的明确反指令。 如果模型在添加不请自来的警示语,系统提示中类似"除非明确要求,否则不要添加警示语、限定词或不确定性语言"的指令可以部分抵消 RLHF 的回避倾向。这之所以有效,是因为指令比导致抑制的梯度更具针对性——你在添加一个竞争信号。

角色框架。 为模型指定一个领域专家角色(不是通用的"有帮助的助手"角色,而是像"资深金融分析师"或"审查代码的首席工程师"这样的具体角色)对果断性和词汇有可测量的影响。模型会借鉴其对该角色如何沟通的表征。

角色扮演安全前的版本。 更激进地,提示模型像"在过度思考之前"或"不添加不必要的警示语"那样回应,已被证明有效。这利用了安全训练并未完全覆盖早期行为模式的事实——它抑制了这些模式,而你在要求模型访问抑制前的状态。

带示例的格式规范。 对于格式退化,具体展示你想要的确切输出结构,比用散文描述格式更可靠。一个会覆盖你的 JSON 模式描述的模型,在你展示一个填好的示例时往往会遵从。示例创造了一个与内化格式偏好竞争的锚点。

温度和采样参数。 更高的温度增加了多样性,有时可以浮现模型在默认采样中向下加权的被抑制行为。反直觉地,对于能力激发(而非随机性),尝试 0.7–1.2 范围内的温度,可以恢复模型在接近零温度时抑制的行为。

团队的系统化方法

更广泛的教训是,"更新的模型 = 更好的产品"是供应商的营销主张,不是工程前提。基准性能与生产性能之间的差距是真实存在的,随着安全训练变得更加复杂,这一差距也越来越难以弥合。

处理得好的团队有几个共同的做法:

他们维护特定于生产的评估套件,测试其产品实际依赖的行为,而不是通用的推理质量。这些套件自动对任何被考虑的模型版本运行。

他们将模型版本视为基础设施版本——进行分阶段发布、回归门控和回滚计划。未通过评估套件的模型升级不会上线,无论新模型在第三方基准上表现多好。

他们将激发作为工程工作进行投资。提示被版本化、测试,并在模型行为改变时迭代。这是一种技能——能够系统地从新模型中恢复被抑制能力的团队,相对于将提示视为配置字符串的团队,拥有持久的优势。

最后,他们维护回归日志:记录模型版本之间哪些行为发生了变化、哪些激发技术恢复了它们,以及哪些仍无法恢复。这个日志是机构记忆,让未来的升级更快、更少痛苦。

能力激发差距不会消失。随着前沿模型接受更广泛的对齐训练,它可能还会扩大。将其视为一等工程问题——配备测量、工具和系统化恢复流程——的团队,将花费更少的时间为此感到惊讶。

Let's stay in touch and Follow me for more thoughts and updates