我开源了 OpenBonsai:把你自己的 BF16 模型与微调压缩成约 2 GB 的三值 GGUF
楼主为其开源浏览器 agent 项目 WebBrain 寻求本地小模型方案,开源了 OpenBonsai:一个 Apache-2.0 的训练后三值量化框架,兼容 Prism 的 PTQ1_0 GGUF 格式,填补了 Prism 只发布三值权重与推理运行时、未公开 BF16 压缩流水线的空白。流水线结合带符号 Hadamard 旋转、顺序 GPTQ、FP16 组 scale、模型自生成推理轨迹校准与 scale 蒸馏(部分思路受 Intel Labs China 论文「Attend to Your Own Thoughts」启发);Qwen3.5-9B 从约 18 GB 压至 1.997 GB,单张 RTX 5090 约 5 小时完成压缩。作者坦承与 Prism 官方三值模型仍有质量差距、推理暂依赖 Prism 的 llama.cpp fork,欢迎三值量化/GPTQ/低比特推理方向的反馈。
我一直在为我的开源浏览器 agent WebBrain 试验小模型。长期目标是尽可能多地把智能放到本地运行,理想情况下通过 WebGPU。我特别感兴趣的一种做法是 Prism ML 的 Ternary Bonsai:用三值权重(-1、0、+1)把 9B 模型压缩到约 2 GB。Prism 发布了权重和推理运行时,但没有发布完整的 BF16 到三值压缩流水线。你可以微调他们现成的三值模型,却没有任何公开途径把你自己的 BF16 微调压缩成他们的格式。于是我试着做了一个。这就是 OpenBonsai:一个 Apache-2.0 的训练后三值量化框架,兼容 Prism 的 PTQ1_0 GGUF 格式。
工作原理:Intel Labs China 近期论文「Attend to Your Own Thoughts」(Wang et al.)启发了其中的部分思路——用模型自身的推理轨迹做校准,而不是只依赖通用文本。该流水线组合了:
- 带符号 Hadamard 旋转,以降低权重离群值
- 顺序 GPTQ,把权重量化到 {-1, 0, +1}
- FP16 组 scale(每 128 个权重一个)
- 用自生成推理轨迹做校准
- 对照原 BF16 模型输出分布的 scale 蒸馏
- 导出为 Prism 的 PTQ1_0 GGUF 格式
结果:Qwen3.5-9B:约 18 GB → 1.997 GB。这是完整的 GGUF 文件,而不只是 transformer 权重:包含压缩后的 embeddings、LM head、其余全部模型张量、组 scale、tokenizer、chat template 与元数据。运行时内存需求更高。压缩在单张 RTX 5090(32 GB)上约需 5 小时。
我们目前压缩模型的分数:
| 基准 | 原 BF16 | OpenBonsai | Prism Bonsai 2 |
| --- | --- | --- | --- |
| GSM8K(thinking 关) | 77/100 | 65/100 | 77/100 |
| HumanEval(thinking 关) | 44/50 | 34/50 | 45/50 |
| GSM8K(thinking 开) | 36/50 | 32/50 | 46/50 |
| HumanEval(thinking 开) | 22/25 | 14/25 | 24/25 |
一些有趣的发现:
1. 蒸馏帮助很大。scale 蒸馏把开发集 NLL 从 3.48 降到 2.89,ARC-Easy 准确率从 13/20 升到 19/20。
2. 校准数据影响巨大。改用自生成的数学与代码轨迹提升了推理与编码表现;在初步评测中加入更多偏代码的校准数据后,HumanEval 从 19/50 升到 34/50。
3. 该方法可泛化到 Qwen3.5 之外。我们用同一条流水线把 Qwen3-8B 压缩成 1.8 GB GGUF,未改动通用 dense adapter,它可在 Prism 的 llama.cpp fork 中运行。
4. 模型两端(embedding 与 LM head)全三值是可行的。我们对 embedding 与 LM head 也做了量化,而不是在最终文件里留下大块 FP16 张量。
局限:这仍是研究预览。在多数推理与编码评测上,Prism 官方三值模型优于我们的版本。部分代码训练 prompt 改写了 HumanEval 题目,因此我们最初 34/50 的结果可能偏乐观;仓库中记录了这些重叠与额外的 held-out 评测。已测试的配置做压缩需要 32 GB GPU,更低显存配置未经验证。推理目前依赖 Prism 的 llama.cpp fork,尚不支持上游 llama.cpp 与 WebGPU。支持的架构仍然有限。
我附上了失败的实验、消融、评测脚本与阶段性发现,希望让压缩过程可复现,并以开放的方式持续改进。
链接:框架(Apache-2.0):https://github.com/esokullu/openbonsai ;压缩后的 Qwen3.5-9B 模型:https://huggingface.co/webbrain-one/openbonsai-qwen-3.5-9b ;项目网站:https://openbonsai.org ;Intel Labs 论文:https://arxiv.org/abs/2608.01078
特别欢迎从事三值量化、GPTQ 或低比特推理的朋友给出反馈。我们的方法与 Prism 之间显然仍有质量差距,但我认为把 BF16 到三值的流水线做成开放、可复现的是个有用的起点。如果你也想试着压缩自己的微调模型,我很乐意听听进展如何。