跳到正文
Hacker News· mrkn1·· 9 天前AI 评分34

Show HN:gutsy-0.8b 本地决策模型,CPU 上输出校准概率

Show HN: CPU First Decision Model

AI 导读

gutsy-0.8b v0.4 发布,这是 Qwen3.5-0.8B 的微调模型,输入文本或 JSON 状态与 yes/no、choice、score 类问题,直接返回各选项概率,不做文本生成、不联网、无按次调用成本。

正文 · AI 翻译

gutsy

带校准概率的本地决策模型。 发送一个状态(文本或 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 中的任意文件。数据是虚构的;每个概率都来自你的本地模型。

支持工单分诊 反馈表 模型路由器
Support triage
针对一张工单的团队、退款和情绪
Feedback sheet
对 30 行数据提出任意是/否问题
Model router
为每条消息挑选最便宜的模型
事实核查 通话雷达 迷宫自动游玩
Fact check
根据来源对每条主张评分
Call radar
销售通话中的实时触发
Maze autoplay
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