三进制Bonsai 2本地部署:16GB显卡双格式实测

事实边界说明:本文唯一证据来源是一篇社区部署手记(掘金,2026-09-21)。文中凡涉及模型架构、基准分数、许可证、采样参数、吞吐方向性结论等内容,均为该社区作者转述官方模型卡或官方吞吐表的说法,尚未经一手官方资料独立核验。作者同机实测数据单独标注,不与上述转述数字混同。

它是什么:社区作者转述的官方口径

该社区作者称,PrismML 在 2026 年 9 月放出二代盆栽 Ternary-Bonsai-2-27B。其转述的核心卖点是:Qwen3.8-27B 的能力,约 1/9 体积,消费级显卡本地跑。作者称 Qwen3.8-27B 是 27B 级模型,FP16 要 54GB 显存;三进制权重把体积压到 7.21GB,一张 16GB RTX 5060 Ti 能装下,还能把 262K 上下文开满,并称官方宣称智能保留 98.2%。

以下均为该社区作者引用官方模型卡的说法,待一手资料核验:

  • 底座是 Qwen3.8-27B,架构不变:混合注意力约 75% 线性注意力 + 25% 全注意力、64 层、262K 上下文、0.46B 视觉塔。
  • 三进制 g128 权重:每个权重只取 -1、0、+1,每 128 个共享一个 FP16 缩放,真实位宽 1.72 bpw,理想体积 5.8GB,约为 FP16 的 1/9.3。
  • embedding 和 LM head 也都是三进制,没有高精度后门。
  • Hadamard 旋转:权重在离线阶段做分块 Hadamard 变换,运行时对激活值做匹配变换。作者称模型卡写明运行时要么会做这个变换,要么拒绝加载。
  • 能力方面,作者称官方 14 项 thinking 模式基准平均 84.78,保留 FP16 约 98.2% 的智能;数学 96.57,编码 89.42;作为对照,传统 IQ2_XXS 只有 72.59。
  • 作者称官方资料明确许可证为 Apache 2.0。

以上数字均来自社区作者转述,本文未独立核验官方模型卡。

两种打包格式

作者称,PTQ1_0 是密集三值,1.75 bpw、5.95GB;PQ2_0 是每个三值占一个 2-bit 槽位,2.13 bpw、7.21GB。同样的权重,不同的装盒方式。作者称官方吞吐表没有 5060 Ti,只给出方向性结论:Blackwell 卡上 PQ2_0 更快,Ada 代和 L4 上 PTQ1_0 反超。该方向性结论同样属于社区转述,未经一手核验。

部署路径

作者称必须用 PrismML 的 llama.cpp fork,原版不认识这种新格式。克隆后对齐 origin/prism,文章使用 b10709;如果装过一代旧 fork,光 git pull 不够,旧源码里连 PQ2_0 都搜不到。

Windows 编译用 VS 2022 BuildTools + CMake + Ninja。作者称 50 系 Blackwell sm_120 要显式指定 CMAKE_CUDA_ARCHITECTURES=120,否则编译不报错、运行才玄学。测试文件 tests/test-dspark-forward.cpp 使用 POSIX 的 setenv/unsetenv,MSVC 会报 C3861,跳过 LLAMA_BUILD_TESTS=OFF 即可。

另一个坑是 --flash-attn 必须带值,写成 on、off 或 auto。作者称不写值,参数解析器会把后面的 --temp 抓来当值,报 unknown value for --flash-attn。模型下载需要主模型和 mmproj,例如 PQ2_0 与 mmproj-Q8_0。

启动时 chat template 直接用模型内置的,不要外挂文件,配 --jinja。作者称二代是默认开启思考的推理模型,官方推荐 thinking 模式 temp 1.0、top-p 0.95、top-k 20;非思考模式才是 temp 0.7、top-p 0.8。该采样参数属于社区转述官方推荐,未经一手核验。显式 -ngl 99 后,--fit on 会自动罢工,日志里只是无害警告。

双格式实测(作者同机实测,非官方数据)

以下为文章作者在同机实测,不是 PrismML 官方吞吐表:RTX 5060 Ti 16GB、fork b10709、-ngl 99、-fa on,llama-bench 默认测试。

指标 PQ2_0 (7.21 GB) PTQ1_0 (5.95 GB) 差距
pp512(提示处理) 976.9 t/s 463.2 t/s PQ2_0 快 2.1 倍
tg128(文字生成) 47.9 t/s 43.7 t/s PQ2_0 快 9.6%
服务器实测生成 ~45.8 t/s ~41.4 t/s PQ2_0 快约 11%
最大上下文 262144(拉满) 262144(拉满) 持平
权重显存占用 6.70 GiB 5.53 GiB PTQ1_0 省 1.2 GiB

作者引用的官方解释是:PTQ1_0 少搬 17% 权重数据,但解包更费指令。生成阶段差距约 10%,提示处理是计算密集型任务,PQ2_0 的 2-bit 槽位解包便宜,因此 prefill 优势更明显。该解释属于社区转述,未经一手核验。

能力测试覆盖数学、逻辑、编程、科学、写作、知识六类,作者称两者装的是同一套三值权重,多数结果一致;一个细节是两者都把贺建奎写成贺建轩,写作差异更可能来自采样随机性。作者据此建议 5060 Ti 及 Blackwell 卡选 PQ2_0,PTQ1_0 的主场是老架构和极端带宽受限环境。

作者还称,服务器约 10 秒完成加载,262144 上下文直接拉满。该加载耗时属于作者自测环境下的观察,非官方指标。

踩坑清单

  • 原版 llama.cpp 拒载;旧 fork 可能静默输出垃圾。
  • git pull 不够,要 reset 到 origin/prism。
  • sm_120 要指定 CUDA 架构。
  • 跳过 POSIX 测试文件。
  • --flash-attn 带值。
  • chat template 用内置。
  • max_tokens 给思考留足余量,或把 reasoning_effort 调到 medium 收敛。

整体成本是一次编译、一次下载、一个启动脚本;从一代升级只需改两行脚本。作者称换来的是官方宣称 98.2% 智能保留度,以及作者实测 47.9 t/s 的本地 27B。


环境:RTX 5060 Ti 16GB / PrismML llama.cpp fork b10709 / Ternary-Bonsai-2-27B PQ2_0 + PTQ1_0 / Windows + CUDA (sm_120)。以上环境与实测数据均来自社区作者,非官方发布。