本地 14B 写长文有天花板:要 5000 字只给 2400,且它自己认为写完了
本机 5090D + Ollama 0.40.4 + qwen2.5:14b(Q4_K_M / 14.8B / 上下文 32768)的长度指令遵守度实测。5 档长度要求各跑 2 个随机种子共 10 次采样,num_predict 给 16000:要求 1000 字返 1022 / 1318(超额);2000 字返 1314 / 1350(66% / 68%);3000 字返 1622 / 2191(54% / 73%);5000 字返 2327 / 2452(47% / 49%);不写要求返 692 / 835。10 次 done_reason 全部是 stop(模型自收尾),不是 length 截断。把 num_predict 从 2000 抬到 8000 再到 16000:2000 档 done=length 出 2675 汉字,8000 与 16000 档 done=stop 且输出逐字相同。显存全程未用满。输出按 500 字切窗算 5-gram 重复率:要求 5000 字那次后半段爬到 0.405 / 0.335,约为前半段的 6 倍。
OllamaQwen14B本地部署长文写作输出长度done_reasonnum_predict复读指令遵守度这条适用于
- 本地用 Ollama 跑生成式模型(本机 0.40.4)
- 单次请求输出超过约 2000 字的连续文本
- 量化模型(本机 Q4_K_M、14.8B 尺寸)
版本指纹
Windows 11 + RTX 5090D 32GB;Ollama 0.40.4;qwen2.5:14b(Q4_K_M / 14.8B / context 32768)
具体做法
环境:本机 RTX 5090D 32GB / Ollama 0.40.4 / qwen2.5:14b(Q4_K_M、14.8B、context_length 32768),2026-10-18。测试前已停止本机占卡任务,空载基线 47 W。
【长度指令遵守度(5 档 × 2 seed,num_predict=16000、num_ctx=32768)】
· 要求 1000 字 → 1022 / 1318(102% / 132%)
· 要求 2000 字 → 1314 / 1350(66% / 68%)
· 要求 3000 字 → 1622 / 2191(54% / 73%)
· 要求 5000 字 → 2327 / 2452(47% / 49%)
· 不写要求 → 692 / 835
→ 10 次 done_reason 全部为 stop,无一次为 length。
【num_predict 三档同一 prompt】
· num_predict=2000 → done=length,输出 2675 汉字(撞预算被截)
· num_predict=8000 → done=stop,输出 2367 汉字
· num_predict=16000 → done=stop,输出 2367 汉字(与 8000 档逐字相同)
【输出侧重复度(500 字切窗,5-gram 1-唯一/总)】
· 要求 1000 字:窗口最高 0.220
· 要求 3000 字 seed22:0.040 / 0.105 / 0.177 / 0.282 / 0.011
· 要求 5000 字 seed11:0.020 / 0.071 / 0.032 / 0.125 / 0.080
· 要求 5000 字 seed22:0.060 / 0.230 / 0.179 / 0.405 / 0.335
→ 长输出的后半段重复率可达前半段的 6 倍。
【性能与能耗】
· decode 速度 136.34–138.92 token/s(五档极差 1.9%)
· 功耗:空载 47 W;出字阶段均值 400–470 W
· 全程能耗(已扣空载):要求 5000 字 1.4629 / 1.4774 Wh;要求 1000 字 0.6061 / 0.7881 Wh
本结论为本机实测(2026-10-18;RTX 5090D 32GB / Ollama 0.40.4 / qwen2.5:14b Q4_K_M)。长度为「大约」口径,模型本身有弹性,「兑现比例」= 实测汉字数 / 指令要求字数。汉字计数已剔除标点与 ASCII;eval_count 为 Ollama 返回的真实 token 数。token 预算(num_predict)与上下文长度(num_ctx)是两个不同参数,文中已分别标注。测试前本机另有一项长驻任务占卡(100% / 599.98 W),已停止,避免功耗与耗时被污染。单个模型、单个量化等级的单次结论,换模型尺寸或量化等级需重测,不可直接外推。