故障排查 / 速度不对
装下了但只有 1–3 tok/s:offload 不是慢一点,是慢一个数量级
本站未复现 推导 影响:llama.cpp / Ollama / LM Studio 全版本 · Windows / Linux
现象
模型完整加载成功、能正常回答,但每秒只出 1–3 个字,感觉像卡住。
原因
大部分层被放到内存里了。稠密模型每个 token 都要读全部权重,内存带宽约 55GB/s vs 显存 288–960GB/s,再叠加层间串行的等待损耗。本站例子:70B 的 IQ3_XXS 权重 26.4G 落在 24G 卡之外,offload 出去的部分决定了速度大约 2 tok/s。
按这个顺序处理
- 先接受一个判断:稠密模型靠 offload 凑容量,绝大多数情况没有实用价值,不要试图用参数调优救它。
- 真正能救的是量化退档或换更小模型:把 70B 换成 32B,速度回到两位数。
- 想留在大模型上就用 MoE:专家放内存(--n-cpu-moe)比整层 offload 好得多,因为每 token 只需要搬激活那部分。
- 确认瓶颈在内存带宽而不是磁盘:如果内存吃满触发了页面文件,速度会再掉一个量级,此时加内存条是唯一解。
- 共享主机是另一条路:按小时租一张够大的卡做验证,比买卡便宜。
怎么确认解决了
把日志里的 GPU 层数/总层数记下来,与本站容量表的判定对照:如果超过一半层在内存,1–3 tok/s 就是符合物理的预期结果,不是故障。
来源与可信度
条目性质本站依据容量与速度公式推导撰写
是否已在本站机器复现否——请把这条当线索而不是结论
- https://github.com/ggml-org/llama.cpp/discussions/15013 — 讨论:部分层 offload 到内存使速度受显存带宽限制变慢,对应'partial offload 变慢'
- https://omniforge.online/blog/your-local-llm-is-slow-because-of-five-config-flags — 指南:offload 不足时速度受内存带宽约束,对应条目说明
相关条目
我内存大(64G/128G),是不是就能跑大模型?能跑,但会很慢。内存带宽只有显存的 1/10 到 1/15,稠密模型 offload 之后普遍掉到 1–5 tok/s。大内存的正确用法是给 MoE 放专家。稠密模型和 MoE 有什么区别?为什么 30B-A3B 可能比 14B 还快?MoE 每次只激活一小部分参数,所以它『显存按总量算、速度按激活量算』。30B-A3B 每 token 只读约 3B 权重,能比 14B 稠密模型快 3 倍。