预算对齐的评测

9 分钟读完

E11
深入解析 · 评估智能体

预算对齐的评测。

两个智能体、两个已发布的分数,而你没有一条诚实的路把它们排名——因为产出这两个分数的预算,是各自提交方自己挑的,而「准确率—预算」曲线会交叉。2026 年 10 月,有一个开放权重模型被报为在 Terminal-Bench 2.1 上以每次约 25,000 token 拿到 80.1%,而对手以约 80,000 token 拿到 81.0%:在排行榜上这是平局,在任何你真会上线的额度下都不是。解法是在测量之前先选定你的额度,因为一个分数是一个点,而你需要的是穿过这个点的那条曲线。

STEP 1

预算是框架上的一个旋钮,不是模型的一条属性。

每一个智能体基准结果,都是一个模型在一套脚手架里产出的,而脚手架决定了这个模型被允许花多少。四个旋钮几乎干完了全部的活,而四个都属于提交方、不属于权重:

  • 步数上限。在放弃这次运行之前允许多少轮工具调用。把它提高,就把超时变成了解题。
  • 采样。尝试几次,以及是否有一个核验器从中挑选。这是可用的最大的单个乘数。
  • 思考额度。在暴露了这个旋钮的模型上,是每一轮的推理预算——自适应思考与投入预算 里的那个旋钮。
  • 重试与修复策略。一个失败的测试会不会重新进入循环,以及可以进几次。

把这四个全都拧上去,几乎任何一个称职模型的分数都会上升——这正是 测试时扩展 的全部内容。所以一个已发布的数字是对三件东西的打分——模型、框架、预算——而常规排行榜只写了第一个的名字。智能体框架(harness) 给出的是这个论点的一般版本;本文专讲第三项,因为它是那个可以便宜地被对齐、而几乎从来没被对齐的一项。

实际后果是:一个没有预算一栏的排行榜,部分是在按「每支团队愿意花多少」给提交排名,而排在前面的每支团队都愿意花得很多。那既是一份能力排名,也是一份投入排名;而它不是你需要的那份,因为你会在一个没有哪次提交受过约束的额度下去部署。

STEP 2

曲线会交叉,所以一个点没法外推。

如果准确率是预算的一个固定单调函数,而且对每个模型形状相同,那么这种不匹配只是个麻烦、不是个缺陷:你在任何预算下排名都会得到同样的顺序。事实并非如此。有三种被充分记录的行为让这些曲线形状各异,而其中任意两种就足以产生一次交叉。

  • 提早饱和。一个较小的模型在几步之内就耗尽了它会做的事,然后开始打转,于是曲线很快走平。多给的预算买到的是重复,不是进展。
  • 后发回报。一个被训练成会使用长轨迹的模型,在对手早已停下的地方仍在继续爬——因此它在紧额度下更差、在松额度下更好。
  • 非单调。想得更多有时会降低准确率:把一个本来正确的早期答案说服掉,或者游荡进一个回不来的状态——测试时计算中的反向扩展。

按字面接受上面那对 2026 年 10 月的数字。两个模型在分数上差 0.9 分,在每次尝试的 token 数上差 3.2 倍。一个需要智能体在大约 30,000 token 之内完成的读者,没法从这两个数字判断该选哪个模型,因为第二个模型唯一公布的那个点坐在 80,000 上——而一个单点完全没有说,它在 30,000 处的曲线是落在 78% 还是落在 40%。问题不在于这场比较很接近,而在于这场比较根本还没有做。

这也是为什么「除一下就好了」这个回应会失败。「每千 token 得多少分」是在一个工作点上测出的两个数字之比,它暗含了一条过原点的直线,而没有任何智能体是这样的。这步算术看着像一次归一化,实际上是一个假设。

STEP 3

每解一题的成本描述一次提交;预算对齐约束一次提交。

普林斯顿的 HAL 是这个领域第一次真正的推动,HAL 与异步智能体评测 讲得很完整:把总花费除以已解题数,与通过率并排发布,于是采购团队能看见「领先三分,花了四倍的钱」。这件事要保留。但它不是预算对齐,而这个差别决定了两种器械各自能回答什么。

  • 每解一题的成本是描述性的、事后的。它测的是这次提交选择花了多少。两个条目完全可以在预算相差一个数量级的情况下并排发布;这个指标记录了那个差异,而不是消除它。
  • 预算对齐是规定性的、事前的。每个条目拿到同一个上限,而这个上限是你的。它回答「在我的约束下这些里面谁赢」,而这是部署决策唯一会问的问题。
  • 美元会漂移,token 与步数不会。一个每解一题成本的数字,部分是一句关于上个季度价格的陈述,而 token 价格每年都在按大倍数移动——价格通缩与每任务成本。请在一个物理预算上对齐,最后再换算成钱。

两个都用。用预算对齐来做决定,再把每解一题的成本报出来,这样下个季度可以不重跑任何东西就给这个决定重新定价。

STEP 4

对齐的三种做法,以及各自遮住了什么。

它们在成本和所遮住的东西上不同,而选哪一种取决于你是在挑一套要上线的配置,还是在挑一个要长期共处的模型。

硬额度

给每个候选同一个上限——token、步数、挂钟时间——并把撞上上限的运行判为失败。最便宜,也最忠于生产,因为生产也有上限,而一次被截断的运行对等着它的那个人来说就是一个失败的任务。它遮住的是「差多少」:一个差一步就成功的模型,与一个在第二步就迷路的模型得同样的分。如果你的额度是真的,那正是该遮住的东西;如果你只是在猜这个额度,那就是不该遮的。

等额花费

给每个候选同样的总预算,让它自己决定怎么花——多采几次、跑更长的轨迹,还是每轮想得更久。这同时测了分配能力和原始能力,而分配能力是一条真实的生产属性。它遮住的是花费的形状:八次并行尝试与一次长尝试花一样的钱,给用户的感受却完全不同,所以它需要与 度量智能体延迟 配对。

前沿式汇报

在三个或更多额度上给每个候选打分,发布曲线而不是一个点。三倍的成本,也是唯一能揭示交叉的方法——这意味着它是唯一能告诉你「你的额度放错了位置」的方法。对一个你要在上面搭产品的模型,值得;对一次每周回归运行,不值得。

# Budget-matched run, three caps. Truncation counts as failure.
CAPS_TOKENS = [20_000, 50_000, 120_000]

for model in candidates:
    for cap in CAPS_TOKENS:
        runs = harness.run(model, tasks, token_cap=cap, step_cap=40,
                           samples=1, on_exceed="fail")
        report(model, cap,
               pass_rate=runs.pass_rate(),
               p50_tokens=runs.quantile("tokens", 0.50),
               p95_tokens=runs.quantile("tokens", 0.95),
               truncated=runs.share("truncated"))

# Read the truncated share first. Above ~15% the cap is the ceiling,
# not the model, and the pass rates at that cap compare harnesses.

最后那一行是团队们会跳过的。如果有很大一部分运行在撞上限,那你测的是那个额度;把它往上挪,直到截断只占一小部分,然后再比较。

STEP 5

pass@k 是一种预算,而且是野外最常见的那种不匹配。

一个 pass@8 的数字是八次尝试那么多的花费。把它拿去和别人的 pass@1 比,是一次穿着「指标选择」外衣的预算不匹配,而且它是这个季度最可能出现在你被展示的某页幻灯片上的那种不匹配。由此有两个推论。

  • pass@k 要求一个你真的有的挑选器。这个指标在「任意一次尝试成功」时记一次解题,这假定了下游有东西能分辨出是哪一次。如果你的生产路径里没有核验器,pass@k 不是对你生产准确率的估计,而是一个你达不到的上界。而在确实存在核验器的地方,那套架构在 核验器引导的搜索。
  • pass^k 问的是可靠性,不是预算。k 次尝试全部成功的概率,才是「没有人在逐个检查」时要紧的那个量。它也更吵,而那是 评测方差与统计功效 的主题——并且预算对齐救不了你的方差。在任务数太少的情况下做一次预算对齐的比较,是对噪声的一次精确测量。

Best-of-n 加重排器、辩论、自一致性与反思循环,在这个视角下都是同一件事:花费上的乘数,它们属于你所对齐的那个预算之内,而不是之外。如果一个候选的配置里有一遍反思、另一个没有,那你在比较的是框架——只要你说出来,这是诚实的。

STEP 6

从你的产品里取额度,然后在那个额度下测量。

额度不是一个可以调到数字好看为止的评测参数。它是关于你正在造的那个东西的一个事实,而且在任何模型被选定之前就可以推导出来。

  • 从两个约束推导它。你的延迟预算给出一个挂钟上限;你的每成功任务成本上限除以你的 token 价格,给出一个 token 上限——那套算术在 智能体单位经济学。取两者中更紧的那个,并在看排行榜之前把它写下来。
  • 把三种预算分别上仪表。token、步数与挂钟时间在不同的时刻起作用,而一个又便宜又慢的智能体,其失败方式与一个又快又贵的不同——超时与截止预算。
  • 保留一条不设上限的对照臂作诊断。拿一小片任务把上限去掉跑一遍。设上限与不设上限的通过率之差,会告诉你到顶的是哪一边:差距大,意味着你的额度是天花板,工程任务是把循环做得更省;差距小,意味着模型是天花板,再多预算都没用。多数团队从来不知道自己身处哪一种情形。
  • 在评审里拒收裸分数。「基准上 84%」不是一个可汇报的结果。「在 50,000 token 额度下 84%,截断 6%,p95 为 41,000」才是。把这一对数字变成团队的行文规范,就像 批判性地读基准 把出处变成规范那样。

在你下一次模型比较之前做这件事:根据你的延迟与成本上限写下 token 额度与步数额度,在那个额度下把两个候选重跑一遍、并把截断判为失败,然后先看截断比例、再看通过率。在多数比较里,仅这一个改动就会把候选的顺序重排——而它比你原本打算做的那次无上限运行更便宜,因为额度把账单封住了。

相关:智能体评测中的人类基线(一个分数需要的分母)、2026 年基准全景(哪些测试还能排名出什么),以及 更少的 token vs 更便宜的 token(一次预算上的胜利走到账单上还值多少)。