manifest.json
三种
刻意没有第四种,尤其没有「内置」这一种。
为什么平台永远不做 verifier
为什么平台永远不做 verifier
上一次这个仓库长出内置打分器时,它写了自己的一套仿真流水线、带自己的权重,
得出的判断和评测侧不一致,最后整块被回滚。住在控制平面里的 verifier,无论一开始多小,都会成为「什么算对」的第二个定义——
而这两个定义恰恰会在最要紧的时候分歧。
契约
无论哪一种,解析出来的 verifier 在平台侧长得都一样:- rubric
- plugin
- endpoint
prompt、摊平后的轨迹文本,
以及任务的 reference(如果有)。轨迹的摊平是平台替你做的——字符串保持原样,消息对象取它的 content 或 text,
列表则拼接起来。各家 harness 形状不同,而 verifier 的契约关心的是「模型产出了什么」,
所以这层折叠在这里做一次,而不是压给每个作者。验证失败是错误,永远不是零分
这是写 verifier 的人最需要记住的一条,理由值得说白: 一个被悄悄归零的 reward,和「答案确实是错的」无法区分。 一次训练如果 verifier 在第 400 步悄悄坏掉,reward 曲线会继续产出、 继续看起来合理,并在这个作业剩下的几个小时里用噪声教模型。 所以在你自己的 verifier 代码里:VerificationError 并带上失败的那个 ref,所以作业日志能说清是哪个 verifier 停下的、为什么。
怎么选
选 rubric
对错是判断问题时——质量、语气、一段解释是否站得住。
也适用于「想让同一份标准同时用于训练 reward 和评测分数」。
选 plugin
对错可计算,且计算便宜、在本地就能做:精确匹配、一个 parser、一个单元测试。
选 endpoint
已经有东西在做这个判断了——编译服务、仿真器、内部评分系统。
不要在插件里把它重新实现一遍。