ARTICLE / ai
ASI-Bench 本地横评方法论:信息梯度与决策归因评测的完整拆解
导读:给普通读者的一句话定位——这不是一篇讲某个新模型的文章,而是一篇讲"怎么科学地评测本地模型"的方法论文。当你手上有两个本地模型,想知道"谁更聪明、谁更会自己想办法",凭感觉跑几轮对话下结论是远远不够的。本文记录一套完整的本地化横评方法论:用信息梯度(Information Gradient)与决策归因(Decision Attribution)两个维度,把"模型能否自己想到正确方法"这件事量化出来,并在两个本地模型(35B MoE 与 27B chat)上完成了 40 次跑通的实测。文中包含实验设计、完整数据表、以及三个最容易被忽略的方法论陷阱——这些陷阱不避开,你的评测结果就是假的。
一、为什么值得关注:本地模型评测的三个困境
本地模型用户越来越多,但评测方式普遍停留在"聊几句看看感觉"。这种评测在三个层面都是失效的:
- 分数趋同:常规问答、代码题上,主流本地模型的表现差异很小,分数都接近满分,无法区分真实能力差距。你测了半天,结论是"都差不多"。
- 凭感觉选型:没有量化指标时,选型决策依赖印象分——谁的回答更流畅、谁的界面更好看,最后选出来的未必是能力最强的。
- 无法验证"自主性":普通评测给足上下文和提示,模型只需要"执行";但真实使用场景里,模型经常要在没有明确提示的情况下自己找到方法。这种"自主发现问题解法"的能力,普通评测根本测不出来。
信息梯度评测正是冲着第三个困境去的:它不问你"模型答对没有",而问"模型在多大信息量下才能答对"。同一个任务,从完全不提示(B1)到逐步引导(B4),信息量逐级增加——模型越早能在低信息量下答对,说明它越"会自己想办法"。这才是区分本地模型真实能力差距的标尺。
二、核心概念:信息梯度与决策归因
2.1 信息梯度(Information Gradient)
信息梯度的思想是把"提示信息量"当作自变量,把"任务完成度"当作因变量,画出一条曲线。评测时把同一个任务拆成多个等级,每个等级提供不同密度的提示:
- B1(无方法提示):只给任务描述,不给任何解题方向。
- B2:给少量线索,比如提示"考虑数学化简"。
- B3:给更具体的引导,接近给出方法框架。
- B4(逐步引导):给出完整的逐步引导,几乎等同于手把手教。
曲线越陡峭,说明模型对提示的依赖越重;B1 就能拿高分,说明模型完全自主。两模型对比时,“谁在 B1/B3 这种低信息量下表现更好"才是真实能力差别的体现。
2.2 决策归因(Decision Attribution)
信息梯度回答"能不能”,决策归因回答"怎么想到的"。评测不仅要看分数,还要看模型的解题路径:它选用的方法是从哪里来的?是任务里明示的,还是自己推导出来的?
在本次横评里,决策归因通过"方法选择"来观察:模型在无方法提示下,是否自己想到了该领域正确的解题范式。比如在矩阵特征值任务里,模型是否自己想到用迹(trace)与行列式(det)的闭式公式;在动力学参数拟合任务里,模型是否自己想到用 OLS 线性回归。这些"方法是否自主涌现"的信号,是决策归因的核心证据。
三、实验设计:N 任务 × M 模型 × 4 level 矩阵
单任务评测没有说服力,这是横评的第一原则。本次实验采用完整的矩阵设计:5 个任务 × 2 个模型 × 4 个信息等级,共 40 次跑通。
3.1 任务集(5 个)
任务选取覆盖了数值计算、线性代数、物理建模、动力学拟合等不同数学领域,避免单领域偏差:
- sum_squares_formula:平方和公式推导类任务。
- harmonic_series_partial_sum:调和级数部分和计算。
- matrix_2x2_eigenvalues:2×2 矩阵特征值求解。
- simple_pendulum_period:单摆周期计算(需要高阶精度)。
- first_order_reaction_fit:一级反应动力学参数拟合。
3.2 模型集(2 个)
- qwen3.6-nothink:latest:35B MoE(混合专家)模型,非思考模式。
- qwen3.8:27b-chat-64k:27B 稠密模型,64K 上下文版本。
选择这两个模型对比的意义在于:一个是 MoE 架构、一个是稠密架构;一个偏快速响应、一个偏深度推理。用同一套评测矩阵,可以直接回答"架构差异是否带来自主推理能力差异"。
3.3 等级设计与运行方式
每个任务在每个模型上跑 B1→B4 四个等级,输出按任务分组记录,并产出三张关键图:B1→B4 能力曲线、B1→B3 跌幅分解、B3 逐任务热力图。三张图分别回答三个问题:整体能力随信息量如何变化、去掉部分引导后哪个任务最受伤、每个任务在中等信息量下的表现分布。
四、实测结果:两个本地模型谁更"会自己想办法"
40 次跑通的完整结果如下(数值为信息梯度评测得分,满分 100):
| 模型 | B1 | B2 | B3 | B4 | drop(B1→B3) |
|---|---|---|---|---|---|
| qwen3.6-nothink(35B MoE) | 100.00 | 100.00 | 100.00 | 100.00 | 0.000 |
| qwen3.8:27b-chat-64k | 100.00 | 100.00 | 99.97 | 100.00 | 0.028 |
两个最直接的发现:
- 低信息量下两者都接近满分:B1 无任何方法提示时,两个模型都能直接给出正确答案,说明这类任务对这两个模型来说都不构成挑战——它们的自主解题能力都足够强。
- 唯一的显化梯度出现在 B3:qwen3.8:27b-chat-64k 在 B3 等级拿到 99.97 分,drop 0.028。这个看似微小的落差,恰恰是整次评测中最有价值的数据点。
4.1 唯一显化梯度的解剖:simple_pendulum_period
把 B3 的分数差拆开看,问题出在单摆周期任务上:该任务 B3 得分为 99.86。模型的答案已经相当出色——它自主实现了椭圆积分计算,给出周期近似值 T_approx = 2.006067(6 位有效数字);而参考答案要求 10 位精度,期望值是 2.0060666807。两者在 6 位以后出现差异,精度差约 0.0000003,因此扣了 0.14 分。
这个案例的价值在于:模型不是"不会做",而是"精度不够"。它在方法选择上完全正确(椭圆积分是正确的物理方法),输在了数值精度这种执行细节上。这提醒我们,评测分数差距背后往往藏着不同性质的原因——方法错误是能力问题,精度不足是执行问题,两者不能混为一谈。
4.2 决策归因信号:方法自主涌现的证据
除了分数,决策归因观察到了清晰的方法自主信号:
- matrix_2x2 任务:两个模型在无方法提示下都自己想到了用 trace/det 闭式公式求解 2×2 矩阵特征值,而不是盲目套用通用数值迭代法。
- first_order_reaction_fit 任务:模型自主选择了 OLS 线性回归来做动力学参数拟合,而不是用更复杂的非线性优化——方法选择合理且高效。
这些信号说明:对这两个本地模型来说,“无提示自主发现正确方法"已经是可以稳定复现的行为,而非偶然。评测的价值不只是打分,而是把这些行为证据系统性地记录下来。
五、方法论陷阱:三个不避开就白测的坑
这一节是本次横评最有复用价值的部分。三个陷阱任何一个踩中,你的评测结果都是失真甚至相反的。
5.1 陷阱一:reference generator 污染(梯度被抹平)
这是最隐蔽也最致命的陷阱。如果任务的目标答案是用同一段 reference 代码生成的,那么模型只要写出和 reference 差不多的代码就能拿 100 分——因为判分依据和出题依据是同一套逻辑,模型"抄"到形似即可满分。结果是:所有模型在所有等级都满分,信息梯度被彻底抹平,评测失去区分度。
修复方法:给简单任务强制加精度要求。参考答案用高精度(如 10 位有效数字)计算,模型只答 6 位就扣分;同时 reference 算法本身也用同样的高精度标准。这样即使模型复现了方法,也要在精度上实打实追平,梯度才重新显现——本次评测里 simple_pendulum_period 的 0.14 分落差,正是靠这个设计才暴露出来的。
5.2 陷阱二:容差设计两难
容差(tolerance)直接决定判分的松紧:
- 容差太松(如 1e-4):模型 0.0001 量级的误差会被漏判为正确,梯度消失。
- 容差太严(如 1e-7 以下):对部分任务(如单摆周期这类依赖数值积分精度的任务)过于苛刻,模型方法正确但精度达不到就被扣分,造成"误伤”。
本次实测的结论:1e-5 到 1e-7 的容差区间对大部分任务够严且合理,但单摆类任务在容差 1e-4 时就会出现 0.0001 级误差漏判。设计评测矩阵时,容差必须按任务类型差异化设置,而不是全任务统一——物理数值类任务与方法推导类任务对精度的敏感度完全不同。
5.3 陷阱三:单任务 pilot 无说服力
初版 pilot 只跑了 1 个任务,结果根本没有横评价值——单任务满分既不能说明模型能力强,也不能说明评测设计合理。横评的最低门槛是"多任务 × 多模型"矩阵:本次用 5 任务 × 2 模型 × 4 等级共 40 次跑通,才勉强具备结论的稳定性。任务太少,任何结论都可能被单任务特性带偏;模型太少,任何对比都只是个案。
六、评测工具链的工程坑:三个让数据失真的 Bug
除了方法论,评测工具链本身也埋着雷。本次横评在补实验时连续排查出三个评测 Bug,任何一个都会让存档数据失真,而且症状极具迷惑性。
6.1 流式截断假象
现象:11 道题里 9 道输出都"停"在约 600 字符、看不到最终答案,误判为模型内部 max_tokens 限制导致截断。真相:评测脚本的流式累积逻辑只在换行边界 flush 文本,chunks 没有完整拼接,看起来"短"其实是累积不完整。修复方式是不依赖流式累积,改用一次性完整输出,或把响应文本全部拼接后再统一解码与收尾。这类假象的教训是:先怀疑评测管线,再怀疑模型——输出异常时不要急着下"模型能力不行"的结论。
6.2 评分器正则误判
现象:模型输出里出现 “C1: (3,3), C2: (4,4), C3: (5,5)…This matches option A. A”,评分器用正则找第一个 [ABCD] 字母,结果匹配到了变量名 C1 里的 C,把正确选项 A 判成 C,答案误判为错误。
修复:评分逻辑跳过"纯字母后跟数字"的 token(变量名 C1/C2 这类),优先匹配最终答案标记,比如 \boxed{A}、行首独立的 A、或者 “Answer: A” 这种明确格式;兜底再找行尾独立的选项字母。评分器是所有评测数据的最终裁判,它的一个正则漏洞就能让整批结果失真。
6.3 EOS token 混淆
现象:默认的 eos_token_ids 集合被错误地 patch 成只剩一个终止符,导致带思考模式的模型输出无法在正确位置截断——思考模式的模型用另一个 token 作为对话终止符,必须保留它才能正确截断输出。这类配置错误会让"输出长度异常"和"内容不完整"同时出现,进一步污染后续所有数据。
七、常见误区:对照组设计不变量就白跑
本次补实验的起因,是网友质疑之前一篇评测文章"4bit 量化下损失无法区分是关闭推理还是量化导致"——对照组没有控制变量。这正是评测最常见的误区:同时改变两个变量,结论就无法归因。
正确做法是同一量化档位下开/关推理的对照(8bit_off vs 8bit_medium),而不是拿 4bit_off vs 8bit_off 混谈——后者同时变了量化和推理两个变量,任何差异都无法归因。这个原则和信息梯度评测一脉相承:要测"提示信息量"的影响,其他一切(模型、量化、温度、采样参数)必须保持不变;要测"量化"的影响,推理设置必须保持不变。变量控制是评测科学性的地基,地基不稳,上面的一切数据都是空中楼阁。
八、总结:给本地模型用户的三条建议
- 评测要测"自主性"而不只是"正确率":信息梯度设计(无提示 → 逐步引导)能测出普通评测测不出的能力维度。B1 低信息量下的表现,才是模型真实推理能力的反映。
- 评测矩阵是底线,不是加分项:至少多任务 × 多模型,单任务 pilot 只能用于调通流程,不能用于下结论。同时要防住 reference 污染、按任务类型差异化设置容差。
- 工具链可信,数据才可信:评分器、流式累积、终止符配置这些"看不见的环节"最容易埋雷。评测结果异常时先排查工具链,再质疑模型;对照组设计必须单变量。
本次横评的两个本地模型(35B MoE 与 27B chat)在信息梯度维度上表现接近,自主解题能力都已稳定涌现——对于日常本地部署选型,可以放心把"自主方法发现"当作这两个模型的默认能力;真正的能力差距,需要引入更难的任务集(更高阶数学、更长推理链、真实工具调用场景)才能进一步拉开。