Trutina 4B 技术报告
Trutina 4B 的读出方式、可变深度推理、训练数据、训练过程、概率校准与评测结果,并报告开发过程中未能奏效的方法。

摘要
Trutina 4B 是一个基于 Qwen3.5-4B 的类型化决策模型。给定一个状态(文本,可含图像)和一组是非题、选择题或等级题,它为每个选项输出概率,不生成文本。模型在所有线性层上训练 rank 16 的 LoRA,答案由固定位置上选项字母的 LM head logit 给出。第 12、16、20、24 层各有一个经过蒸馏训练的仿射出口,推理时可以在置信度足够的出口停止,否则从停止处继续计算。在 JevBench 公开集的 231 个任务上,模型满深度准确率为 87.4%;自适应模式平均使用 21.6 层,准确率为 86.6%。在 LocalLLaMA typed-decisions 零样本测试集上,准确率为 74.65%,KL 为 0.156。在单张 RTX PRO 6000 上,自适应模式的延迟中位数为 14.0 ms。在同一协议下比较的 6 个开源 4B 决策模型中,Trutina 在 LocalLLaMA、this-that 和 DecisionBench medium 上准确率最高;在 DecisionBench hard 上低于其中两个模型,也低于未经训练的基座模型。
本报告同时记录了开发过程中的负面结果。其中影响最大的一项是:最初在隐状态上新训练的判决头在 JevBench 公开集上只有 74.0%,低于未经训练的基座模型直接读取选项字母时的 79.7%。
1. 引言
决策模型接收一个状态和若干类型化问题,返回每个选项的概率。与通用对话模型以文本形式生成答案相比,它只需一次前向计算,输出可以直接设定阈值,延迟和成本都更低。本项目的目标是在 4B 参数量级内取得最好的结果,不以超过更大的模型为目标。
本报告的内容安排如下:
- 第 3 节描述最初的判决头方案、它在 MLX 上的训练实现,以及审计后放弃它的原因。
- 第 4 节描述读出方式:读取 LM head 上的选项字母,题目在输入前后重复呈现(下称 sandwich),超过 26 个选项时的锦标赛读出,以及几项训练消融。
- 第 5 节描述可训练的中间出口和自适应推理。
- 第 6 至 8 节描述训练数据、训练过程和概率校准。
- 第 9 节给出完整评测,第 10 节报告未奏效的方法,第 11 节描述部署,第 12 节讨论局限。
从第一次调研到发布 v3 共用了五天,各版本的时间如下:
| 版本 | 时间 | 读出方式 | 训练数据 |
|---|---|---|---|
| v0 | 第 1 天 | 新训练的判决头,Base 骨干 | 3.4 万题 |
| v1 | 第 2 天 | 同上,骨干截至第 24 层 | 13.5 万题(含图像) |
| v2 | 第 4 天 | 读取选项字母,加训练出口 | 26.1 万题 |
| v2.1 | 第 4 天 | 同上,加入视觉 | 16.4 万题(含 12 万回放) |
| v3 | 第 5 天 | 同上 | 12 万题(含 6.2 万回放) |
各版本在两个主要评测上的准确率(%)
JevBench 公开集(231 题)
LocalLLaMA(2,000 题,零样本)
2. 任务与评测协议
一个请求包含状态和以下类型的问题:
- 是非题(noul):输出”是”的概率;
- 选择题(choice):2 至 255 个选项,每个选项一个概率;
- 等级题(score):2 至 10 个有序等级上的分布,以及期望等级。
开发过程主要参考 JevBench v1.5 [1] 和 LocalLLaMA typed-decisions,两者的计分方式差异明显。
JevBench 是社区综合榜单,可下载的公开集有 231 个任务,分为 easy(48)、standard(72)和 hard(111,其中 17 个属于 judge 档)三档。其 Intelligence 分数由公开集与封闭集各占一半;judge 和 hard 两档合计占 70% 的权重;是非题的 P(是) 落在 0.2 至 0.8 之间时视为弃权并记为错误;等级题按分布的期望位置计算 nMAE;选择题使用 chance-corrected 准确率,校准项包括 ECE [2] 和与 gold 分布的 TVD。自托管系统的延迟按 ×2 + 0.15 s 调整后计入 Speed 轴,因此 10 ms 与 30 ms 在该轴上几乎没有差别。
LocalLLaMA typed-decisions [3] 包含 400 个案例、2,000 道题(等级题 800、选择题 600、是非题 600),涉及智能体轨迹监控、客服、发票和安全事件四类业务流程。其 gold 是一个约 4B 规模的教师模型在 temperature 0.7 下三次采样的平均分布,本身是软的;数据集说明给出的参考线包括:只按标签频率作答 0.470,按生成数据的潜在因子完美还原 0.704,教师自身的一致率 0.735。gold 最大概率的平均值只有 0.659,最大概率不低于 0.7 的题有 738 道。榜单同时报告准确率和 KL。我们的训练数据不包含这四类流程,该测试属于零样本设定。
DecisionBench [4]、this-that [5]、JudgeBench [6]、fast-decisions [7]、MASSIVE [8] 和 Decision Index 0.3 [9] 只用于评测,不参与训练(第 9 节)。
3. 早期方案:在隐状态上训练判决头
3.1 骨干探测
开发开始时,我们先在 M5 Pro(48 GB,MLX [10])上测量了 Qwen3.5-4B-Base [11] 的延迟和逐层表示。该模型有 32 层,Gated DeltaNet [12](线性注意力)与全注意力按 3:1 交替,非 embedding 参数 3.57B。
延迟与运行的层数严格成正比:200 token 的输入跑满 32 层为 89.7 ms,跑一半为 45.6 ms,每层约 0.85 ms。短输入受内存带宽限制,较长的输入受算力限制;4-bit 和 8-bit 量化反而使 prefill 变慢 15–25%。
在 ARC-Challenge [13] 和 MMLU [14] 上,逐层线性探针(冻结特征,训练逻辑回归)给出了以下结果:
冻结 Qwen3.5-4B-Base 各层的线性探针准确率
- ARC-Challenge(测试 1,172 题)
- MMLU(测试 1,500 题)
探针显示中间层已经足够,最后几层略有退化;在隐状态上训练的线性头比逐个选项打分高出近 30 个点。这两点构成了 v0 的设计依据。
3.2 判决头设计
v0 参照 Strands Decider 的 pointer head,去掉 LM head,在骨干隐状态上训练新的判决头。具体结构如下:
- 骨干冻结为 bf16,前 32 层的所有线性层加 LoRA [15](rank 16,scale 2);
- 出口位于第 16、24、32 层,每个出口用 ScalarMix 混合多层特征;
- 各出口共享一个置换等变的联合判决头(2 层,512 维),选项之间可以相互注意;
- 可训练参数共 38.2M;
- 损失为软目标交叉熵(label smoothing 0.05)加 0.5 倍 Brier 分数,等级题另加 RPS,三个出口权重相同。
3.3 在 MLX 中训练 Gated DeltaNet
Qwen3.5 的 Gated DeltaNet 层在 MLX 中无法直接训练:推理使用的 Metal kernel 没有反向传播实现,训练模式下的逐 token 回退实现需要为每个 token 保存一份 [B, 32, 128, 128] 的 fp32 状态,在 B=8、T=1000 时单层约需 16 GB。
我们参照 fla [16] 的 WY/UT 变换 [17]实现了分块的门控 delta rule。每 64 个 token 为一块,块内计算全部为矩阵乘法,块间只传递一份状态,内存约降为原来的 1/64,并且可以直接自动求导。
第一版用下面的乘积公式求块内三角矩阵的逆:
其中 对应块长 64。当相邻 key 高度相关时,展开项按二项式系数增长,真实数据在第一步即出现 NaN,随机数据上的测试却未能发现这一问题。改为逐级合并的分治求逆后,数值稳定性与前向代入相同。
训练按 token 总数组 batch(每个 micro-batch 不超过 8,192 个补齐后 token),不丢弃长样本。如果把单题长度截断在 1,024 token,被丢弃的样本集中在长上下文任务上(needle retrieval 丢失 36%),而验证集中只有 5.7% 的题超过 1,024 token,这一损失在指标上几乎看不出来。
3.4 v0 结果
v0 使用 1.95 万行、3.4 万道题,学习率 2e-4(预热 100 步,余弦衰减),在 M5 Pro 笔记本上训练到第 3,020 步(约 15 小时)后停止。这时的结果已足以评估该方案,后续训练改在云端进行。
v0 验证集准确率(716 题)
- 第 16 层出口
- 第 24 层出口
- 第 32 层出口
三个出口之间的差距在 1 个点以内。在 LocalLLaMA 上,v0 第 32 层的准确率为 64.2%,KL 为 0.292;未经训练的骨干读取 LM 标签概率时为 41.2%,KL 0.760。按题型看,等级题最弱(55.7%,当时榜首为 73.9%),是非题和选择题分别为 76.0% 和 63.8%。在答案明确的题上 v0 有 80.9%,失分主要集中在有争议的题上。出口之间的差距在 LocalLLaMA 上比在验证集上大:第 16 层落后第 32 层 3.2 个点。
3.5 v1:数据、训练特性与迁移到云端
针对 v0 的问题(缺少业务流程类状态、标签偏硬、等级题弱),v1 把文本数据扩大到约 10 万题,其中 81% 为教师模型给出的软标签(目标分布的平均熵为 0.38,即交叉熵的下限),并加入约 3.5 万道图像题。v1 还加入了以下训练特性:
- 每道选择题在预编码时固定一个随机排列,打乱选项顺序;
- 10% 的题去掉选项描述,只保留选项名;
- 判决头对状态 token 做交叉注意力,回读证据;
- 等级题使用有序(cumulative logit)参数化;
- 按来源加 16 个条件 token,推理时使用空 token;
- 浅层出口额外拟合最深出口的分布(权重 0.5,对最深出口 stop-gradient);
- label smoothing 只作用于硬标签,不再把教师的软分布推向均匀分布。
根据 v0 的结果,骨干截至第 24 层,出口改为第 12、16、24 层。
v0 在笔记本上约 330 tok/s,v1 的一个 epoch 需要 29 小时,因此 v1 改在 Modal 的 B200 上用 PyTorch 训练,训练代码与 MLX 版本逐参数对应。解决了 kernel 重复编译和 LoRA 精度转换等吞吐问题后,B200 的稳态吞吐约为 1.8 万 tok/s。
v1 在 B200 上训练 8,450 步(1 个 epoch,每步 16 题),学习率 2e-4:
v1 验证集准确率(3,933 题,含图像题)
- 第 12 层出口
- 第 16 层出口
- 第 24 层出口
v1 的 LocalLLaMA 准确率为 68.7%(第 24 层),KL 0.192;第 12 层出口(65.0%)已超过 v0 跑满 32 层的 64.2%,第 16 层与第 24 层几乎相同(68.6% 对 68.7%)。验证集与 LocalLLaMA 之间的落差为 16 个点,与 v0 相当,补充的业务流程类数据没有明显缩小分布外落差。
在 B200 上,短输入的单题延迟中位数在第 12 层停止时为 14.6 ms,跑满 24 层为 28.0 ms,且几乎不随输入长度变化,瓶颈是逐层发射 kernel 的开销,而不是算力。
3.6 审计:读出方式的问题
v1 在 JevBench 公开集上只有 74.0%,hard 档为 50.5%。差距集中在 hard 档的几个任务族:
v1 在 JevBench hard 档各任务族上的准确率(%)
long_policy(19 题,平均 2,804 token)
multi_hop(18 题)
judge_hard(17 题)
temporal_numeric(15 题)
probability(10 题)
上图中的 SemIf-4B 是 SemIf 项目 [18]的 4B 模型。同样基于 Qwen3.5-4B 的其他决策模型在 JevBench 公开集上为 84% 至 90%。我们逐项审计了 v0 和 v1 的设计决定,发现问题主要出在读出方式:把后训练版 Qwen3.5-4B 原样使用,一次给出全部选项并读取选项字母的下一个 token 概率,不经训练即可达到 79.7%(外部报告为 81.4%,我们在 GPU 上复现为 81.0%),比 v1 高 5.7 个点。
3.1 节探针实验中的零样本基线把每个选项单独拼成 Answer: <option> 打分,模型从未同时看到全部选项,这一基线因此偏低。在同时给出全部选项的条件下,LM head 本身就是很强的先验。判决头放弃了这一先验,需要从十几万道题中重新学习作答,在训练分布之外的 JevBench hard 上损失最大。次要原因包括使用 Base 而非后训练版骨干、截去最后 8 层,以及训练数据中缺少长文档和答案评判类题目。
4. 读出方式
4.1 零样本读出实验
v2 的读出方式由一组零样本实验确定(不训练,在 M5 Pro 上用 MLX 运行)。实验在两种骨干、三种顺序、两种标号之间做全组合,评测 JevBench 公开集、LocalLLaMA 和从 v1 验证集中抽取的 577 道题:
零样本读出:不同骨干、题目顺序与标号方式的准确率(%)
JevBench 公开集
v1(训练后)74.0
LocalLLaMA
v1(训练后)68.7
sandwich 指题目和选项在输入前后各出现一次。它在两种骨干上都使 JevBench 提高 3 至 4 个点,在 Base 的 v1 验证集上提高 7 个点,是收益最大的单项改动。Qwen3.5 的 32 层中有 24 层为线性注意力,读取状态时如果尚不知道问题,压缩的记忆只能平均地保留各种信息;题目在前时,模型在读取状态时已知需要保留哪些信息,末尾的重复又使选项靠近答案位置。这与 Just Read Twice [19] 和 Prompt Repetition [20] 的结果一致,额外代价仅为一份题目的 token。多道题共享同一状态时,前面的题目块包含全部问题,后面的重复只包含当前问题。
后训练版的准确率高于 Base(sandwich 下 JevBench +2.6,LocalLLaMA +4.2),但置信度更高,两个软标签评测集上的 KL 都明显变差(LocalLLaMA 0.73 对 0.47),需要由训练修正。字母与数字编号的差别在 1 个点以内且方向不一致,我们沿用字母。
最终格式如下:使用 chat template 并关闭 thinking;选项标为 (A) 至 (Z);是非题渲染为两个选项,选项文字带上题目给出的说明;等级题按顺序标号;提示以 Best answer: ( 结尾,在该位置读取各选项字母的 logit 并做 softmax。同一请求中的多道题共享状态,作为一个批次计算。
4.2 输出变换的零样本检验
在训练之前,我们还检验了几种不需要训练的输出变换,在 LocalLLaMA 和 v1 验证集上拟合,在 JevBench 公开集上按 v1.5 规则近似计分(I_open 只用于比较差值):
| 变换 | I_open | 选择题 CC | 是非题 CC | 等级题 CC | ECE |
|---|---|---|---|---|---|
| 原始输出 | 54.9 | 70.3 | 14.4 | 64.3 | .084 |
| 是非题决断映射(,) | 62.1 | 70.3 | 43.2 | 64.3 | .112 |
| 选择题温度() | 54.9 | 70.3 | 14.4 | 64.3 | .112 |
| 等级题温度() | 54.9 | 70.3 | 14.4 | 64.4 | .075 |
是非题按 argmax 计有 79.7% 正确,但有 20% 落在 0.2 至 0.8 的弃权区间,chance-corrected 分数只有 14.4。决断映射把有倾向的概率推出弃权区间,不经训练使 I_open 提高 7.2(第 8.2 节)。选择题温度是一个反例:LocalLLaMA 的软标签分布很分散,拟合出 ,迁移到 JevBench 上 ECE 反而变差,说明温度需要在与目标分布接近的留出集上拟合。
4.3 超过 26 个选项的锦标赛读出
API 允许最多 255 个选项(Decision Index 中 CLINC150 [21] 有 151 个,BANKING77 [22] 有 77 个),而模型训练时只见过 A 至 Z。同类模型的做法包括在 Z 之后使用 AA、AB 等单 token 的两字母编号并在该格式上训练,或训练 255 路的线性头。我们在不属于训练数据的 MASSIVE(59 类意图,2,974 题)上做了零样本比较:
MASSIVE 上超过 26 个选项的读出方式(Top-1 准确率,%)
正确答案位于 AA 之后时
锦标赛按原顺序把选项均分为每组不超过 26 个的若干组,各组分别计算;每组前 ⌊26 / 组数⌋ 名进入决赛再计算一次。决赛选项的概率为 M 乘以其决赛概率,M 为决赛选项在各自组内概率质量的平均值;其余选项按组内概率分配剩余的 1 − M。每个选项都会被模型看到,只是分布在不同的前向计算中。
4.4 小规模训练消融
我们原先设想的主要方法是先验加残差(PRR):以 LM head 的字母 logit 为先验,以 v1 的联合头(选项交互、状态交叉注意力、有序等级结构)为初始化为零的残差。另两个候选是 anchor KL [23](在若干非答案位置把输出分布约束在基座模型附近,top-64 截断,预先计算)和置换一致性正则(25% 的选择题在同一批次中出现第二种排列,加对称 KL)。各组实验在 1/8 的 v2 数据(3.2 万题)上训练 2,000 步,学习率 1e-4,完整 32 层,数据与随机种子相同。第 0 步时各组完全一致(v2 验证集 67.7%),说明残差头确实从零出发。
小规模消融:2,000 步后的准确率(%)
v2 验证集
未训练 67.7
LocalLLaMA
未训练 63.9
JevBench 公开集
未训练 80.5
按题配对的 bootstrap(95% 区间)给出以下比较:
- 字母 + anchor 对字母:JevBench +0.0 [−3.5, +3.5],LocalLLaMA −1.9 [−3.5, −0.4],验证集 −1.5 [−2.3, −0.7],后两者显著变差;
- PRR + anchor 对字母 + anchor:JevBench +2.2 [−0.4, +4.8],不显著;
- PRR 对字母(均不加 anchor):三项都无法区分。
231 道题上 2 个点约相当于 5 道题。按题型看,PRR 在等级题上略好(v2 验证集 +1.6,LocalLLaMA +2.0),在是非题上略差(−0.7,−3.4),与”残差头有利于有序结构”的预期部分一致,但总体没有净收益。v2 因此采用最简单的设置。
在这些实验中,训练后的 JevBench 准确率持平或上升,软标签 KL 从 0.73 降到 0.14。v1 从随机初始化的判决头出发,训练后 JevBench 下降到 74.0;从后训练版骨干和 LM head 先验出发时,没有观察到这种下降。每组实验约花费 4.8 美元。
5. 可变深度推理
5.1 答案在各层的形成
把未经训练的骨干在每一层的残差流经过最终 norm 和 LM head 后读取选项字母(logit lens [24]),可以观察答案在哪些层形成。该实验在 L4 上运行,2,808 道题共 8 分钟;最后一层与模型自身 logits 的最大偏差为 0.06(bf16)。
在各层读出选项字母时,LocalLLaMA 上的准确率
- 未训练的骨干(logit lens)
- Trutina 的训练出口
第 19 层之前,读出准确率处于随机水平;答案在第 20 至 24 层形成,第 24 层的准确率已与最后一层相当(JevBench 80.1 对 80.5,v1 验证集 78.3 对 78.3)。之后 8 层的作用主要是把概率质量集中到字母 token 上:
未训练骨干各层上,选项字母所占的概率质量(JevBench 公开集,%)
- 字母 token 的概率质量
因此,直接读取 LM head 无法在第 12 或 16 层给出答案,v1 中第 12、16 层出口的准确率来自训练出的头,而非 LM head 的先验;浅层出口需要专门训练。
5.2 出口设计
每个出口是残差流上的仿射变换 ,即 tuned lens [25] 的形式,带独立的 logit 缩放,约 650 万参数,四个出口合计约 2,600 万。出口读取与最后一层相同的 LM head 字母行。
出口以最后一层的答案分布为目标进行蒸馏 [26],其输入经过 detach,梯度单独裁剪。出口因此只学习提前预测最终答案,不会影响骨干,满深度准确率与不加出口时相同。
推理时骨干分段运行(第 1–12 层、13–16 层,依此类推),在段边界保留所有 token 的隐状态。未在第 12 层停止的请求从第 13 层继续计算,前 12 层只计算一次,每道题在出口处额外付出一次 2560×2560 的矩阵乘法。
每个出口有独立的温度,使不同出口上相同的置信度具有相同含义,统一的停止阈值因此成立。各版本的出口温度均接近 1:
| 出口层 | 12 | 16 | 20 | 24 | 32 |
|---|---|---|---|---|---|
| v2 | 0.78 | 0.89 | 0.98 | 0.95 | 0.95 |
| v2.1 | 0.83 | 0.95 | 1.04 | 1.01 | 1.01 |
| v3 | 0.83 | 0.95 | 1.04 | 1.01 | 1.04 |
停止规则为:请求中每道题的最大概率都达到阈值时停止 [27, 28]。阈值在验证集上选取,是准确率损失不超过约 0.5 个点的条件下最小的阈值:v2 为 0.86,v2.1 为 0.84,v3 为 0.86。
在各层停下时的准确率
- 我们的验证集
- LocalLLaMA
请求实际停在哪一层
平均使用层数
21.6/ 32
计算量约少三分之一
准确率
86.6%
使用全部 32 层时为 87.4%
延迟中位数
14.0ms
使用全部 32 层时为 19.0 ms
平均延迟
30.6ms
使用全部 32 层时为 38.7 ms
| 出口层 | 12 | 16 | 20 | 24 | 32 | 自适应 |
|---|---|---|---|---|---|---|
| 我们的验证集 | 47.9 | 73.0 | 87.2 | 88.5 | 89.4 | 89.1 |
| LocalLLaMA | 42.5 | 60.9 | 72.2 | 73.9 | 74.65 | 74.65 |
在 v3 验证集上,自适应模式停止于第 12、16、20、24、32 层的比例分别为 4%、27%、33%、11%、26%,平均 22.1 层。在 JevBench 公开集上平均使用 21.6 层,准确率 86.6%,满深度为 87.4%。在 LocalLLaMA 上平均使用约 28 层,准确率不变。
v1 的经验说明停止规则依赖出口准确率曲线。v1 有三个出口,按最大概率阈值逐级退出时,多数不确定的问题被送往第 24 层,而第 16 层与第 24 层的准确率几乎相同:
| v1 的策略 | 验证集 | LocalLLaMA |
|---|---|---|
| 固定第 24 层 | 0.840 @ 24 层 | 0.685 @ 24 层 |
| 三出口,阈值 0.9 | 0.838 @ 19.4 层 | 0.685 @ 23.2 层 |
| 第 12 → 16 层,阈值 0.9 | 0.836 @ 14.7 层 | 0.686 @ 15.8 层 |
只在第 12 和 16 层之间选择,以约 60% 的计算量得到相同的准确率。这条曲线在每个版本都需要重新测量:到 v2,第 20 层和第 24 层出口已明显好于第 16 层。
5.3 deep 模式
deep 模式最初设计为隐式推理 [29, 30, 31]:若干 latent slot 在第 16 至 24 层循环计算,不生成文本(第 10.1 节)。该方案未达到预设的标准。替代方案是对选项做 4 种循环置换并取平均 [32]。在 v1 上,它使低置信度题目的准确率提高约 1 个点。v2 训练后,在 v2 验证集的 800 道选择题上,deep 与满深度单次读出的差为 +0.1 [−0.9, +1.1],在 JevBench 公开集的 139 道选择题上为 +0.7 [−2.2, +4.3],位置偏差 [33, 34]已基本消除。目前的 deep 模式等同于满深度计算。MLX 引擎仍对选项轮换取平均,但我们不认为它能提高准确率。
5.4 GPU 延迟
在 GPU 上处理单道短题时,延迟几乎不随输入长度变化,瓶颈在于逐层发射 kernel 的开销:v3 在第 12 层停止时 p50 为 12.7 ms,跑满 32 层为 29.8 ms,约每层 0.86 ms。JevK5 v0.3 使用相同的骨干和满深度,借助 CUDA graphs 达到 20.0 ms。
我们为每个出口段和每个长度档位各录制一个 CUDA graph [35](另有一个 embedding 的 graph),掩码和旋转位置编码在录制前按档位预先计算,每个出口只向主机拷贝一次。在同一容器内比较了不同的录制上限:
| RTX PRO 6000,串行 HTTP | 满深度 p50 / 均值 / p95(ms) | 自适应 p50 / 均值 / p95(ms) |
|---|---|---|
| eager | 29.4 / 44.5 / 110.6 | 20.8 / 35.3 / 108.9 |
| graphs,录制至 1,024 token | 19.7 / 39.6 / 113.5 | 14.9 / 31.7 / 111.6 |
| graphs,录制至 2,048 token(默认) | 19.0 / 38.7 / 110.8 | 14.0 / 30.6 / 110.2 |
| graphs,录制至 4,096 token | 18.4 / 38.9 / 123.9 | 13.8 / 30.6 / 114.7 |
录制至 4,096 token 的一组位于一个较慢的容器中,绝对值偏高。启用 CUDA graphs 前后,在 231 道题上所选出口的一致率为 99.1% 至 100%,准确率相同。长输入受算力限制,CUDA graphs 对它们的帮助很小。
6. 训练数据
6.1 数据规则
训练数据不包含 Jev 模型 [36]的输出、JevBench 的任务以及任何评测集。自 v2 起,数据按 13-gram 与 LocalLLaMA 测试集、JevBench 公开集和我们的验证集去重,Decision Index 包含的基准整源排除;与 LocalLLaMA 属于同一类业务流程的数据也被排除,以保持零样本设定。验证集按文档分组切分,同一份合同、规则或状态只出现在一侧。构建 v2 数据时,我们没有调用任何语言模型来生成题目或标注标签。
6.2 软标签来源
v1 的标签有 81% 来自教师模型。v2 改用以下不依赖模型调用的来源:
| 来源 | 方法 | 示例 |
|---|---|---|
| 数据集自带的分布 | 直接使用 | 公开决策数据集附带的教师概率 |
| 人工投票 | 票数比例加平滑:(n_k + 0.5) / (n + 0.5K) | ChaosNLI [37](每题约 100 人投票)、Measuring Hate Speech [38]、SBIC [39]、MT-Bench [40] 人工评判 |
| 程序计算的精确分布 | 直接使用 | 概率题、合成工单分诊的解析后验 |
| 结构化平滑 | 按等级距离衰减:p(ℓ) ∝ exp(−β·|ℓ − gold|),β 使 gold 占约 0.7 | 只有硬标签的等级题 |
| 硬标签 | label smoothing 0.05,仅作用于硬标签 | 其余题目 |
训练损失为对软目标的交叉熵加 0.5 倍 Brier 分数,等级题另加排名概率分数(RPS),使相差一级的错误代价小于相差多级的错误。
v2 最终的标签构成为:gold 硬标签 11.6 万,沿用 v1 的来源 10.4 万(多为软标签),数据集自带分布 1.7 万,人工投票 2.2 万,结构化平滑 5,600,精确分布 1,300。v2 的软标签比例因此从 v1 的 81% 降到约 40%,这是 LocalLLaMA 的 KL 可能变差的已知风险,后来的结果显示 KL 反而从 0.192 降到 0.144。
6.3 v2 数据
v1 在 JevBench 上的薄弱环节集中在长文档规则推理(long_policy 26%)、答案评判(judge_hard 53%,训练数据中没有此类题目)以及多跳和时间数值推理。v2 针对这些方面补充数据,最终 26.6 万题(训练 26.1 万,验证 5,336),其中选择题 14.2 万、是非题 9.0 万、等级题 3.4 万。数据按以下几类组织:
- v1 原有数据:下采样到约 6 万题。v1 在 easy 和 standard 档已接近满分,不再需要那么多简单题。
- 公开的决策格式数据集:包括由程序求解答案、按 JevBench 困难任务族组织的长文档、多跳、概率和权衡类题目,以及经过双重求解验证的长文档题。每个合成来源设有上限(单一生成器不超过 3 万题),避免模型学会模板。
- 长文档规则:CUAD [41](以 12,000 字符为窗口询问合同中是否含有某类条款,正例约 21%,条款跨窗口边界的样本丢弃)、MAUD [42](使用数据集中出现过的答案作为选项)、ShARC [43](四选一:是、否、不适用、需要更多信息)以及 LegalBench [44] 中的规则适用任务。状态长度上限由 6,000 字符提高到 24,000 字符(约 6k token)。
- 答案评判:PRM800K [45]、HelpSteer [46]、MT-Bench 人工评判(A 好、B 好、平局,以专家投票分布为软标签)、SummEval [47](专家对一致性和相关性的平均分拆到相邻两个等级)、HaluEval [48](正确回答与构造的幻觉回答)。
- 多跳与数值:MuSiQue [49]、2WikiMultihopQA [50]、HotpotQA [51](distractor 设定)、DROP [52](只取数字答案)、TAT-QA [53](计算题和计数题)。
- 真实文本上的是非题:BoolQ [54]、StrategyQA [55],以及只保留题目中写明两个选项的 ROPES [56]。
- 人工投票软标签:Measuring Hate Speech(每条评论至少 3 位标注者)、SBIC(冒犯性、是否故意、是否涉性)、ChaosNLI(SNLI [57]、MNLI [58]、αNLI [59] 共 4,645 题,按 premise 分组切分)。
多跳与数值题的选择题干扰项与正确答案类型一致:数字配数字,日期配日期,文本配文本;优先使用题内的中间跳答案、实体和段落中的其他数字,不足时再从其他题目的同类答案中补充。其中 35% 改写为”这个答案是否正确”的是非题,正误各半。
数据构建中发现过以下标签错误:
- HotpotQA 的标题含 HTML 转义(
"Dr. Death" Steve Williams),解码前无法与正确答案匹配,因而被选为干扰项; - 文本答案与其别名(“Yadkinville” 与 “Yadkinville, North Carolina”)同时出现在选项中;
- 早期版本中出现过数字题配地名干扰项。
修复前,MuSiQue 有 8.1%、HotpotQA 有 5.5%、2WikiMultihopQA 有 1.4% 的选择题存在两个正确选项。修复后,候选先解码 HTML,再按规范形式比较(文本去除大小写和标点,数字按数值比较),互相包含的文本答案也被排除,五个来源的重复率都降为 0。对每个来源人工检查 200 条转换结果,发现的问题多于自动检查。
长文档的占比在 v2 中显著提高:不少于 4,000 字符的题约 1.9 万(9%),不少于 8,000 字符的约 1 万。
6.4 v2.1 数据
v2 的读出提示只接受文本,约 3.5 万道图像题在编码时被丢弃,原因是加载骨干时关闭了视觉塔。v2.1 恢复了视觉输入:视觉塔冻结,图像 token 按网格展开进入状态,位置使用多模态 RoPE;我们与 HF 处理器对照,确认 token 完全一致。图像题包括:
| 来源 | 题数 | 构造方式 |
|---|---|---|
| 渲染的状态截图 | 17,060 | 把 v1 的文本状态渲染成截图,验证集来自 v1 验证集,用于测量模态差距 |
| Mind2Web [60] | 10,000 | 在同一视窗中为正确元素和 2–4 个干扰元素画编号框(Set-of-Mark [61]),每条问选哪个元素和做什么操作 |
| A-OKVQA [62] | 6,000 | 软标签 = 与选项匹配的人工答案数 + 2 × 标准答案 |
| ScienceQA [63] | 4,000 | 只取带图的题 |
v2 的 hard 档短板是 temporal_numeric(6/15),而同一任务族在我们自己的验证集上已有 88%,说明问题在于出题风格不同,而非题量不足。因此 v2.1 加入的是不同风格的时间推理数据:Test of Time [64] 的日期时间算术题(1,390 题,干扰项是相差一点的数值、名单多一人或少一人、相邻两项对调)、Test of Time 的匿名时间事实推理(2,465 题),以及 TempReason [65] 的 L2 题(5,023 题)。其中 35% 同样改写为判断题。
6.5 v3 数据
至 v2.1,hard 档的表现仍然不足。Plumb-4B [66] 的训练集约有 5,000 道经过双重求解验证的难题,其 hard 档表现优于我们规模大得多的通用数据。v3 因此选取本身不是决策格式、但答案可由程序重新计算的数据集,按算法转换:
| 来源 | 保留题数 | 转换方式 |
|---|---|---|
| FinQA [67] | 5,263 | 执行数据集中的计算程序,与人工答案核对(考虑百分比单位和标注精度);输入仅含原报告与表格 |
| HiTab [68] | 968 | 按引用单元格执行安全的算术与聚合公式,只保留非直接查表的题目;合并表头按合并区域展开 |
| WikiSQL [69] | 11,835 | 以参数绑定执行列选择、聚合与条件,不解释原始 SQL 字符串;只保留聚合或多条件的数值题 |
| ProofWriter [70] | 20,348 | 选深度 3 和 5 的题,用独立的前向推理求解器重新求解,区分真、假、未知;每份文档至多 3 题 |
| BoardgameQA [71] | 13,000 | 选深度 2 和 3 的题,使用发布方生成器的标签,并与证明的最终结论交叉核对 |
| 一个公开的社区决策数据集 | 29,211 | 保留原有的 gold 与教师分布混合,按选项顺序重排概率,剔除二者冲突的 466 条;发布方留出的任务族保持留出 |
证明、公式、计算程序和 gold 检索结果均不进入输入。数值题的干扰项与答案同单位、同数量级,构造方式包括替换运算、使用错误的聚合和取相邻数值。第一版干扰项从表格中随机选取单元格,单位常与答案不同,容易排除,因此另建了强干扰版本。
正式训练前,我们做了一次对照实验。两组都从 v2.1 出发,使用全新的优化器,训练 2,000 步,学习率 1e-5,关闭选项描述丢弃:对照组使用 2.4 万道旧文本题加 6,000 道图像题;实验组使用 1.56 万道旧文本题、约 8,400 道新题和同样的 6,000 道图像题(旧文本 52%、新题 28%、图像 20%),逻辑题中真、假、未知的比例为 450 : 450 : 400。权重只按共同验证集的损失选择,第 0 步也在候选之内。
对照实验:加入新数据组相对对照组的配对差(百分点)
- 95% 区间不含 0
- 95% 区间含 0
对照组在 2,000 步中没有找到比起点更好的权重,说明仅用旧数据继续训练没有收益;新数据在其自身分布上带来显著提升,原有能力未见可测的下降。各新来源在实验组中的变化为:BoardgameQA 54.0 → 76.8,ProofWriter 60.8 → 93.0,HiTab 83.3 → 88.9,WikiSQL 87.5 → 89.2,FinQA 持平(87.1)。
v3 正式训练的数据为旧文本 6.24 万题、新文本 3.36 万题、图像 2.4 万题,合计约 12 万题。
7. 训练
7.1 训练设置
| v2 | v2.1 | v3 | |
|---|---|---|---|
| 初始权重 | Qwen3.5-4B 后训练版 | v2 | v2.1 |
| LoRA | rank 16,全部线性层(注意力、Gated DeltaNet 投影、MLP) | 同左 | 同左 |
| 学习率 | 1e-4,预热 200 步,余弦衰减至 0 | 2e-5,预热 100 步 | 1e-5,预热 100 步 |
| 步数 × 每步题数 | 16,250 × 16(1 个 epoch) | 7,000 × 16,选用第 4,000 步 | 7,500 × 16 |
| 最大长度 | 6,144 token | 同左 | 同左 |
| B200 时长与吞吐 | 4.6 小时,约 14.7k tok/s | 约 2.5 小时 | 约 3 小时 |
训练时随机置换选项,10% 的题目去掉选项描述(v3 关闭此项,以免字母或数字选项失去正文)。出口的输入经过 detach,梯度单独裁剪。权重只按验证集损失选择,LocalLLaMA 和 JevBench 仅用于监测漂移。每次运行都把第 0 步作为评测点,以便在几分钟内发现评测流程的问题。
7.2 v2 训练过程
v2 验证集上各出口的准确率(5,336 题)
- 第 12 层
- 第 16 层
- 第 20 层
- 第 24 层
- 第 32 层(最终读出)
v2 训练中的漂移监测(%)
- JevBench 公开集(231 题)
- LocalLLaMA(2,000 题)
训练全程 JevBench 没有下降趋势,anchor 没有启用。最后 2,000 步学习率已接近 0,末尾几个 checkpoint 几乎相同,checkpoint 平均不会改变结果,因此没有采用。v2 通过了预先设定的全部替换条件:JevBench 公开集 86.6(不低于 85),hard 72.3(不低于 70),LocalLLaMA 74.25(不低于 68.0),KL 0.144(不高于 0.25)。
7.3 v2.1:续训中的遗忘
v2.1 的第一次训练(学习率 5e-5,旧数据回放 6 万题,约占全部训练题的 23%)在第 2,000 步停止。新数据学习很快,Mind2Web 从 75% 提高到 91%,Test of Time 算术题从 70% 提高到 81%,但 v2 验证集下降 1.7 个点,LocalLLaMA 下降 4.2 个点,且在学习率最高的阶段仍在下降。原因在于 v2 的学习率已退火至 0,重新升至 5e-5 对已有权重扰动过大,而回放比例过低。
第二次训练把学习率降至 2e-5,回放增至 12 万题(约占 74%),没有再出现遗忘:
v2.1 两次训练中 LocalLLaMA 准确率的变化(%)
- 第一次:学习率 5e-5,回放约 23%
- 第二次:学习率 2e-5,回放约 74%
第 4,000 步之后学习率已低于峰值的 20%,第 4,000 步与第 7,000 步的配对差为 LocalLLaMA −0.2 [−0.9, +0.4]、JevBench 0.0 [−1.3, +1.3],后 3,000 步基本没有带来变化。v2.1 相对 v2 的变化:
v2.1 加入视觉训练前后的图像验证集准确率(%)
Mind2Web
A-OKVQA
ScienceQA
渲染的状态截图
文本部分在噪声范围内持平:v2 验证集部分 87.39 → 87.62,LocalLLaMA 74.25 → 74.75(配对差 +0.5 [−0.5, +1.6]),JevBench 86.6 → 87.0(+0.4 [−2.6, +3.5])。分布内的 Test of Time 算术题从 70 提高到 72(43 题),JevBench temporal_numeric 从 6/15 提高到 7/15,时间算术的短板仍然存在。TempReason(94.5%)和 Test of Time 时间事实推理(97.3%)在训练前就已很高,对模型来说偏容易。
7.4 v3 正式训练
v3 从 v2.1 出发,使用对照实验中实验组的数据配方训练 7,500 步。权重按完整验证集(10,209 题)的平均 NLL 选择,第 0 步也在候选之内;最终选中第 7,500 步,验证 NLL 0.4011,准确率 89.43%,ECE 0.031,KL 0.226。
v3 验证集上各出口的准确率(10,209 题)
- 第 12 层
- 第 16 层
- 第 20 层
- 第 24 层
- 第 32 层(最终读出)
在训练结束后的同题比较中,v3 相对 v2.1 在完整验证集上提高 3.7 个点 [3.1, 4.3],在新来源的留出集(3,083 题)上提高 14.1 个点 [12.0, 16.4],原有文本验证集变化 −0.3 [−0.7, +0.2],LocalLLaMA 74.70 → 74.65。
新来源留出集:v2.1 与 v3 的准确率(%)
BoardgameQA(380 题)
ProofWriter(556 题)
FinQA(159 题)
WikiSQL(387 题)
HiTab(27 题)
社区决策数据集(1,574 题)
8. 概率校准
8.1 软标签概率与正确率
v1 训练后,ECE 显示模型偏保守:第 3,500 步第 24 层的平均置信度为 0.690,准确率为 81.7%。我们在 M5 Pro 上用 MLX 导出逐题概率后分别按两种目标拟合温度:
| v1 第 24 层 | ECE(验证集) | ECE(LocalLLaMA) | KL(LocalLLaMA) |
|---|---|---|---|
| 不校准 | 0.071 | 0.061 | 0.191 |
| 按软标签拟合,T ≈ 1.03 | 约 0.07 | 约 0.06 | 0.188 |
| 按 argmax 硬标签拟合, | 0.029 | 0.037 | 0.262 |
两种校准对应不同含义的概率。以软标签训练的概率描述标注者或教师的分布,以硬标签校准的概率描述最高选项答对的可能性。ECE 以软标签的 argmax 为正确答案,模型越接近教师分布,ECE 越显得保守。API 返回前一种概率,各出口的温度按软目标拟合,均接近 1(第 5.2 节)。自适应退出只比较最大概率与阈值,温度是单调变换,调整阈值即可,不需要另一组温度。
8.2 是非题的决断映射
JevBench v1.5 把 P(是) 位于 0.2 至 0.8 之间的回答记为弃权。以软标签训练的模型在有争议的是非题上倾向于给出中间概率,因而在该规则下失分(第 4.2 节)。
我们在验证集中答案明确的是非题上拟合了一个单调映射(v2 在 1,671 道题上拟合,;v3 为温度 0.777、边界 0.2),把倾向明确的概率移出弃权区间,并保留真正不确定的回答。对 v3 满深度,Intelligence 从 66.9 提高到 70.1。这一映射改变了 API 返回值的含义,因此做成可选参数:服务端默认启用,可用 --noul calibrated 关闭,训练时是非题的软标签保持不变。
服务端在最终温度之后应用映射,因此拟合也必须使用温度之后的概率。阈值附近的概率对数值误差敏感:未合并 LoRA 的批量评测给出的 Intelligence 为 67.8,实际服务为 66.9,差别来自一道 P(是) 从 0.808 变为 0.798 的题。本报告采用实际服务的数字。
9. 评测结果
除特别说明外,以下结果均来自 v3 发布权重。所有评测集均未用于训练或权重选择。
9.1 JevBench 公开集
| 全部(231) | hard(94) | Intelligence(默认) | Intelligence(不用决断映射) | |
|---|---|---|---|---|
| v3,满深度 | 87.4 | 75.5 | 70.1 | 66.9 |
| v3,自适应 | 86.6 | 68.3 | 65.1 | |
| v2.1,满深度 | 87.0 | 73.4 | 69.0 | 65.8 |
| v2.1,自适应 | 86.1 | 67.9 | 64.7 | |
| 未训练的骨干,相同提示 | 79.7 |
在相同的 231 个任务和相同计分下,JevK5 [72] v0.3 的 Intelligence 为 70.7,Plumb-4B 为 67.4(未使用其自带的是非题映射服务端),spark-s1 [73] 59.8,decider-4b [74] 59.3,Sieve-4B [75] 48.0。以上均为我们对公开任务的自行计分,并非官方完整开放集或封闭集成绩。浅层模式(只用第 12 层)在 JevBench 上 Intelligence 接近 0,不适合这类任务。
v2 在 hard 档各任务族上的结果为:adversarial 6/6、trap 8/8、routing_hard 5/5、multi_hop 14/18、ambiguous 5/7、probability 7/10、long_policy 13/19、tradeoff 4/6、temporal_numeric 6/15。v2.1 和 v3 在 temporal_numeric 上均为 7/15。
9.2 LocalLLaMA typed-decisions(零样本)
其他模型的数字取自数据集说明 [3]。d1 [76] 是 Liquid AI 开源的决策模型。
LocalLLaMA typed-decisions 零样本准确率(%)
按生成数据的潜在因子完美还原 70.4
9.3 开源 4B 决策模型的同协议比较
每个系统使用作者提供的服务端和固定的版本,各占一张 RTX PRO 6000;同一客户端串行发送相同请求,并用同一套方法计分,被服务端拒绝的请求记为错误。Trutina 一列为 v2.1 经服务端的结果(满深度,不做选项轮换);v3 的结果见 9.4 节。
6 个开源 4B 决策模型在同一协议下的准确率(%)
JevBench 公开集(231 题)
LocalLLaMA
DecisionBench medium(按状态平均)
DecisionBench hard(按状态平均)
this-that
fast-decisions
JudgeBench(两种顺序均正确)
MASSIVE(59 类)
9.4 v3 与 v2.1 的逐题配对比较
两者使用相同的题目和代码(外部集共 6,917 题,132 道超过 26 个选项的题使用锦标赛),置信区间由按文档或任务族聚簇的 bootstrap 得到:
v3 相对 v2.1 的配对差(百分点)
- 95% 区间不含 0
- 95% 区间含 0
v3 在 JudgeBench 和长输入上的提升具有统计支持,DecisionBench hard 上的提升尚不能确认,JevBench temporal_numeric 仍为 7/15。部分外部评测集上的校准变差:this-that 的 NLL 从 1.347 升至 1.463、ECE 从 0.223 升至 0.267,JudgeBench 的 NLL 从 0.713 升至 0.756、ECE 从 0.160 升至 0.180,LocalLLaMA 的 KL 从 0.149 升至 0.156。我们的评测结论曾建议继续以 v2.1 为主版本,最终发布时仍以 v3 为默认版本,v2.1 保留在 Hugging Face 的 v2.1 标签下。
9.5 其他外部评测
训练分布之外的决策评测:未训练骨干、v2.1 与 v3(%)
DecisionBench medium
DecisionBench hard
this-that
fast-decisions
JudgeBench
训练分布之外的提升在 7 至 9 个点之间。fast-decisions 的准确率没有变化,ECE 从 0.25 降至 0.14;其中 agent_handoff 领域下降了 15 个点(100 题)。DecisionBench hard 仍低于未训练的骨干。
9.6 与 27B 模型的近似比较
Perplexity 公布了 Jev 1.13.0 [36]、Qwen3.8-27B [77] 和其 27B 决策模型 [78]在 11 个任务上的准确率。在自行运行这些任务之前,我们用 8-gram 扫描了各任务公开题目与全部训练数据的重叠(以题目中至少 max(3, 30%) 的 8-gram 出现在同一训练文件中为近似重复):
| 任务 | 题数 | 近似重复(v2 / v2.1 / v3) |
|---|---|---|
| Circa [79] | 34,268 | 71.5% / 52.5% / 45.8% |
| RAGTruth [80] | 2,700 | 2.9% / 1.1% / 0.9% |
| WinoGrande [81] | 3,034 | 1.1% / 0.6% / 0.3% |
| FinancialPhraseBank [82] | 4,846 | 0.7% / 0.3% / 0.2% |
| ContractNLI | 2,969 | 0.5% / 0.2% / 0.7% |
| TruthfulQA [83] | 817 | 0.5% / 0.1% / 0.1% |
| TabFact、BBH、Belebele | 0 |
Circa 被排除,其余任务删去近似重复的题(共 255 道)后,各任务保留 500 至 1,500 道。对方抽取的题目、提示和标签映射均未公开,因此这只是近似比较。
与 27B 模型的近似比较(准确率,%)
FinancialPhraseBank
RAGTruth
JevBench 公开集 hard
TabFact
ContractNLI
Belebele
WinoGrande
JudgeBench
BBH
TruthfulQA(二选一)
9.7 Decision Index 0.3 与图像任务
Decision Index 0.3 文字公开集的分数估计约为 44(±3)。完整评测在 L4 上需要 6 至 8 小时,我们中途停止,改为分层抽样后用官方打分器计分,并按 run_id 分成两半估计抽样波动(46.5 与 42.5)。样本共约 1.2 万行,每个基准至少 48 行。v3 与 v2.1 在同一组 2,400 行上的分数为 44.4 与 44.7。
| 领域 | 知识推理 | 语言理解 | 检索分类 | 工具自动化 | 艺术品味 |
|---|---|---|---|---|---|
| v2.1 | 0.288 | 0.484 | 0.453 | 0.649 | 0.382 |
| v3 | 0.291 | 0.495 | 0.451 | 0.636 | 0.344 |
模型在工具调用和意图分类上较强(BFCL [84] 90.6、CLINC150 84.0、BANKING77 73.8、API-Bank [85] 81.5、HellaSwag [86] 93.8),在 HLE、国际象棋、PhishNChips、CRUXEval、Habermas、ACOS、SATA-Bench 等需要多步推理或专门知识的任务上接近零分。
图像任务(我们的验证集,分布内):Mind2Web 93.0,A-OKVQA 90.2,ScienceQA 98.5,渲染的工作流截图 84.9。在同协议比较的 6 个开源 4B 决策模型中,其余 5 个加载的都是只含文本的权重,或在服务端把状态展平为文本,不接受图像输入。
9.8 延迟
4B 决策模型 · 同环境并排实测
- Trutina · 自适应多模态4B
- decider-4b4B
- Plumb-4B4B
- JevK5 v0.34B
- Sieve-4B4B
- spark-s14B
12–35B 决策系统 · JevBench 官方测量
- Cygnet12B
- JevOne · Qwen3.6-35B-A3B多模态35B
- NInfer Qwen3.8-Flash-Nextn/a
- AutoJev-27B27B
- Surogate Rune 26B-A4B26B
- swanOne · Qwen3.8-Flash-Nextn/a
我们的请求集为 JevBench 公开集的 231 个任务,其中的长文档任务决定了 p95(约 110 ms)。均值为自适应 30.6 ms、满深度 38.7 ms。在自适应模式下,按停止层统计的 p50(eager)为:第 12 层 14.0 ms(3 题),第 16 层 16.3 ms(62 题),第 20 层 19.6 ms(102 题),第 24 层 48.5 ms(16 题),第 32 层 46.2 ms(48 题)。超过 26 个选项的题目需要运行锦标赛,p50 约 1.2 秒、p95 约 3.0 秒,是目前延迟上最明显的不足。
把 Intelligence 除以延迟可以得到一个效率指标。按 v3 自适应模式和默认是非题映射(Intelligence 68.3),CUDA graphs 下 Intelligence/均值延迟为 2.23,Intelligence/p50 为 4.88,Intelligence/p95 为 0.62;同一容器中的 JevK5 v0.3 分别为 1.59、3.54、0.50,Plumb-4B 为 1.51、3.62、0.46。JevBench 没有官方的效率指标,该比较只作参考。
9.9 数据污染
v2 及之前的数据都与 LocalLLaMA、JevBench 公开集和我们的评测集做过 13-gram 去重。v3 新增的来源按文档与验证集分开,但没有针对外部基准做 n-gram 扫描(9.6 节的 8-gram 扫描在 v3 训练之后进行,只覆盖那 11 个任务)。开发中我们用 LocalLLaMA 和 JevBench 公开集监测漂移,并用 JevBench 选择了提示格式(第 4 节),因此这两个评测集并非完全盲测。Plumb-4B 公开的训练题包含在我们的 v2 数据中,与 Plumb-4B 比较时应考虑这一点。
10. 负面结果
10.1 隐式推理
latent deep 模式在冻结的 v1 之上训练。8 个 latent slot 接在提示之后,在第 16 至 24 层循环 R 轮;第一轮的输入为答案位置在第 16 层的状态加每个 slot 的可学习偏移(按该状态的 RMS 缩放),之后每轮再加上对上一轮输出的循环变换。deep 专用的 LoRA 只作用于 slot 位置,提示部分使用冻结的 v1 权重。读出时用答案位置的特征对 slot 做注意力,再与各选项特征做双线性打分,得到加在 v1 第 24 层 logits 上的修正项;修正项初始化为零,因此训练起点与 v1 完全一致。
在 M5 Pro 上,R=4 比基础前向多约 70 ms(每轮约 17 ms)。
训练集从 v1 的训练题中挖掘:随机抽取 4 万题,保留 v1 答错或最大概率低于 0.7 的 10,626 题,再加入 25% 答对且自信的题。预设标准是在 v1 不确定的题上明显优于选项置换集成。结果如下(1,500 道验证题,“不确定”指 v1 最大概率低于 0.7):
| 全部 / 不确定的题:准确率 | 全部 / 不确定的题:KL | |
|---|---|---|
| v1 第 24 层 | 0.850 / 0.605 | 0.242 / 0.448 |
| 选项置换集成(4 种排列) | 0.853 / 0.616 | 0.241 / 0.442 |
| deep,第 3 轮,第 500 步 | 0.849 / 0.603 | 0.247 / 0.456 |
| deep,第 3 轮,第 1,000 步 | 0.851 / 0.610 | 0.243 / 0.450 |
第 1 至 3 轮之间几乎没有差别。训练在第 1,000 步按预设标准停止。可能的原因是 slot 只能看到同一组冻结的第 16–24 层所计算的内容,缺少新的信息来源;挖掘出的难题中有许多是标签本身有争议的软标签题,修正项可能主要拟合了噪声;以及 3e-4 的学习率在前 500 步使修正项偏离。若再次尝试,应让循环从更浅的层开始,用替换而非残差的方式读出,并先确认该结构能在 1,000 至 2,000 道题上过拟合。
10.2 自检索重读
对于长文档,我们尝试让模型自己找出证据再读一遍。输入切成约 400 字符的片段,在答案位置读取 8 个全注意力层各注意力头对每个片段的注意力质量 [87],减去同一输入配空问题时的注意力(否则选中的几乎都是文档开头和章节标题),取得分最高的 4 个片段,按原文顺序附在输入之后、第二遍题目之前,再读一次。检索头在 v2 验证集长文档题的 dev 部分上选择,在 test 部分和 JevBench 长文档题上检验:
零样本自检索重读的准确率(%)
dev(157 题,用于选头)
原始读出 79.6
test(162 题)
原始读出 72.2
JevBench 长文档(37 题)
原始读出 62.2
检索没有带来任何超过随机片段的收益,test 上的提升来自重复引用原文本身,JevBench 长文档题反而下降。抽查显示对比校准确实使选中的片段相关,但原始读出时证据本来就在上下文中,模型的不足在于用证据推理。
10.3 其他
| 方法 | 设想 | 结果 |
|---|---|---|
| 先验加残差(PRR) | LM head 先验加初始化为零的联合头残差 | 与纯字母读出无显著差异(4.4 节) |
| anchor KL | 把非答案位置约束在基座分布附近 | 分布内显著变差,JevBench 无显著收益 |
| 置换一致性正则 | 同一题目两种选项顺序之间的对称 KL | 在 anchor 基础上 JevBench −2.1 |
| 训练后的置换集成 | deep 模式对 4 种选项顺序取平均 | +0.1 [−0.9, +1.1],计算量为 4 倍 |
| 两字母编号 | 超过 26 个选项时使用 AA、AB 等编号 | 比锦标赛低 19.9 个点(4.3 节) |
| MLX 上的量化 | 以 4-bit 或 8-bit 权重降低延迟 | 延迟增加 15–25%(3.1 节) |
mx.compile | 编译 MLX 计算图 | 没有收益,量化后更慢 |
11. 部署
11.1 推理引擎与发布格式
发布时 LoRA 并入 Qwen3.5-4B 原始权重,布局不变(含视觉塔),mlx-lm 和 transformers 可以直接加载;出口和 logit 缩放单独存放,提示版本、各出口温度、自适应阈值和是非题映射写在配置文件中。合并后的 bf16 权重与未合并的 LoRA 在 40 道 JevBench hard 题上(deep 与自适应)argmax 120/120 一致,概率差平均 0.005,最大 0.12(出现在自适应模式切换出口时)。
MLX 引擎面向 Apple 芯片。我们从 transformers 移植了 Qwen3.5 的视觉塔和交错的多模态 RoPE。视觉塔必须以 float32 运行:在 bf16 下,每张图像有少数 token 偏差很大,余弦相似度最低为 0.44。移植后的端到端结果与云端 PyTorch 一致(Mind2Web 92.3 对 91.9)。在 M5 Pro 上,JevBench 公开集满深度 p50 为 113 ms,自适应为 71 ms。
PyTorch 引擎面向 CUDA,采用分段执行和 CUDA graphs(5.4 节),在 MPS 上与 MLX 的输出一致。
11.2 ROCK 5B
ROCK 5B(RK3588,16 GB)上有三种后端。PyTorch ARM CPU 后端对解码器线性层使用 QNNPACK INT8 量化,支持全部功能,但一次自适应请求约需 8 秒。瑞芯微的 RKLLM [88] 可以在 NPU 上运行满深度计算(同一张发票约 2.1 秒),但不提供中间层输出,也不能从中间层续算,因此无法支持可变深度和图像输入。
我们编写了一个基于 RKNN Matmul API 的 C++ 桥接层,只把解码器的线性层交给 NPU;norm、注意力与 DeltaNet 状态、卷积、出口和视觉塔留在 CPU 上。训练出的出口可以照常使用,文本和图像共用一个常驻模型,不需要在 CPU 与 NPU 后端之间重新加载。权重在启动时于开发板上直接量化为按输出通道对称的 INT8,激活按 token 量化。
我们在开发板上发现,RKNN 矩阵乘法的耗时与矩阵大小远不成正比。MLP 下投影(K=9216,N=2560)运行 64 行需要 135 ms,切成三段 K=3072 后每段只需 0.9 ms;K=4096 和 N=9216 也都比切成两半更慢。因此每个线性层被切分为 K 不超过 3072、N 不超过 4608 的块,K 方向的分块先在 INT32 上精确累加,再统一乘以缩放系数,输出与不切分时逐位相同。
ROCK 5B 上的 HTTP 请求耗时(秒)
发票是非题,自适应(第 16 层)
发票是非题,满深度(第 32 层)
图像请求(第 16 层)
试玩页面运行在这块开发板上。
12. 局限与后续工作
12.1 困难的判断
我们分析了 v3 在 DecisionBench hard 上答错的 126 道题。
- 按题型,是非题、选择题、等级题的准确率分别为 62.5%、54.3%、50.7%;等级题的 35 个错误中有 30 个只差一级。
- 错误与输入长度无关:状态长度在 3k 字符以下、3–6k、6–12k、12k 以上时,准确率分别为 80%、53%、57%、59%,hard 档状态长度的中位数(4.7k 字符)也不比 medium(5.2k)长。
- 模型没有偏向回答”是”:预测为”是”的比例为 0.48,gold 为 0.47。
- 45 道错题的置信度高于 0.8。
典型的错误题目需要在文档中进行多步推理,例如根据时间戳计算经过的时长、跟踪代码修改后变量的取值、在干扰消息存在时应用置顶规则、理解反向的评分标准。准确率随深度增加:
v3 在 DecisionBench hard 上各出口的准确率(%)
- DecisionBench hard
Plumb-4B 在该评测上领先 12 个点。其训练方法与我们的区别在于:它从另一个已经训练过的决策模型出发;用自身模型挖掘难题,只在模型答错或不确定的教师题目上训练(5,026 题中保留 3,204 题),并加入同等数量的人工标注回放题;在这一小规模难题集上以 3e-5 的学习率训练 3 个 epoch;题目来自 LLM 撰写的多来源业务文档,每道题经过两次独立求解,风格更接近 DecisionBench hard。我们的 v3 只训练 1 遍,学习率 1e-5,新来源是上下文较短且干净的算法转换数据。后续我们计划先用 v3 在候选题池中挖掘答错或 gold 概率低于 0.6 的题,与回放各占一半,以 2e-5 至 3e-5 的学习率训练 2 至 3 个 epoch;再考虑由 LLM 撰写同类风格的文档,并只保留两次独立作答一致的题目。
12.2 其他局限
单次前向计算中的多步日期与数字运算仍然较弱。JevBench temporal_numeric 从 v2 到 v3 一直是 6 至 7 题(共 15 题),而同一任务族在我们自己的数据上已达 88%。增加数据没有解决这一问题,可能需要改变模型机制。
概率在我们的验证集上校准,v3 在部分外部评测集上比 v2.1 更自信,在高风险场景中应使用自有数据重新校准。训练数据几乎全部为英文。超过 26 个选项时延迟较高,在锦标赛各组之间共享状态的 KV 缓存预计可将其降低数倍。JevBench 的数字为我们对公开任务的自行计分,官方完整开放集和封闭集成绩需由维护方评测。
附录:时间线与计算成本
| 时间 | 工作 |
|---|---|
| 第 1 天 | 调研;骨干探针实验;在 MLX 中实现可训练的 Gated DeltaNet;v0 开始在 M5 Pro 笔记本上训练 |
| 第 2 天 | 迁移到 Modal;训练 v1(B200,约 2 小时) |
| 第 3 天 | 评测 v1;隐式推理未达标准;方法审计,确认读出方式的问题;零样本读出实验;构建 v2 数据 |
| 第 4 天 | 小规模消融;训练 v2 和 v2.1;Decision Index 抽样评测;同协议比较;发布 v2.1 |
| 第 5 天 | v3 数据与对照实验;训练并评测 v3;实现 CUDA graphs;发布 v3 |
Modal 按量计费的花费(美元)
权重与代码以 Apache-2.0 协议开放。
参考文献
- JevBench by Benchmark Heaven: benchmark and leaderboard for AI decision models (v1.5 method). Software and data. github.com/fstandhartinger/jevbench
- Guo, C., et al. On Calibration of Modern Neural Networks. arXiv:1706.04599 (2017).
- LocalLLaMA/typed-decisions. Hugging Face dataset card. huggingface.co/datasets/LocalLLaMA/typed-decisions
- akhilaaa3. decision-bench. Hugging Face dataset. huggingface.co/datasets/akhilaaa3/decision-bench
- limberc. this-that-complex-decisions. Hugging Face dataset. huggingface.co/datasets/limberc/this-that-complex-decisions
- Tan, S., et al. JudgeBench: A Benchmark for Evaluating LLM-based Judges. arXiv:2410.12784 (2024).
- fastino. fast-decisions. Hugging Face dataset. huggingface.co/datasets/fastino/fast-decisions
- FitzGerald, J., et al. MASSIVE: A 1M-Example Multilingual Natural Language Understanding Dataset with 51 Typologically-Diverse Languages. arXiv:2204.08582 (2022).
- Decision Index: reproduce the decision-model benchmark suite locally or as one HF Job. Software. github.com/apolinario/decision-index
- ml-explore. MLX: an array framework for Apple silicon. Software. github.com/ml-explore/mlx
- Qwen Team. Qwen3.5-4B and Qwen3.5-4B-Base. Hugging Face model cards. huggingface.co/Qwen/Qwen3.5-4B
- Yang, S., et al. Gated Delta Networks: Improving Mamba2 with Delta Rule. arXiv:2412.06464 (2024).
- Clark, P., et al. Think you have Solved Question Answering? Try ARC, the AI2 Reasoning Challenge. arXiv:1803.05457 (2018).
- Hendrycks, D., et al. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020).
- Hu, E. J., et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685 (2021).
- fla-org. flash-linear-attention: efficient implementations of linear attention. Software. github.com/fla-org/flash-linear-attention
- Yang, S., et al. Parallelizing Linear Transformers with the Delta Rule over Sequence Length. arXiv:2406.06484 (2024).
- TheoLeeCJ. SemIf (formerly OpenJev): semantic ifs from open models. Software. github.com/TheoLeeCJ/SemIf
- Arora, S., et al. Just read twice: closing the recall gap for recurrent language models. arXiv:2407.05483 (2024).
- Leviathan, Y., et al. Prompt Repetition Improves Non-Reasoning LLMs. arXiv:2512.14982 (2025).
- Larson, S., et al. An Evaluation Dataset for Intent Classification and Out-of-Scope Prediction. arXiv:1909.02027 (2019).
- Casanueva, I., et al. Efficient Intent Detection with Dual Sentence Encoders. arXiv:2003.04807 (2020).
- Li, Y., et al. LLM-as-Jev: LLMs Are Already Jev-Style Decision Models: When and How to Fine-Tune Them. arXiv:2610.02076 (2026).
- nostalgebraist. interpreting GPT: the logit lens. LessWrong (2020). lesswrong.com
- Belrose, N., et al. Eliciting Latent Predictions from Transformers with the Tuned Lens. arXiv:2303.08112 (2023).
- Hinton, G., et al. Distilling the Knowledge in a Neural Network. arXiv:1503.02531 (2015).
- Schuster, T., et al. Confident Adaptive Language Modeling. arXiv:2207.07061 (2022).
- Elhoushi, M., et al. LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding. arXiv:2404.16710 (2024).
- Hao, S., et al. Training Large Language Models to Reason in a Continuous Latent Space. arXiv:2412.06769 (2024).
- Geiping, J., et al. Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach. arXiv:2502.05171 (2025).
- Goyal, S., et al. Think before you speak: Training Language Models With Pause Tokens. arXiv:2310.02226 (2023).
- Liusie, A., et al. Teacher-Student Training for Debiasing: General Permutation Debiasing for Large Language Models. arXiv:2403.13590 (2024).
- Zheng, C., et al. Large Language Models Are Not Robust Multiple Choice Selectors. arXiv:2309.03882 (2023).
- Wang, Z., et al. Eliminating Position Bias of Language Models: A Mechanistic Approach. arXiv:2407.01100 (2024).
- NVIDIA. Getting Started with CUDA Graphs. NVIDIA Technical Blog. developer.nvidia.com/blog/cuda-graphs
- TypeSafe. Jev 1.13 and the System One API (typed yes/no, choice and score decisions). Documentation. docs.typesafe.ai/concepts/system-one
- Nie, Y., et al. What Can We Learn from Collective Human Opinions on Natural Language Inference Data? arXiv:2010.03532 (2020).
- Kennedy, C. J., et al. Measuring a hate speech spectrum with faceted Rasch item response theory and perspective-aware, explainable-by-design deep learning. arXiv:2009.10277 (2020).
- Sap, M., et al. Social Bias Frames: Reasoning about Social and Power Implications of Language. arXiv:1911.03891 (2019).
- Zheng, L., et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023).
- Hendrycks, D., et al. CUAD: An Expert-Annotated NLP Dataset for Legal Contract Review. arXiv:2103.06268 (2021).
- Wang, S. H., et al. MAUD: An Expert-Annotated Legal NLP Dataset for Merger Agreement Understanding. arXiv:2301.00876 (2023).
- Saeidi, M., et al. Interpretation of Natural Language Rules in Conversational Machine Reading. arXiv:1809.01494 (2018).
- Guha, N., et al. LegalBench: A Collaboratively Built Benchmark for Measuring Legal Reasoning in Large Language Models. arXiv:2308.11462 (2023).
- Lightman, H., et al. Let’s Verify Step by Step. arXiv:2305.20050 (2023).
- Wang, Z., et al. HelpSteer: Multi-attribute Helpfulness Dataset for SteerLM. arXiv:2311.09528 (2023).
- Fabbri, A. R., et al. SummEval: Re-evaluating Summarization Evaluation. arXiv:2007.12626 (2020).
- Li, J., et al. HaluEval: A Large-Scale Hallucination Evaluation Benchmark for Large Language Models. arXiv:2305.11747 (2023).
- Trivedi, H., et al. MuSiQue: Multihop Questions via Single-hop Question Composition. arXiv:2108.00573 (2021).
- Ho, X., et al. Constructing A Multi-hop QA Dataset for Comprehensive Evaluation of Reasoning Steps. arXiv:2011.01060 (2020).
- Yang, Z., et al. HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600 (2018).
- Dua, D., et al. DROP: A Reading Comprehension Benchmark Requiring Discrete Reasoning Over Paragraphs. arXiv:1903.00161 (2019).
- Zhu, F., et al. TAT-QA: A Question Answering Benchmark on a Hybrid of Tabular and Textual Content in Finance. arXiv:2105.07624 (2021).
- Clark, C., et al. BoolQ: Exploring the Surprising Difficulty of Natural Yes/No Questions. arXiv:1905.10044 (2019).
- Geva, M., et al. Did Aristotle Use a Laptop? A Question Answering Benchmark with Implicit Reasoning Strategies. arXiv:2101.02235 (2021).
- Lin, K., et al. Reasoning Over Paragraph Effects in Situations. arXiv:1908.05852 (2019).
- Bowman, S. R., et al. A large annotated corpus for learning natural language inference. arXiv:1508.05326 (2015).
- Williams, A., Nangia, N. and Bowman, S. R. A Broad-Coverage Challenge Corpus for Sentence Understanding through Inference. arXiv:1704.05426 (2017).
- Bhagavatula, C., et al. Abductive Commonsense Reasoning. arXiv:1908.05739 (2019).
- Deng, X., et al. Mind2Web: Towards a Generalist Agent for the Web. arXiv:2306.06070 (2023).
- Yang, J., et al. Set-of-Mark Prompting Unleashes Extraordinary Visual Grounding in GPT-4V. arXiv:2310.11441 (2023).
- Schwenk, D., et al. A-OKVQA: A Benchmark for Visual Question Answering using World Knowledge. arXiv:2206.01718 (2022).
- Lu, P., et al. Learn to Explain: Multimodal Reasoning via Thought Chains for Science Question Answering. arXiv:2209.09513 (2022).
- Fatemi, B., et al. Test of Time: A Benchmark for Evaluating LLMs on Temporal Reasoning. arXiv:2406.09170 (2024).
- Tan, Q., et al. Towards Benchmarking and Improving the Temporal Reasoning Capability of Large Language Models. arXiv:2306.08952 (2023).
- crh225. Plumb-4B. Hugging Face model card. huggingface.co/crh225/plumb-4b
- Chen, Z., et al. FinQA: A Dataset of Numerical Reasoning over Financial Data. arXiv:2109.00122 (2021).
- Cheng, Z., et al. HiTab: A Hierarchical Table Dataset for Question Answering and Natural Language Generation. arXiv:2108.06712 (2021).
- Zhong, V., et al. Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement Learning (WikiSQL). arXiv:1709.00103 (2017).
- Tafjord, O., et al. ProofWriter: Generating Implications, Proofs, and Abductive Statements over Natural Language. arXiv:2012.13048 (2020).
- Kazemi, M., et al. BoardgameQA: A Dataset for Natural Language Reasoning with Contradictory Information. arXiv:2306.07934 (2023).
- ngrok-adhoc. JevK5. Software. github.com/ngrok-adhoc/jevk5
- abhishek085. spark-s1-4b-v6. Hugging Face model card. huggingface.co/abhishek085/spark-s1-4b-v6
- Mapika. decider-4b. Hugging Face model card. huggingface.co/Mapika/decider-4b
- sthanika-ai. Sieve-4B. Hugging Face model card. huggingface.co/sthanika-ai/Sieve-4B
- Liquid AI. Open d1. Liquid AI blog. liquid.ai/blog/d1-open
- Qwen Team. Qwen3.8-27B. Hugging Face model card. huggingface.co/Qwen/Qwen3.8-27B
- Perplexity. pplx-decider-v1-27b. Hugging Face model card. huggingface.co/perplexity-ai/pplx-decider-v1-27b
- Louis, A., et al. “I’d rather just go to bed”: Understanding Indirect Answers. arXiv:2010.03450 (2020).
- Niu, C., et al. RAGTruth: A Hallucination Corpus for Developing Trustworthy Retrieval-Augmented Language Models. arXiv:2401.00396 (2024).
- Sakaguchi, K., et al. WinoGrande: An Adversarial Winograd Schema Challenge at Scale. arXiv:1907.10641 (2019).
- Malo, P., et al. Good Debt or Bad Debt: Detecting Semantic Orientations in Economic Texts (Financial PhraseBank). arXiv:1307.5336 (2013). arXiv:1307.5336
- Lin, S., et al. TruthfulQA: Measuring How Models Mimic Human Falsehoods. arXiv:2109.07958 (2021).
- Berkeley Function-Calling Leaderboard (BFCL). Gorilla project, UC Berkeley. gorilla.cs.berkeley.edu
- Li, M., et al. API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244 (2023).
- Zellers, R., et al. HellaSwag: Can a Machine Really Finish Your Sentence? arXiv:1905.07830 (2019).
- Zhang, W., et al. Query-Focused Retrieval Heads Improve Long-Context Reasoning and Re-ranking. arXiv:2506.09944 (2025).
- airockchip. rknn-llm (RKLLM runtime). Software. github.com/airockchip/rknn-llm
