Ternary Bonsai 2 27B · NInfer(RTX 3080 20G / sm_86 / Windows)开箱版
本仓 = 开箱即用:权重 + 引擎二进制 + 一键启动脚本全都在这里。 下载整个仓,装好 NVIDIA 驱动,双击
start.bat就能跑。不需要装 CUDA 工具包(cudart 已静态内嵌进引擎 exe)。
这是什么
Ternary Bonsai 2 27B:1.58-bit 三元量化(w ∈ {−1,0,+1} + Hadamard 旋转基)的 27B 模型, 底座 Qwen3.8-27B(64 层:16 纯注意力 + 48 GDN),全精度权重约 18.2 GB → 量化后 7.74 GB。 引擎侧把三元格式 + 运行时折叠基变换接进了 NInfer 单卡推理引擎,并拼入了同族 MTP 投机头(K=2)。
开箱实测(RTX 3080 20G, sm_86, Windows, 240W 功耗墙)
引擎自报 summary(--max-context 32768 --spec mtp --draft-tokens 2 --kv-dtype bf16):
| 项 | 值 |
|---|---|
| 权重加载 | 1.9s @ 3.65 GB/s |
| 预填充 | 256.6 tok/s |
| 解码(MTP K=2 投机生效) | 78.7 tok/s |
| MTP 接受率 | 66.7%(2.33 tok/轮) |
| 显存占用 | 权重 7.12 GiB + KV(bf16, 32K) 2.13 GiB ≈ 9.3 GB(20G 卡绰绰有余) |
| 思考档位 | serve 支持 --reasoning-effort xhigh 深度思考 |
| 功耗/温度 | 240W 墙下满载 62℃ / 风扇 50%,极稳 |
注:首次启动会预热 CUDA graph(本机约 4.5 分钟),之后启动秒级就绪。
目录结构
model.ninfer ← 三元模型制品(含 MTP 头),7.74 GB
engine/
ninfer.exe ← 命令行推理
ninfer-serve.exe ← OpenAI 兼容 HTTP 服务
ninfer-perplexity.exe ← PPL 评测
start.bat ← 一键启动 serve(32K ctx / MTP K=2 / 3080)
SHA256SUMS.txt ← 全部文件校验和
pack_bonsai.py ← (可选)GGUF → .ninfer 三元打包器
build_bonsai.cmd ← (可选)sm_86 引擎构建脚本(要自己编译引擎才需要)
快速开始(Windows)
- 装好 NVIDIA 驱动(本仓引擎编译于 CUDA 13.3,驱动 610+ 即可,不用装 CUDA Toolkit)
- 把整个仓拷到任意目录(建议 SSD,权重 7.7G)
- 双击
start.bat→ 服务起在http://127.0.0.1:8080/v1(OpenAI 兼容)- 如果你的 3080 不是
--device 1(看nvidia-smi里的 index),改start.bat里那一行
- 如果你的 3080 不是
命令行单次推理:
engine\ninfer.exe ..\model.ninfer --prompt "你好" --max-new 64 --device 1 --greedy ^
--max-context 32768 --kv-capacity auto --kv-dtype bf16 --spec mtp --draft-tokens 2
OpenAI 兼容用法(serve 起来后):
from openai import OpenAI
c = OpenAI(base_url="http://127.0.0.1:8080/v1", api_key="none")
r = c.chat.completions.create(
model="ternary-bonsai-2-27b",
messages=[{"role":"user","content":"你好,介绍一下你自己"}],
max_tokens=256)
print(r.choices[0].message.content)
关键参数说明(别踩坑)
- 中文系统跑 CLI 带中文 prompt:引擎是 C 运行时窄
main,--prompt "中文..."会按系统 ANSI 代码页(中文 Windows=GBK)解释命令行,UTF-8 字节会报failed to normalize UTF-8 text as NFC。两个解法(都验证过):- 用
--messages传 UTF-8 JSON 文件(推荐,最稳):echo [{"role":"user","content":"你好"}] > msg.json ninfer.exe model.ninfer --messages msg.json ... - 控制台先
chcp 65001(start.bat已带;serve 模式读 stdin/HTTP,无此问题)
- 用
--max-context必须显式给(如 32768)。不传的话按默认超大上下文准备 CUDA graph, 启动会卡很久或内存爆。- serve 建议加
--host-kv-mib 1024:默认 8GB host 锁页内存在双卡机容易顶爆, 1GB 足够。start.bat已带。 - MTP 投机:
--spec mtp --draft-tokens 2是甜点;draft tokens 拉大接受率会崩。 - 功耗墙 240W(
nvidia-smi -pl 240或 NVIDIA 面板)是 LLM 推理甜点:带宽瓶颈下再高功耗只热不涨速。 - 单卡引擎,不支持多卡切分。
许可与来源
- 引擎与工具:Apache License 2.0(NInfer 派生)
- 权重:Ternary Bonsai 2 27B(PrismML 系,底座 Qwen/Qwen3.8-27B)
- MTP 头:Qwen3.8-27B 自带 NextN 层(同族同权重,数值精确移植,12/12 张量余弦 ≥ 0.99966)
校验
sha256sum -c SHA256SUMS.txt # Linux/Git Bash
certutil -hashfile model.ninfer SHA256 # Windows(对照 SHA256SUMS.txt 第一行)