一、前言
最近尝试在 Windows 本地部署 PrismML 发布的 Ternary-Bonsai-2-27B 大语言模型。
这个模型比较特殊,它并不是普通的 GGUF 模型。PrismML 针对三值权重(Ternary)和 Hybrid Attention 做了专门的 llama.cpp 内核优化,因此不能简单地使用普通版本的 llama.cpp 或 LM Studio 加载。
官方模型页面明确说明,Bonsai 2 27B 提供 PTQ1_0 和 PQ2_0 两种 GGUF 打包格式,并且这些模型需要使用 PrismML 自己的 llama.cpp fork。
本文以 Windows + NVIDIA RTX 5070 + CUDA 13.3 为例,使用 PrismML 官方预编译版本部署 Web UI。
二、硬件环境
本文实际测试环境如下:
| 项目 | 配置 |
|---|---|
| 操作系统 | Windows 11 |
| CPU | Intel Core i7-14700K |
| 内存 | 48GB DDR5 6000 |
| GPU | NVIDIA GeForce RTX 5070 |
| GPU 显存 | 12GB |
| CUDA | 13.3 |
| 模型 | Ternary-Bonsai-2-27B-PQ2_0 |
| 推理框架 | PrismML llama.cpp |
| Web UI | llama-server |
RTX 5070 可以通过 PrismML 的 CUDA 13.3 Windows x64 版本正常识别。
三、为什么不能直接使用普通 llama.cpp
如果直接使用普通版本的 llama.cpp 或 LM Studio 加载:
text
Ternary-Bonsai-2-27B-PQ2_0.gguf
可能会出现类似:
text
llama_model_loader: failed to load model
这是因为 Bonsai 2 的 GGUF 使用了 PrismML 自己的 ternary 权重格式和对应的专用计算内核。
官方模型说明中也明确指出:
These files need our llama.cpp build.
也就是说,需要使用 PrismML 官方提供的 llama.cpp fork。
四、下载 PrismML llama.cpp
PrismML 官方提供了预编译版本,可以直接下载,不需要自己编译源码。
官方 GitHub Release:
PrismML llama.cpp --- prism-b10709-9a9394a
这个 Release 提供了多个平台版本,包括:
- Windows x64 CPU
- Windows x64 CUDA 12.4
- Windows x64 CUDA 13.3
- Windows ARM64 CUDA 13.4
- Linux CUDA
- macOS
- Vulkan
- ROCm 等
官方 Release 页面可以看到 Windows CUDA 13.3 x64 版本以及对应的 CUDA Runtime DLL 压缩包。
五、Windows 应该下载哪个版本
如果电脑使用 NVIDIA 显卡,并且是普通 Intel/AMD 64 位 Windows:
选择:
text
Windows x64 (CUDA 13.3)
同时还需要下载:
text
CUDA runtime DLLs
也就是两个压缩包:
text
llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64.zip
以及:
text
cudart-llama-bin-win-cuda-13.3-x64.zip
官方 Release 中明确提供了这两个 Windows CUDA 13.3 x64 下载项。
六、解压 PrismML llama.cpp
例如将第一个压缩包解压到:
text
D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64
解压后应该能够看到:
text
D:\Program Files\
└── llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64\
├── llama-cli.exe
├── llama-server.exe
├── ...
其中:
text
llama-server.exe
就是我们后面启动 Web UI 的核心程序。
七、安装 CUDA Runtime DLL
第一次运行:
cmd
llama-server.exe --list-devices
如果出现类似:
text
error while loading shared libraries:
cublas64_13.dll
说明 CUDA Runtime DLL 没有放到程序目录。
此时将:
text
cudart-llama-bin-win-cuda-13.3-x64.zip
解压到:
text
D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64
最终目录大致类似:
text
D:\Program Files\
└── llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64\
├── llama-server.exe
├── llama-cli.exe
├── cublas64_13.dll
├── cudart64_13.dll
├── ...
注意:
Runtime DLL 和 llama-server.exe 放在同一个目录即可。
八、检查 NVIDIA GPU 是否正常识别
进入 PrismML llama.cpp 目录:
cmd
cd /d "D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64"
执行:
cmd
llama-server.exe --list-devices
如果看到:
text
Available devices:
CUDA0: NVIDIA GeForce RTX 5070 (12199 MiB, 11036 MiB free)
说明 CUDA 环境已经正常。
【截图:执行 llama-server.exe --list-devices 后显示 RTX 5070】
这一步非常重要。
如果这里无法识别 GPU,就不要继续启动模型,需要先解决 CUDA Runtime 或驱动问题。
九、下载 Ternary-Bonsai-2-27B 模型
模型官方下载地址:
Ternary-Bonsai-2-27B-GGUF --- Hugging Face
模型提供:
text
PTQ1_0
PQ2_0
两种 GGUF 打包方式。
其中:
text
PTQ1_0 ≈ 5.95 GB
PQ2_0 ≈ 7.21 GB
官方说明 PQ2_0 使用 2-bit slot 存储三值权重,虽然文件更大,但具有更便宜的 unpacking 成本。
本文使用:
text
Ternary-Bonsai-2-27B-PQ2_0.gguf
十、模型放在哪里
模型实际上可以放在任意目录。
为了方便管理,我使用:
text
D:\Program Files\models\Publisher\Repository\
最终:
text
D:\Program Files\models\Publisher\Repository\
└── Ternary-Bonsai-2-27B-PQ2_0.gguf
也可以使用更加简单的目录,例如:
text
D:\AI\Models\
└── Ternary-Bonsai-2-27B-PQ2_0.gguf
模型目录和 llama.cpp 程序目录不要求相同。
十一、启动 Web UI
进入 llama.cpp 目录:
cmd
cd /d "D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64"
执行:
cmd
llama-server.exe ^
-m "D:\Program Files\models\Publisher\Repository\Ternary-Bonsai-2-27B-PQ2_0.gguf" ^
-ngl 99 ^
-fa on ^
-c 32768 ^
--temp 1.0 ^
--top-p 0.95 ^
--top-k 20
参数说明:
| 参数 | 含义 |
|---|---|
-m |
指定 GGUF 模型 |
-ngl 99 |
尽可能将模型层放入 GPU |
-fa on |
开启 Flash Attention |
-c 32768 |
上下文窗口 32K |
--temp 1.0 |
温度 |
--top-p 0.95 |
Top-P |
--top-k 20 |
Top-K |
其中 temperature=1.0、top_p=0.95、top_k=20 是 PrismML 针对 Thinking Mode 推荐的生成参数。
十二、打开 Web UI
启动成功后,终端会显示服务器监听地址。
通常可以通过:
text
http://127.0.0.1:8080
访问。
进入之后就可以直接和 Ternary-Bonsai-2-27B 对话。
同时 llama-server 还提供 OpenAI-compatible API,因此也可以被其他支持 OpenAI API 的客户端调用。官方模型页面也给出了 llama.cpp server 的本地 API 使用方式。
十三、上下文长度怎么设置
上下文长度由:
text
-c
控制。
例如:
cmd
-c 32768
表示:
text
32K Context
64K:
cmd
-c 65536
128K:
cmd
-c 131072
192K:
cmd
-c 196608
模型本身支持最高约 262K tokens 的上下文。
但是:
模型支持 262K ≠ 你的显卡可以高速运行 262K。
上下文越长,KV Cache 等内存开销越大,因此实际速度会明显下降。
十四、我的 RTX 5070 实测
我的测试机器:
text
RTX 5070 12GB
i7-14700K
48GB DDR5 6000
实际测试结果:
| Context | Decode速度 |
|---|---|
| 16K | ≈ 61.56 t/s |
| 32K | ≈ 62.00 t/s |
| 128K | ≈ 7.90 t/s |
| 192K | ≈ 7.27 t/s |
可以明显看到:
text
16K ─────── 61.56 t/s
32K ─────── 62.00 t/s
128K ────── 7.90 t/s
192K ────── 7.27 t/s
因此,如果主要追求日常聊天和代码开发体验,32K 是目前这台机器实测比较合适的配置。
如果确实需要处理超长文档,可以提高到 128K 或 192K,但需要接受明显的速度下降。
十五、创建 启动 BAT
为了避免每次手动输入命令,可以创建:
text
start-bonsai-32k.bat
内容:
bat
@echo off
chcp 65001 >nul
title PrismML Ternary-Bonsai-2-27B - 32K
cd /d "D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64"
echo.
echo ==========================================
echo PrismML Ternary-Bonsai-2-27B
echo Context: 32K
echo GPU: RTX 5070
echo ==========================================
echo.
llama-server.exe ^
-m "D:\Program Files\models\Publisher\Repository\Ternary-Bonsai-2-27B-PQ2_0.gguf" ^
-ngl 99 ^
-fa on ^
-c 32768 ^
--temp 1.0 ^
--top-p 0.95 ^
--top-k 20
pause
text
start-bonsai-64k.bat
内容:
bat
@echo off
chcp 65001 >nul
title PrismML Ternary-Bonsai-2-27B - 64K
cd /d "D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64"
echo.
echo ==========================================
echo PrismML Ternary-Bonsai-2-27B
echo Context: 64K
echo GPU: RTX 5070
echo ==========================================
echo.
llama-server.exe ^
-m "D:\Program Files\models\Publisher\Repository\Ternary-Bonsai-2-27B-PQ2_0.gguf" ^
-ngl 99 ^
-fa on ^
-c 65536 ^
--temp 1.0 ^
--top-p 0.95 ^
--top-k 20
pause
text
start-bonsai-192k.bat
内容:
bat
@echo off
chcp 65001 >nul
title PrismML Ternary-Bonsai-2-27B - 192K
cd /d "D:\Program Files\llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64"
echo.
echo ==========================================
echo PrismML Ternary-Bonsai-2-27B
echo Context: 192K
echo GPU: RTX 5070
echo ==========================================
echo.
llama-server.exe ^
-m "D:\Program Files\models\Publisher\Repository\Ternary-Bonsai-2-27B-PQ2_0.gguf" ^
-ngl 99 ^
-fa on ^
-c 196608 ^
--temp 1.0 ^
--top-p 0.95 ^
--top-k 20
pause
十六、 BAT 建议放在哪里
可以直接放在:
text
D:\Program Files\
例如:
text
D:\Program Files\
├── start-bonsai-32k.bat
├── start-bonsai-64k.bat
├── start-bonsai-192k.bat
├── llama-prism-b10709-9a9394a-bin-win-cuda-13.3-x64\
│ ├── llama-server.exe
│ ├── llama-cli.exe
│ ├── cublas64_13.dll
│ └── ...
└── models\
└── Publisher\
└── Repository\
└── Ternary-Bonsai-2-27B-PQ2_0.gguf
这样以后升级 PrismML llama.cpp 或模型时,只需要修改 BAT 中对应的路径即可。
当然可以。下面这一段可以直接作为你博客里的 "API 接入" 章节。你的 llama-server 本身就是 OpenAI-compatible API ,所以接入其他 Agent 时,通常只需要把 Base URL、API Key、Model 配好即可。官方 llama.cpp 文档也提供了 /v1/chat/completions 接口;Bonsai 官方示例同样使用 http://127.0.0.1:8080/v1 作为 Base URL。(GitHub1)
十七、通过 API 接入其他 Agent
除了直接通过浏览器使用 llama-server Web UI 之外,llama-server 还提供了 OpenAI-compatible API。
这意味着只要其他 Agent 工具支持 OpenAI API,就可以直接接入本地运行的 Ternary-Bonsai-2-27B,不需要额外部署 API 服务。
1.API 地址
默认情况下服务监听:
text
http://127.0.0.1:8080
OpenAI API 的 Base URL 为:
text
http://127.0.0.1:8080/v1
Chat Completions 接口:
text
http://127.0.0.1:8080/v1/chat/completions
如果 Agent 工具要求填写:
text
Base URL
填写:
text
http://127.0.0.1:8080/v1
即可。
2.获取模型名称
启动 llama-server 后,可以访问:
text
http://127.0.0.1:8080/v1/models
或者直接使用:
cmd
curl http://127.0.0.1:8080/v1/models
服务器会返回当前加载的模型信息。
例如:
json
{
"object": "list",
"data": [
{
"id": "Ternary-Bonsai-2-27B-PQ2_0.gguf",
"object": "model"
}
]
}
不同版本的 llama.cpp 返回的模型 ID 可能略有不同。
建议实际调用 /v1/models 获取当前服务器返回的 id,然后将这个值填写到 Agent 的 Model 配置中。
3.接入其他 Agent 工具
如果 Agent 工具支持自定义 OpenAI Compatible Provider,一般只需要配置三个参数:
text
Provider:OpenAI Compatible
Base URL:
http://127.0.0.1:8080/v1
API Key:
none
Model:
Ternary-Bonsai-2-27B-PQ2_0.gguf
有些工具可能要求填写:
text
API Endpoint
则填写:
text
http://127.0.0.1:8080/v1/chat/completions
需要注意:
如果工具要求的是 Base URL,不要把 /chat/completions 加进去。
即:
text
正确:
http://127.0.0.1:8080/v1
而不是:
text
错误:
http://127.0.0.1:8080/v1/chat/completions
十八、总结
整个部署流程实际上非常简单:
text
GitHub
↓
下载 PrismML llama.cpp
↓
Windows x64 CUDA 13.3
↓
下载 CUDA Runtime DLL
↓
解压到同一个目录
↓
下载 Ternary-Bonsai-2-27B-PQ2_0.gguf
↓
放入模型目录
↓
llama-server.exe --list-devices
↓
确认 RTX 5070
↓
启动 llama-server
↓
浏览器访问 127.0.0.1:8080
↓
开始使用 Bonsai 2 27B
对于 RTX 5070 12GB 这类显卡,建议准备多个启动脚本,根据实际需求切换上下文:
text
start-bonsai-32k.bat 日常使用
start-bonsai-64k.bat 长上下文
start-bonsai-192k.bat 超长上下文
这样不需要修改模型,也不需要重新下载模型,只需要选择不同的 BAT 即可。