Show HN:gutsy-0.8b 本地决策模型,CPU 上输出校准概率
Show HN: CPU First Decision Model
gutsy-0.8b v0.4 发布,这是 Qwen3.5-0.8B 的微调模型,输入文本或 JSON 状态与 yes/no、choice、score 类问题,直接返回各选项概率,不做文本生成、不联网、无按次调用成本。
带校准概率的本地决策模型。 发送一个状态(文本或 JSON)和带类型的问题(是/否、选择、评分);即可获得每个选项的概率。无文本生成、无网络调用、无按次调用成本。API 遵循 Jev 风格的 Decisions 格式,因此现有客户端大多只需更换一个新的 base URL。
| 模型 | gutsy-0.8b v0.4,基于 Qwen3.5-0.8B 的微调:Q8_0(775 MB)或 Q4_K_M(505 MB,快 25-30%),发布于 Hugging Face |
| 运行时 | gutsy-inference,在普通 CPU 上运行 llama.cpp |
| 文档 | 模型卡、发布说明 |
| 许可证 | Apache 2.0 |
为什么使用它
- 已校准。 0.8 大致意味着 80%(验证校准误差 0.022)。
- 本地且私密。 在 CPU 上运行;你的数据永远不会离开本机。
- 确定性。 同一台机器和构建版本上,相同请求得到相同概率。
- 对选项顺序稳健。 打乱选项顺序时,96-97% 的答案保持不变。
- 后续追问成本低。 状态只编码一次;每个额外问题只消耗其自身的 token。
- 最多支持 255 个选项,以及一个表示“这些都不合适”的
reject概率。
快速开始
git clone https://github.com/kouhxp/gutsy pip install -e gutsy/gutsy-inference # needs llama-cpp-python >= 0.3.35 pip install -U huggingface_hub hf download kouhxp/gutsy --include "gutsy-0.8b-v04*" --local-dir gutsy/gutsy-inference/models cd gutsy/gutsy-inference cp models.example.json models.json gutsy-inference check # expect "caching OK" for both models gutsy-inference serve # http://127.0.0.1:8765
curl -s http://127.0.0.1:8765/v1/systemone -H 'Content-Type: application/json' -d '{ "state": "Order 1182 shipped Monday. The customer says it arrived Thursday with the box crushed.", "questions": {"decision": {"type": "choice", "instructions": "What should support do next?", "criteria": {"refund": "issue a refund", "replace": "send a replacement", "escalate": "a manager reviews it within 24 hours"}}}}'
默认模型是 Q8_0;发送 "model": "gutsy-0.8b-v04-q4" 可使用更小的文件。选择和评分答案还会返回 confidence、margin 和 reject。端点、问题类型以及如何设置阈值见 运行时 README。
浏览器演示
用 gutsy-inference serve --cors 启动服务器,然后打开 gutsy-inference/examples 中的任意文件。数据是虚构的;每个概率都来自你的本地模型。
| 支持工单分诊 | 反馈表 | 模型路由器 |
|---|---|---|
![]() 针对一张工单的团队、退款和情绪 |
![]() 对 30 行数据提出任意是/否问题 |
![]() 为每条消息挑选最便宜的模型 |
| 事实核查 | 通话雷达 | 迷宫自动游玩 |
![]() 根据来源对每条主张评分 |
![]() 销售通话中的实时触发 |
![]() gutsy 玩迷宫追逐 |
--cors 允许你访问的任何页面查询服务器,因此不使用时请关闭它。
结果
所有 gutsy 数字均为我们在公开条目上测得;分数为准确率。其他系统的数字来自所注明的来源,可能使用不同样本,因此请将比较视为参考性。
gutsy vs Laya vs Jev
| gutsy Q8_0 | Laya | Jev | |
|---|---|---|---|
| JevBench 公开条目(231) | 0.732 | 0.537 | 0.866 |
| BANKING77,对全部 77 个意图进行零样本测试 | 0.613 | 0.382 | 0.764 |
JevBench:微调后的 Laya 和 Jev 来自其他项目在同一公开集上的报告;官方 JevBench 结果使用密封条目。BANKING77:gutsy 在完整测试集上;Laya 和 Jev 来自 dhruvmehra/jevbench 的 500 条样本。
按难度分层的 JevBench
| Q8_0 | Q4_K_M | |
|---|---|---|
| 简单(48) | 48 | 47 |
| 原始(72) | 65 | 62 |
| 困难(111) | 56 | 52 |
| 总计 | 0.732 | 0.697 |
基准测试
| gutsy Q8_0 | gutsy Q4_K_M | Jev | |
|---|---|---|---|
| Financial PhraseBank | 0.927 | 0.926 | 0.770 |
| RAGTruth * | 0.813 | 0.807 | 0.773 |
| WinoGrande * | 0.620 | 0.629 | 0.907 |
| JudgeBench | 0.539 | 0.563 | 0.786 |
| BBH | 0.481 | 0.474 | 0.943 |
* 这些任务的训练集划分出现在训练数据中(测试条目从未出现)。Jev 数字来自 Jeff-0.8B 项目的 README,基于这些基准的不同样本。
由我们在每个任务相同的 700 条条目上测得:
| gutsy Q8_0 | Jev(通过 API) | |
|---|---|---|
| BoolQ | 0.837 | 0.906 |
| SNLI | 0.870 | 0.883 |
| CommonsenseQA(未训练) | 0.577 | 0.863 |
另外:20-254 个选项的列表 0.991;当缺失事实决定答案时弃权 0.896。
弱点
在自动化上述任何一项之前,请先在你自己的数据上测试:
- 日期和数字运算 接近随机。请在代码中计算,然后询问结果。
- 新的多步规则手册(JevBench long_policy 0.32)。
- 歧义:在规则已经明确的情况下,仍有约三分之一的情况含糊其辞。
- 评判相近的答案对以及世界知识(见 JudgeBench 和 CommonsenseQA)。
- 在困难、不熟悉项目上的校准(误差 0.137,验证集上为 0.022)。
- CPU 上的长状态:在 JevBench 的困难层级(Q8_0)上中位数为 4.3 秒,第 95 百分位为 27 秒。
- 仅英文。
训练
在约 105,000 个问题上对 Qwen3.5-0.8B 进行全量微调(一个 epoch,一块 80 GB GPU,约一小时), 使用交叉熵加上软标签上的 Brier 损失。三分之一的数据是由一个 开放教师模型(Qwen3.8-27B)编写的场景,且仅在两次独立运行结果一致时才保留;其余是 公开数据集(阅读、分类、路由、评判、合同)以及带有精确标签的代码生成谜题。 如果任何问题模板的答案可以从表面特征(如选项长度或位置)预测出来,构建就会失败。详情和来源:MODEL_CARD.md。
披露
- 训练数据中任何地方都没有使用闭源模型的输出。
- 一些谜题针对 BBH 和 JevBench 系列上已知的薄弱点,但没有使用任何 BBH 或 JevBench 的条目、 模板或措辞,并且训练数据已针对 JevBench 和评估面板进行了去污处理。
- 域内数据:RAGTruth、WinoGrande、CLINC150 和 MASSIVE 训练集划分。BANKING77 被留出, 因此上述比较对三个系统都是零样本的。
- 尚无官方 JevBench 结果。
许可证
代码和权重:Apache 2.0,基础模型和教师模型也是如此。训练数据使用 CC BY 4.0、 CC BY-SA、CC0、MIT 和 Apache 2.0 来源,已在 MODEL_CARD.md 中注明(Jev Decisions v1 为 CC BY 4.0, 附带上游 NVIDIA 条款);重新分发数据本身意味着要遵守每个来源的条款。
来源:Hacker News · github.com






