部署日期:2026-09-22 | 硬件:GPU 机 RTX 5060 Ti 16GB 模型:
Bucoid/Qwen3.8-27B-Heretic-Ara-16GB-VRAM-IQ4-XS-MTP(bucoid_3.0_mtp.gguf,13.35 GB) 配置:MTP 加速 + 64K 上下文 + q4_0 KV + 无视觉(按用户指定)
已上线。MTP 生效(接受率 52–78%),64K 上下文,显存 15.6 GiB,通过完整生成验证。
bash ~/switch-llm.sh bucoid # 别名 heretic / ara
API:http://192.168.31.31:8080/v1,模型名 bucoid-heretic-27b。
| 项 | 值 |
|---|---|
| 模型 | bucoid_3.0_mtp.gguf(IQ4_XS,自带 MTP 层 blocks=65 / nextn=1) |
| 模型路径 | ~/models/bucoid-heretic-27b/ → 符号链接到 LM Studio 注册表(未复制,省 13.35 GB) |
| 上下文 | 65,536(64K) |
| KV | -ctk q4_0 -ctv q4_0 |
| 投机解码 | --spec-type draft-mtp,ngram-map-k4v --spec-draft-n-max 1 |
| 视觉 | 未加载 mmproj(纯文本;日志中 mmproj/vision 提及 0 次) |
| 显存实测 | 15,566–15,694 MiB(16,311 MiB 总量,余量约 600 MiB) |
| 单元 | llama-bucoid-heretic(disabled 不自启) |
73728(72K)能加载但一生成就崩第一版按"探最大上下文"的思路部署到 73728:服务启动正常、/health 返回 ok、显存 15,790 MiB —— 一切看起来都对。
但第一个真实请求(300 token 的普通生成)直接让进程 SIGABRT core dump:
llama_decode → ... → Main process exited, code=dumped, status=6/ABRT
根因:我最初的探测方法只验证了"服务能启动"(/health),没有验证"能出字"。加载时的显存占用 ≠ 生成时的峰值(CUDA 计算缓冲在 decode 阶段才分配)。余量 520 MiB 不够生成开销。
| 配置 | 加载 | 生成 | 结论 | |---|:--:|:--:|---| | 无 MTP @ 122880 | ❌ | — | 超限 | | 无 MTP @ 114688(112K)| ✅ | 未验证 | 加载通过(未做生成验证)| | MTP @ 81920 | ❌ | — | 超限 | | MTP @ 73728(72K) | ✅ | ❌ SIGABRT | 不可用 | | MTP @ 69632(68K)| ✅ | 未验证 | 加载通过 | | MTP @ 65536(64K) | ✅ | ✅ 通过 | 已采用 | | MTP @ 114688 + -ub 256 | ❌ | — | 缩 micro-batch 也救不回 |
→ 结论:MTP 档的可用上限是 64K(不是 72K)。
方法论教训(值得写进备忘): llama.cpp 服务"起得来"不代表"能用"。凡是逼近显存上限的配置, 必须补一次真实生成请求并确认进程存活,否则会在用户第一次提问时崩溃。
--fit off不加这个参数,llama.cpp 的自动 fit 估算会在加载阶段直接拒绝启动:
W common_fit_params: failed to fit params to free device memory:
n_gpu_layers already set by user to 99, abort
实测在任何上下文下都秒失败(连 64K 都不行),因为它的估算偏保守。你现有的 llama-ko-ridge 单元里也有 --fit off,是同一个原因。
| 任务 | 耗时 | 速度 | MTP 接受率 |
|---|---|---|---|
| 高重复长 prompt(约 3000 token 输入) | 6.0 s | 68.0 tok/s | 70% |
| 数学推理(带思考,587 token) | 14.2 s | 43.1 tok/s | 78% |
| 无审查对白(182 token) | 5.6 s | 35.1 tok/s | 52% |
速度随任务波动(35–68 tok/s),与 MTP 接受率正相关 —— 这是投机解码的常态。
| 想要 | 配置 | 状态 |
|---|---|---|
| MTP 加速 | 64K + draft-mtp | ✅ 已部署 |
| 最大上下文 | 112K + 仅 ngram(关 MTP) | ✅ 加载通过(生成未验证) |
要切到 112K:把单元里 -c 65536 改成 -c 114688、--spec-type 去掉 draft-mtp, 但务必补一次生成验证(按 §2 的教训)。
| 测试 | 结果 |
|---|---|
| 服务启动 | ✅ 6 s |
| 生成可用性(长 prompt 300 token) | ✅ 进程存活 |
| 生成可用性(思考模式 587 token) | ✅ 进程存活 |
| MTP 生效 | ✅ 日志 creating MTP draft context,draft_n 有值 |
| 无视觉 | ✅ 未加载 mmproj |
| 无审查特性 | ✅ 虚构创作场景正常产出,无回避 |
| 别名切换 | ✅ switch-llm.sh bucoid / heretic / ara |
| 档 | 体积 | 上下文 | MTP | 视觉 | 精度 | |---|---:|---:|:--:|:--:|---| | bucoid-heretic(本次) | 13.35 GB | 64K | ✅ 自带 | ❌ | IQ4_XS | | CRACK(Bonsai 2 三值)| 6.71 GB | 192K / 256K | 嫁接 | ✅ | 2.13bpw 三值 | | KO-Ridge(huihui)| 11.73 GB | 128K | ✅ 自带 + DFlash2 | ✅ | 3.7bpw 混合 |
这次的目标是"比 CRACK 少一层损失":CRACK 同时承受极限压缩 + 权重级去审;Bucoid 只有去审一层,位宽 IQ4_XS 高得多。
本报告数字均来自 2026-09-22 本机实测。