把评判逻辑蒸馏为程序:面向可扩展评测的程序蒸馏 Codifying the Judge: Scalable Evaluation via Program Distillation
将LLM评判逻辑蒸馏为可执行程序委员会,兼得低成本与高准确率。
前置知识
LLM-as-a-Judge (大模型即评判器)
把一个大语言模型当作自动评测器,向其输入查询 $q$ 与两个候选回复 $r^{(1)}, r^{(2)}$,由模型输出偏好判决或评分。它被广泛用于成对偏好标注、奖励模型蒸馏和强化学习反馈,是现代训练管线的核心模块,常用模型如 GPT-4.1、GPT-5 Thinking、OLMo-2、Qwen2.5 等。
本文的所有改进都是相对于 LLM-as-a-Judge 这个基线来衡量的:成本、延迟、不透明、系统性偏差这四点正是作者要解决的痛点,理解了它才能看懂 PAJAMA 为什么要把评判逻辑从模型推理搬到程序执行。
弱监督 / 标签模型 (Weak Supervision, Snorkel)
弱监督通过聚合多个有噪声的标注函数(labeling function)产生的伪标签来构造数据集。核心是一个生成式标签模型,它只根据各标注函数在样本上的同意/反对模式来估计每条函数的准确率,并给出一个概率化的联合标签,典型框架是 Snorkel。
PAJAMA 把每个合成的程序视作一个标注函数,用投票矩阵 $L \in \{-1,0,+1\}^{N \times k}$ 输入标签模型来学习每个程序的聚合权重——这是 PAJAMA 把多个程序判决合并成一个可信判决的核心机制,必须先理解弱监督才能读懂 §3.3。
奖励模型蒸馏 (Reward Model Distillation) 与 Bradley–Terry
用已有的偏好标签(来自人类或更强模型)训练一个小模型作为奖励模型,使其能给任意回复对打分。常用训练目标是 Bradley–Terry 损失 $\mathcal{L} = -\log\sigma(r_\theta(x, y_w) - r_\theta(x, y_l))$,其中 $y_w, y_l$ 分别为偏好与不偏好的回复,目的是让奖励差与偏好概率挂钩。
论文在 §4.3 把程序判决当作奖励模型的训练信号,与 GPT-4 标签在 RewardBench 上对比。要看懂 Table 1 里"50× 更便宜却更强"的结论,就必须理解奖励模型蒸馏的输入是偏好对、输出是标量奖励这一基本流程。
路由 / 帕累托前沿 (Routing, Pareto Frontier)
在多个评测器(程序、不同规模 LLM)之间,根据样本的难度/置信度把请求分派给最合适的评测器,称为路由。帕累托前沿指在准确率—吞吐量二维平面上,任何一个点都无法在不牺牲另一指标的前提下同时改进两指标的所有点的集合,是衡量"权衡是否被推进"的标准工具。
论文 §4.1–4.2 几乎所有结论都是用"推进帕累托前沿"来表述的:程序委员会独占高吞吐量区域,再经路由把不确定样本交给 LLM 形成混合前沿。理解这个概念才能看懂 Figure 3、4、5 的横纵轴含义。
RewardBench
一个公开的奖励模型基准,把测试样本分成 Chat、Chat Hard、Reasoning 等多个类别,用准确率衡量奖励模型在偏好判别上的泛化能力,是衡量奖励模型质量的标准排行榜。
Table 1 的核心结论"程序蒸馏的奖励模型在 RewardBench 上优于 GPT-4 标签训练的奖励模型"正是基于 Chat/Chat Hard/Reasoning 三个子类的准确率。要知道这个基准才能判断 +1.67、+4.49 的提升是否显著。
研究动机
LLM-as-a-Judge 已成为现代机器学习管线中自动评测的事实标准,被用于成对偏好标注、奖励模型蒸馏以及强化学习反馈,但作者指出它有四个难以回避的根本性缺陷。第一是推理成本:在评估数百万样本时,调用 GPT-5、Gemini-3-Pro 这类专有模型的 API 费用会变得不可承受,开源部署虽无 API 账单但延迟和 GPU 占用仍很高。第二是决策不透明:LLM 虽能给出理由,但内部决策过程是黑箱,难以验证判决是否真的依赖所陈述的推理还是来自幻觉。第三是系统性偏差:LLM 评判器对冗长、富格式、情绪化措辞等表面风格敏感,会系统性地偏向这些特征而忽略真实质量。第四是重推理税:现有 prompt 流水线很不灵活,仅修改一条评分准则(rubric)就要在整个数据集上重新跑一遍推理,造成巨大的冗余开销与算力浪费。
本文的目标是作者的目标是用一种简单高效的替代方案从根本上消除上述四个缺陷:不再在评估时反复调用 LLM,而是把它在合成时一次性使用的判决逻辑蒸馏成一个可执行程序的委员会,由这些程序直接对候选回复打分。这些程序化评判器应当同时具备透明(可逐行检视、可人工编辑)、零单样本 API 成本、低延迟执行三大性质。在此基础上,作者进一步希望系统能在准确率上匹配中等规模 LLM 评判器、在成本上远低于专有模型标注,并能作为更便宜的奖励模型训练信号源。
与已有工作不同的是,现有工作要么停留在"用更强的 LLM 当评判器",要么用路由在不同 LLM 之间做分派,都仍把评测绑定在模型推理上。作者的独特切入角度是把弱监督(weak supervision)这一原本用于"聚合标签函数构造分类数据集"的范式,迁移到一个全新用途——把多个程序化评判器的投票建模成一个联合评测判决,并据此推导出置信度路由信号。这与"程序合成评测"的最朴素想法(只让 LLM 生成一个通用程序)也不同:作者显式设计 10 条互异的评测准则、用相似度过滤保证多样性、用阈值化投票实现弃权、再用标签模型学习每程序的权重,最后只把不确定样本交给 LLM,形成程序与 LLM 互补的混合系统。
核心方法
PAJAMA(Program-As-a-Judge Automated Model Assessment)的整体思路是"一次合成、本地复用":把 LLM 当作一次性的程序合成器,而不是逐样本的评判器。给定查询 $q$ 与两个候选回复 $r^{(1)}, r^{(2)}$,先用合成 prompt 让 LLM 生成若干 Python 函数 $f_j$,每个函数接收 $q$ 与回复并返回一个标量分数,分数越高代表质量越好。随后对程序输出做归一化与阈值化得到离散判决 $v_{ij} \in \{-1, 0, +1\}$,再用弱监督标签模型把多个程序的投票聚合成一个联合判决。对那些所有程序都弃权或聚合后验概率接近 0.5 的不确定样本,利用程序内部的信号(投票方差或后验概率)做路由,仅把这部分样本升级到 LLM 评判。整套系统在合成阶段只调用一次 LLM,在评估阶段绝大多数样本都由本地程序秒级完成,从而同时拿到透明性、低成本和接近 LLM 的准确率。
核心创新点在于把"评判逻辑"本身作为可蒸馏的对象:与其让 LLM 对每个样本推理一次,不如让它把评判时采用的判据(例如逻辑连贯性、主题一致性)显式地写成可读、可改的 Python 代码。这与已有方法的本质区别有三:其一,评测成本从随数据集线性 $O(n)$ 降到一次性合成的常数 $O(1)$,因为程序合成后可在本地无限复用;其二,判决过程完全可审计,研究者可逐行检视、编辑甚至注入领域知识,把"模型黑箱评估"变成"可形式化验证的过程";其三,路由信号来自程序内部(投票方差、聚合后验)而非额外训练的分类器,因此几乎零额外开销,且与已有的 model-free/model-based 路由方法形成鲜明对比。
方法步骤详情
方法分四步。第一步合成与多样化:用 Claude Opus 4.6 一次性合成 80 个候选程序,合成时从 10 条互异评测准则随机选一条插入 prompt 并过滤重复逻辑;每程序 $f_j$ 接收 $q,r^{(1)},r^{(2)}$ 返回标量分数 $s_{ij}^{(1)}=f_j(q_i,r_i^{(1)})$。第二步校准:min-max 归一化到 $[0,1]$,算质量差 $d_{ij}=\hat{s}_{ij}^{(1)}-\hat{s}_{ij}^{(2)}\in[-1,1]$,用阈值 $\tau_j\geq0$ 转离散判决 $v_{ij}$:$d_{ij}>\tau_j$ 投 $+1$、$d_{ij}<-\tau_j$ 投 $-1$、否则弃权 $0$;$\tau_j$ 在 500 样本验证集上选取。第三步聚合:丢弃验证准确率低于 50% 的程序,按准确率取 top-$k$,投票收成矩阵 $L\in\{-1,0,+1\}^{N\times k}$,用标签模型学聚合权重。第四步路由:所有程序弃权或后验接近 0.5 时,把样本升级到 LLM,形成混合的评测系统。
技术新颖性
技术新颖性可归为四点。第一,首次把弱监督从"构造分类数据集"扩展到"评测判决建模":每个程序即一个标注函数,标签模型负责在多程序冲突中给出概率化判决,这是把标签聚合技术迁移到评测场景的范式创新。第二,显式的弃权机制(阈值 $\tau_j$ 与 $v_{ij}=0$)让每个程序能主动在信号弱时沉默,显著提升单程序投票的可靠性,而不是被迫给出噪声判决。第三,置信度路由完全复用程序内部信号(投票方差、聚合后验),与需要额外训练 BERT 分类器的 model-based 路由或基于最近邻的 model-free 路由不同,几乎零额外开销,这使整条混合前沿"免费"推进。第四,把评测的透明性提升为可编辑性:作者用编码 agent(Claude Code)针对具体偏差类型(如富内容偏差)直接改写程序代码(删除对编号列表、项目符号、冒号标题的加分),实现"偏差即 bug、可打补丁"的新范式,这是不透明的 LLM 评判器无法做到的。
实验结果
实验在 5 个偏好数据集(JudgeLM、PandaLM、MultiPref、Prometheus、Preference-700K)与 4 个模型家族上展开,每集合 80 个程序。C1 准确率与吞吐:程序委员会平均 78.11%,与 OLMO-2-13B、QWEN2.5-3B 持平,距 GPT-5 Thinking(85.72%)约 8 点;Prometheus 上仅 8 程序达 88.78% 追平 OLMO-2-7B;比最小 GEMMA-3-270M-IT 快 2.12×,相对 14B/12B 大模型约快 50×。C2 路由:OLMO-2-7B 上聚合后验路由比纯 LLM 提升 +5.0% 准确率且 2.9× 吞吐,QWEN2.5-3B 提升 +2.6%、2.2× 吞吐。C3 奖励蒸馏:程序重标 20000 对训练 QWEN2.5-3B,RewardBench 平均比 GPT-4 标签高 +1.67/+4.49,成本由约 $363.97 降到 $7.21。C4 抗偏差:PAJAMA 平均翻转率最低,校准后富内容类翻转率再降 9.39%。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 5 个偏好数据集上的成对评测(平均) | 准确率 / 吞吐量 | 程序委员会准确率 78.11%,比 OLMO-2-13B 快 47.25× | OLMO-2-13B-INSTRUCT、QWEN2.5-3B-INSTRUCT 平均 ~78% | 匹配 13B 级 LLM 准确率,吞吐量高出近两个数量级 |
| Prometheus 成对评测 | 准确率 | 仅 8 个程序即达 88.78% | OLMO-2-7B-INSTRUCT | 用极少量程序追平 7B LLM 评判器 |
| OLMO-2-7B 混合评测(路由) | 准确率提升 / 吞吐量比 | 聚合后验路由: +5.0% 准确率, 2.9× 吞吐 | 纯 LLM-only 评测 | 在相同 LLM 上同时拿到更高准确率与更高吞吐,推进帕累托前沿 |
| Qwen2.5-3B 混合评测(路由) | 准确率提升 / 吞吐量比 | +2.6% 准确率, 2.2× 吞吐 | 纯 Qwen2.5-3B LLM 评测 | 证明路由优势在多模型家族一致成立 |
| 奖励模型蒸馏(RewardBench, Prometheus 训练源) | RewardBench 平均分 / API 成本 | 平均 56.65, 成本 $7.21 (50× 便宜) | GPT-4 标签训练: 平均 54.98, 成本 $363.97 | 平均分 +1.67,标注成本下降约 50×,O(1) vs O(n) |
| 奖励模型蒸馏(RewardBench, JudgeLM 训练源) | RewardBench 平均分 / API 成本 | 平均 61.77, 成本 $6.49 (45× 便宜) | GPT-4 标签训练: 平均 57.28, 成本 $296.37 | 平均分 +4.49,Reasoning 与 Chat 类提升最大 |
| 抗偏差(平均翻转率 FR) | Flip Rate (%) | PAJAMA 12.09%,校准后 7.60% | OLMo-2-13B 20.14%, Qwen2.5-7B 18.33% | PAJAMA 平均翻转率最低;编码 agent 校准后再降 4.49 个绝对点 |
局限与改进
作者承认的局限主要在覆盖与精度之间:尽管选取的程序覆盖率达 95% 以上,仍有少量样本所有程序都弃权需要随机猜测或交给 LLM;oracle 路由与内部信号路由之间仍存在差距,说明投票方差和后验概率等现有信号还不够丰富。从我的观察出发还有几点:其一,评测只在偏好判别(pairwise preference)这一类任务上展开,对开放式评分、多准则加权排序、需要生成性理由的任务未做验证;其二,程序合成的种子是 10 条人工策展的准则,这套准则的设计本身可能引入偏差,论文未讨论准则数量与质量对最终判决的敏感度;其三,校准阶段需要 500 样本验证集来选 $\tau_j$ 与 top-$k$,对无标注数据或域外数据可能不适用;其四,所有程序依赖 Python 执行与固定特征(如 TF 向量余弦相似度),对涉及复杂推理、代码执行或工具调用的回复,简单文本特征可能不足以判定质量。
独立分析的弱点
我从独立视角看到几个可改进的弱点。第一,程序多样性依赖人工策展的 10 条准则,且用文本相似度过滤来判断"逻辑重复"——这种基于源码相似度的方法无法识别功能等价但写法不同的程序,改进方向是引入语义指纹或行为等价测试。第二,弱监督标签模型假设各程序的条件独立,而同一 prompt 批次生成的程序往往相关性较高,会削弱标签模型估计的可靠性,可考虑学习程序之间的相关性结构。第三,程序判决本质上是基于浅层文本特征(词频、长度、相似度)的启发式,对真正需要深度推理的样本可能系统性失效,可把程序扩展为"LLM 增强型"——允许程序在必要时调用小模型做一次局部推理,再回退到本地执行。第四,校准只在单一验证集上选 $\tau_j$ 与 top-$k$,跨域泛化未验证,可改为在线自适应校准。
未来方向
作者明确指出 oracle 路由与内部信号路由之间存在差距,建议从程序委员会中提取更丰富的特征(超越投票方差与后验概率)来缩小它。基于本成果还可延伸几个方向:其一,把程序化评判器扩展到开放式打分、多轮对话、检索增强生成(RAG)等更复杂的评测任务,验证程序合成范式的边界;其二,把"程序可编辑"提升为自动化迭代——用编码 agent 在线监控偏差并自动生成补丁,形成自演化的评判系统;其三,把程序蒸馏与其他高效评测技术(如代理模型、蒸馏小评判器)结合,进一步降低成本;其四,研究程序委员会在分布偏移下的鲁棒性,建立程序的失效检测与回退机制。
复现评估
复现性总体较好。作者公开了源码、项目页面与 demo(链接见首页脚注),合成用的是 Claude Opus 4.6 等专有模型但只需一次性调用 80 个程序,硬件需求很低。评测数据集 JudgeLM、PandaLM、MultiPref、Prometheus、Preference-700K 均为公开数据,LLM 评判器(OLMo-2、Gemma-3、Qwen2.5)为开源权重可用 vLLM 部署;训练奖励模型基于 Qwen2.5-3B-INSTRUCT 与标准 Bradley–Terry 目标,配置见附录 C。需要指出两点障碍:一是程序合成依赖专有 LLM 且作者未完全公开所策展的 10 条准则之外的合成 prompt 细节(附录 A 给出),二是验证集 500 样本与 top-$k$、阈值 $\tau_j$ 等超参对最终准确率影响较大,不同数据集需重新选择,给完全一键复现带来一定门槛。
论文图表