Jeeves:推理改进类Jev决策模型

Hacker News Top 模型

摘要

Jeeves是一个9B参数的推理增强类Jev决策模型,采用扩散起草器,与先前的模型如Kev和Jev相比,在域外基准测试上实现了更高的准确性。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/29 13:57

PostHog/jeeves 来源:https://github.com/PostHog/jeeves # Jeeves – 推理提升类Jev决策模型 一个具备推理能力的类Jev分类器,使用扩散草稿模型,通过SFT和CISPO进行训练。 ## 致谢 灵感来源于Kev (https://github.com/jaredpalmer/kev)。 ## 亮点 - 一个9B参数、类Jev的模型(基于Qwen3.5-9B,使用LoRA和指针头),它在决策前会进行思考,配备block-4扩散草稿模型,并包含完整的训练代码、训练/验证/测试数据。 - 在从未训练过的测试数据上(0.889 对比 0.822 和 0.857)以及在JevBench的公开层级上(0.935 对比 Jev的0.866)均优于Kev-9B和Jev。 - 支持在同一请求中处理是/否(noul)、多选(choice)和评分(score)问题,通过一个兼容Jev的API实现。 - 在单个H100上,不进行推理思考时约0.3秒/请求,进行思考时中位数耗时3.3秒。可通过截断推理链长度来加速。 - 运行于CUDA(FP8内核适用于Hopper架构)。 ## 问题 类Jev的模型能给出校准良好的决策概率,但准确率较低。因此,许多流程依赖推理模型作为后备。Jeeves使用CISPO训练了一个类Jev的Qwen3.5-9B模型(采用LoRA和指针头),使其在决策前先进行推理。这使其在跨领域任务上性能更佳,并在JevBench难题(公开)上超越了Jev。 ## 结果 在思考模式下使用贪心解码,最大2560个token限制时的准确率。Kev-9B和Jev列的数据是Kev发布的。 | 基准测试 | Kev-9B | Jev | Jeeves | | ———————————————————— | ———————– | ———————– | ———————– | | 测试集总体(跨领域及保留项,按项目加权) | 0.822 | 0.857 | 0.889 | | 迁移总体(MMLU-Pro和埋入状态) | 0.579 | 0.800 | 0.746 | | JevBench总体(231个公开项目) | 0.715* | 0.866 | 0.935 | | QNLI | 0.925 | 0.925 | 0.913 | | SciQ | 0.963 | 0.988 | 0.991 | | TweetEval 有害言论 | 0.775 | 0.813 | 0.813 | | PAWS | 0.763 | 0.788 | 0.875 | | MMLU | 0.738 | 0.900 | 0.793 | | Emotion | 0.600 | 0.588 | 0.647 | | 保留规则结构 | 0.896 | 0.885 | 1.000 | | 对比性策略 | 0.900 | 0.963 | 1.000 | | MMLU-Pro(10分类) | 0.515 | 0.840 | 0.739 | | 埋入状态 | 0.740 | 0.700 | 0.759 | | 以p ≥ 0.9 回答无法知道的问题(越低越好) | 0.000 | 0.090 | 0.055 | | JevBench难题(111个公开项目) | 0.451* | 0.730 | 0.865 | | JevBench ECE(公开项目) | | 0.049 | 0.037 | * 未发布Kev-9B的JevBench结果。此处为Kev-8B (Qwen3)。所有JevBench数据均基于公开的easy、standard和hard层级(231个项目)。未包含sealed judge层级,且Jev和Kev数据仅限相同的公开项目。 不进行思考时,同一检查点在我们的测试集(2962个项目)上得分为0.804,而进行思考时为0.840。 ## 快速开始 要求:Python 3.12 和 CUDA GPU。 bash pip install -r requirements.txt 下载发布权重并启动服务: bash hf download PostHog/jeeves --local-dir jeeves-weights python -m inference.serve --model jeeves-weights --drafter jeeves-weights/drafter_k4.safetensors --port 8009 或者,将你自己的训练检查点融合成独立模型并配合草稿模型服务: bash python export.py runs/cispo/final --out runs/fused python -m inference.serve --model runs/fused --drafter runs/drafter_k4/drafter.safetensors --port 8009 然后发送Jev格式的请求: bash curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{ "state": "鞋子晚了两周才到,而且尺码不对。另外我看到卡上有两笔扣款。", "questions": { "department": {"type": "choice", "instructions": "哪个团队应该处理这个?", "criteria": {"returns": "换货、退款、错误或损坏的商品", "shipping": "配送状态、延迟、丢失包裹", "billing": "扣款、发票、支付问题"}}, "escalate": {"type": "noul", "instructions": "这是否需要紧急人工处理?"}, "frustration": {"type": "score", "instructions": "客户有多沮丧?", "criteria": ["平静", "沮丧", "非常生气"]} }, "options": {"max_think": 512}}' 在单个H100 (FP8) 上的响应,三个问题并行思考: json { "model": "jeeves-latest", "answers": { "department": { "type": "choice", "choice": "billing", "confidence": 0.19, "probabilities": { "returns": 0.4, "shipping": 0.14, "billing": 0.46 } }, "escalate": { "type": "noul", "noul": 0.72 }, "frustration": { "type": "score", "score": 1.5, "legend": { "0": "平静", "1": "沮丧", "2": "非常生气" }, "probabilities": { "0": 0.04, "1": 0.43, "2": 0.54 }, "confidence": 0.75 } }, "usage": { "input_tokens": 129, "output_tokens": 160, "reasoning_tokens": 1536 }, "latency_ms": 8141.6 } ### Python sdk/ 是Jev Python SDK(typesafe-sdk)的即用型替代品: bash pip install ./sdk python from jeeves_sdk import Choice, Noul, Score, TypeSafeClient with TypeSafeClient() as client: result = client.system_one( state="我被重复扣款了。请帮忙处理。", questions={ "billing": Noul(instructions="这是关于账单问题吗?"), "tone": Choice(instructions="语气是什么?", criteria={"calm": None, "angry": None}), "urgency": Score(instructions="这有多紧急?", criteria=["可以等", "本周内", "今天"]), }, max_think=768, return_reasoning=True, ) print(result.nouls["billing"].noul, result.choices["tone"].choice, result.scores["urgency"].score) print(result.reasoning["tone"].text) 客户端默认连接到 http://127.0.0.1:8009(或 JEEVES_BASE_URL),无需API密钥,最长等待120秒。 ### 选项 options 是可选的,不发送它的Jev客户端会忽略它。服务器范围的默认值通过匹配的serve标志设置。 | 选项 | 默认值 | 效果 | | —————–– | —–– | –––––––––––––––––––––––––––––––––––––– | | think | true | false 仅根据提示回答(约0.3秒) | | max_think | 2560 | 将每条推理链截断到此token数,然后回答 | | nothink_threshold | null | 当不思考的置信度达到此值时,直接回答不进行思考 | | return_reasoning | false | 在响应中包含每个问题的推理文本 | 在325个验证问题上: | 设置 | 准确率 | 平均推理token | 中位数 / p90 延迟 | | –––––––––––––––––––– | –––– | ——————— | –––––––––– | | 完整思考 | 0.825 | 1,138 | 3.3秒 / 17.1秒 | | max_think 768, nothink_threshold 0.9 | 0.806 | 344 | 2.0秒 / 5.6秒 | | 不思考 | 0.775 | 0 | 约0.3秒 | ## 工作原理 问题、状态和答案被加载到Qwen聊天模板中,格式如: text ...state... instructions option 1 option 2 ... 然后模型展开其推理链,在 </think> token之后,我们追加: text instructions option 1 option 2 ... 一个指针头通过以下方式为每个选项评分:对齐于 </think> token 的隐藏状态的查询投影与对齐于该选项 </think> token 的隐藏状态的键投影之间的缩放点积,其中: text , , , , = "", "", "", "", "" 这些是Qwen分词器中较少使用、稀有的token。消融研究发现,在提示中使用“State”等纯文本代替会降低性能。同样,在推理块之后不重复问题也会降低性能。最终概率是选项得分的softmax,并除以在验证集上拟合的温度参数。 ### 训练 1. SFT(2个epoch,在8个GPU上596步)。对Qwen3.5-9B的所有投影及指针头使用LoRA r=16,在来自12个公开数据集和合成策略数据的19,126个问题上训练。一半问题带有从基础模型采样的推理链。 2. CISPO(一个624步的计划,在第402步停止)。9,992个强化学习问题,每个在温度1下进行8次展开,推理token上限为2,560。 3. 校准。在验证集上拟合一个单一温度参数,随检查点存储。在第402步停止可保持最佳校准和验证集分数。超过此步数后,指针头会在饱和的强化学习样本池上变得过于尖锐。 ### 扩散草稿模型 对冻结模型的扩散视图(drafter/),灵感来自Orthrus (https://arxiv.org/abs/2605.12825)。与Orthrus仅支持纯注意力模型不同,它通过让掩码token交叉关注Gated DeltaNet层的卷积后键和值,从而支持Qwen3.5的Gated DeltaNet层。 | | 每秒链式token数 | | —————————————–– | ———————– | | 普通图解码贪心解码,一个问题 | 109 | | block 4,一个问题 | 176 (1.6×) | | block 8,一个问题 | 193 (1.76×) | | block 4,八个问题批量处理 | 总共约960 | Block 4是默认选择,因为在批量处理多个问题时仍保持低成本。 ## 复现 ### 数据 你可以使用准备脚本在本地构建数据集。这会从Hugging Face下载在 prep/public.py 中固定版本的公开数据集: bash python -m prep.prep 每个公开数据集遵循其自身的许可证。 ### 训练 在8个GPU上,使用 data/ 中的数据,bash run.sh 会运行整个流程: bash torchrun --nproc_per_node 8 train.py sft --run-dir runs/sft torchrun --nproc_per_node 8 train.py cispo --run-dir runs/cispo --init runs/sft/final torchrun --nproc_per_node 8 test.py runs/cispo/final torchrun --nproc_per_node 8 jevbench.py runs/cispo/final python export.py runs/cispo/final --out runs/fused torchrun --nproc_per_node 8 -m drafter.gen --model runs/fused torchrun --nproc_per_node 8 train.py drafter --model runs/fused --block 4 --run-dir runs/drafter_k4 ## 仓库目录 | 路径 | 内容 | | –––––––––––––––––––– | ———————————————————————————– | | model/ | Qwen3.5 (Gated DeltaNet + 门控注意力), LoRA, 指针头 | | loader/ | 提示格式、分词和批处理 | | prep/ | 数据集构建 (prep.py) 和合成生成器 | | trainer.py, train.py | SFT, CISPO 和草稿模型训练 | | test.py, jevbench.py, calibrate.py | 评估, JevBench, 温度拟合 | | export.py | 将LoRA融合到包含指针头和温度参数的独立模型 | | drafter/ | 草稿模型、链采样、融合推测解码器 | | inference/ | FP8内核、批量推测引擎、兼容Jev的服务器和基准测试 | | sdk/ | jeeves_sdk, Jev Python SDK的即用型替代品,包含推理选项 | ## 局限性 - 知识类问题不及Jev(MMLU 0.793 对比 0.900,MMLU-Pro 0.739 对比 0.840)。 - 在尾部延迟上思考较慢:完整链时p90为17秒。当延迟重要时,使用 max_think 和 nothink_threshold。 - JevBench之外的Kev和Jev对比使用了相同来源但不同的项目。 - 未包含语言一致性奖励,因此推理链可解释性不强。 ## 引用 如果您使用Jeeves、其训练方法或其草稿模型,请引用: bibtex @software{waltz2026jeeves, author = {Waltz, Nicholas P.}, title = {Jeeves: Reasoning Improves Jev-like Decisions}, year = {2026}, url = {https://github.com/PostHog/jeeves}, note = {使用SFT和CISPO训练的Qwen3.5-9B决策模型,配备block-4扩散草稿模型} } ## 参考文献 - Jev’s Architecture Unmasked (https://archerhume.com/posts/jevs-architecture-unmasked),Kev和Jeeves所遵循的Jev设计。 - Qwen Team. Qwen3.5-9B (https://huggingface.co/Qwen/Qwen3.5-9B),基础模型。 - Yang, Kautz, Hatamizadeh. Gated Delta Networks: Improving Mamba2 with Delta Rule (https://arxiv.org/abs/2412.06464). ICLR 2025. - Hu et al. LoRA: Low-Rank Adaptation of Large Language Models (https://arxiv.org/abs/2106.09685). ICLR 2022. - MiniMax. MiniMax-M1: Scaling Test-Time Compute Efficiently with Lightning Attention (https://arxiv.org/abs/2506.13585). 2025. 引入CISPO。 - Guo, Pleiss, Sun, Weinberger. On Calibration of Modern Neural Networks (https://arxiv.org/abs/1706.04599). ICML 2017. 温度缩放。 - Orthrus (https://arxiv.org/abs/2605.12825), arXiv 2605.12825. 本项目适配到Gated DeltaNet的扩散草稿模型。 - Leviathan, Kalman, Matias. Fast Inference from Transformers via Speculative Decoding (https://arxiv.org/abs/2211.17192). ICML 2023.

相似文章

Jev

Product Hunt

Jev 是 TypeSafe AI 的前沿模型,用于快速、结构化的AI决策,返回带有校准概率的类型化输出,现已向所有人开放。

Jev / TypesafeAI 在 LLM 领域堪称革命性

Reddit r/ArtificialInteligence

Jev 是一种新型 AI 模型,它输出评分、选择或二元决策,因其在创意查询时的速度、经济性和准确性而备受赞誉,不同于传统的前沿模型。

新的 system 1.5 模型在所有 4 个基线上都大幅超越 JEV,并且在图像 JEV 基准测试中排名第一(没错,它是多模态的)

Reddit r/artificial

新款模型 Wity-1 是一个推理决策模型,定位介于 Jev 这类非推理决策模型与完全推理的 LLM 之间。据称它在全部 4 项基准测试中击败了 Jev,并在 Image Jev Bench 上排名第一,同时支持多模态。它只进行"刚刚好"的推理——直到内部 LLM 概率表明答案已经得出。