故障排查 / 速度不对
按回车主卡很久,但开始吐字之后就正常
本站未复现 推导 影响:全部 全版本 · Windows / Linux / macOS
现象
第一次提问要等 10–60 秒才出第一个字,之后 tok/s 正常;长文档提问等待更夸张。
原因
这是预填充(prompt eval)阶段:模型要把整段输入过一遍并建立 KV cache,它是计算密集的,而且和上下文长度的关系近似平方(注意力部分)。它和 decode 速度是两个完全不同的指标,本站表里给的 tok/s 只描述后者。
按这个顺序处理
- 开 flash attention(llama.cpp 的 -fa,或框架里的对应开关),长输入的预填充能快 10–30%。
- 缩短输入:把系统提示词从 2000 字压到 300 字,收益直接体现在首字延迟上。
- 复用会话而不是每次重放全部历史(支持 prompt cache 的框架会明显受益)。
- 确认预填充也在 GPU 上:如果大部分层在内存,预填充会比 decode 更惨。
- 接受一个事实:读 5 万 token 的文档,任何本地方案都要等,这不是故障。
怎么确认解决了
首字延迟下降到你可以接受的水平;本站没有把 TTFT 纳入估算,所以这个数只能实测,不能从表里读。
来源与可信度
条目性质本站依据容量与速度公式推导撰写
是否已在本站机器复现否——请把这条当线索而不是结论
- https://github.com/ggml-org/llama.cpp/discussions/15013 — 讨论:prefill/首字速度与显存带宽、驱动相关,对应'首字慢是预计算'说明
- https://omniforge.online/blog/your-local-llm-is-slow-because-of-five-config-flags — 指南:KV cache/上下文/批次对首字与速度影响大于 GPU,对应条目说明
相关条目
tok/s 是多少才够用?我是不是需要很快?中文阅读速度约 5–8 tok/s,所以 15 tok/s 以上就跟得上你阅读;25–40 是舒服,60 以上你反而读不过来。只有批量生成才需要追求高速。不花钱让本地模型变快的 5 个开关① -ngl 拉满 ② 限制上下文 ③ KV 量化 ④ 开 flash attention ⑤ 关掉没用的多模态塔。前两个通常就够。