Jeeves:通过推理与扩散草稿提升决策模型
概述
Jeeves 是一种具备推理能力的分类器,旨在提升类似 Jev 的决策模型的准确性。通过在最终决策前引入推理链,Jeeves 解决了决策模型中常见的权衡问题:虽然提供了校准后的概率,但往往以较低的准确性为代价。
基于 Qwen3.5-9B 并结合 LoRA 和指针头,Jeeves 利用监督微调(SFT)和 CISPO,使模型在决策前能够“思考”,从而在跨领域任务和 JevBench 难题基准上表现出色。
性能基准
Jeeves 在复杂或未见过的场景中相较于之前的决策模型(如 Jev 和 Kev-9B)展现出显著的准确性提升。
准确性对比
| 基准 | Kev-9B | Jev | Jeeves |
|---|---|---|---|
| 测试总体(跨领域/保留) | 0.822 | 0.857 | 0.889 |
| JevBench 总体(231 个公开项目) | 0.715* | 0.866 | 0.935 |
| JevBench 难题(111 个公开项目) | 0.451* | 0.730 | 0.865 |
| PAWS | 0.763 | 0.788 | 0.875 |
| 保留的规则结构 | 0.896 | 0.885 | 1.000 |
| 对比性策略 | 0.900 | 0.963 | 1.000 |
注:JevBench 的 Kev-9B 结果基于 Kev-8B(Qwen3)数据。
权衡与局限性
尽管 Jeeves 在准确性上表现出色,但推理过程带来了延迟惩罚。
- 知识差距:在纯知识基准测试中,Jeeves 逊于 Jev,例如 MMLU(0.793 vs 0.900)和 MMLU-Pro(0.739 vs 0.840)。
- 延迟:完整的推理链可能导致 p90 延迟高达 17 秒。若不进行推理,模型响应时间约为 0.3 秒。
- 可解释性:由于训练过程中未使用语言一致性奖励,推理链的可解释性不高。
技术架构
决策机制
Jeeves 使用特定的提示格式来区分状态、指令和选项。模型在 </tool_call> 标签内生成推理链。推理块结束后,模型再次接收指令和选项,并以 <decide> 标记结尾。
随后,指针头通过在 <decide> 标记处隐藏状态的查询投影与对应选项 </opt> 标记处隐藏状态的键投影之间执行缩放点积,计算决策。最终概率通过这些得分的 softmax 得出,并根据在开发集上拟合的温度进行调整。
训练流程
- SFT:在 Qwen3.5-9B 和指针头之上,使用 LoRA(r=16)进行两轮监督微调,利用来自公开数据集和合成策略数据的 19,126 个问题。
- CISPO:使用 9,992 个强化学习问题,每题 8 次回放,最多允许 2,560 个思考 token。
- 校准:在开发集上进行最终温度拟合,以确保概率校准。
扩散草稿器
为缓解贪婪解码的延迟问题,Jeeves 实现了一种受 Orthrus 启发的扩散草稿器。该草稿器通过允许掩码 token 跨注意力访问卷积后的键和值,支持 Qwen3.5 的门控 DeltaNet 层。
速度提升:
- 普通贪婪解码(单个问题):109 tokens/秒
- 块 4 草稿器(单个问题):176 tokens/秒(提升 1.6 倍)
- 块 8 草稿器(单个问题):193 tokens/秒(提升 1.76 倍)
实现与使用
Jeeves 与 Jev API 兼容,支持在单个请求中处理三种类型的问题:
- noul:是/否问题,返回校准后的概率。
- choice:多选题。
- score:基于提供图例的评分题。
延迟优化
用户可通过以下选项调节速度与准确性的平衡:
think:开启或关闭推理。max_think:限制推理 token 数量(例如,768 个 token 可将中位延迟从 3.3 秒降至 2.0 秒)。nothink_threshold:若初始“无思考”置信度超过此值,则跳过推理。
社区洞察
开发者之间的讨论凸显了推理模型的高准确性与决策模型对速度要求之间的矛盾。
"如果 p90 延迟高达 17 秒,那这个模型的意义何在?还不如直接用 LLM。Jev 的美妙之处在于它极其廉价且速度惊人。"
其他贡献者建议,采用混合方案——对简单任务使用类似 Jev 的模型,对复杂任务使用 Jeeves 这类具备推理能力的模型——可能是最可行的生产路径。部分用户报告称,在消费级硬件(如 M5 Pro)上,推理过程显著变慢,例如在特定讽刺检测基准中处理 100 条推文需超过 30 分钟。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch