用《杜骗新书》“假馬脫緞"一文测试本地 LLM 的文言文翻译能力,记录上下文配置和多模型对比过程。
问题:回答被截断 链接到标题
Ollama 默认 num_ctx=2048,客户端设到 4096 仍然不够。日志:
slot release: stop processing: n_tokens = 4095, truncated = 1
prompt 占 ~1000 tokens,只剩 3000 给生成,翻译到一半就被截断。
解法:服务端定制模型 链接到标题
客户端不支持按模型调参时,在 Ollama 服务端创建定制模型即可:
echo 'FROM gemma4:12b
PARAMETER num_ctx 16384' > gemma4-16k.Modelfile
ollama create gemma4:12b-16k -f gemma4-16k.Modelfile
16GB 显存各模型上下文上限 链接到标题
| 模型 | 模型大小 | 每 token KV cache | 建议上下文 |
|---|---|---|---|
| qwen3.5:9b | 6.6 GB | ~32 KB | 128K |
| gpt-oss-abliterated:20b | 13 GB | ~34 KB | 64K |
| gemma4:12b | 7.4 GB | ~448 KB | 16K |
Gemma4 的 KV 投影维度 512 per head,48 层中 40 层为 8 KV heads,导致 KV cache 开销远大于前两者。但滑动窗口层(8 层 1 KV head)用环形缓冲区节省了空间。
翻译效果对比 链接到标题
qwen3.5:9b-128k 链接到标题
结论:不可用。 前面还行,越往后越乱,最后几段输出原文 + 繁体字,指令跟随能力不足。
gpt-oss-abliterated:20b-64k 链接到标题
结论:一般。 首 token 延迟低,但文言文理解差,误译多,20B 参数优势未体现。
gemma4:12b-16k 链接到标题
truncated: 0(完整完成)
耗时: ~4.4 分钟 / 生成约 8000 tokens
结论:最佳。 翻译基本通顺,文言文理解到位,叙事逻辑、人物对话、情节转折均准确传达。
小结 链接到标题
- 参数大不等于翻译好。 9B 和 20B 都不如 12B 的 gemma4,架构和训练数据更关键。
ollama create定制上下文是通用解法,不限客户端。- KV cache 差异巨大,32 KB/token 到 448 KB/token,选模型前先算显存账。