故障排查 / 速度不对
速度只有估算的一半:层没有全部进显存
本站未复现 推导 影响:llama.cpp / Ollama / LM Studio 全版本 · Windows / Linux
现象
本站容量表推算 30 tok/s,实际只有 8–15;显存看起来没满;模型能正常回答。
原因
框架只把一部分层放进了显存,剩下的每生成一个 token 都要从内存读一遍。内存带宽约 55GB/s,而 16G 级显卡带宽 288–960GB/s,差 5–17 倍,所以哪怕只漏两层都可能明显掉速。Ollama 会自动决定这个比例,且不一定告给你。
按这个顺序处理
- llama.cpp:显式加 -ngl 99(把所有层放显存),然后看日志确认 offloaded N layers 的 N 等于模型总层数。
- LM Studio:把 GPU Offload 拉到底,并看它是否标红提示超出显存。
- Ollama:先用 OLLAMA_FLASH_ATTENTION=1 等环境变量,或改用 llama.cpp 手动跑一次做对照,才能确认是不是分配问题。
- 总层数在本站模型页的架构常数里(例如 Qwen3-8B 是 36 层,Qwen3-32B 是 64 层,Gemma 3 27B 是 62 层),对照日志就知道漏了几层。
- 如果拉不满就是显存不够:回到容量表重选量化档,别用 offload 硬凑。
怎么确认解决了
日志里 offload 层数 = 模型总层数;速度应回到本站估算区间内(±20% 属正常)。
来源与可信度
条目性质本站依据容量与速度公式推导撰写
是否已在本站机器复现否——请把这条当线索而不是结论
- https://build.nvidia.com/playbooks/llama-cpp/troubleshooting — NVIDIA 官方:-ngl 未把全部层放入显存时速度骤降,对应'检查 ngl 是否满载'处置
- https://github.com/ggml-org/llama.cpp/discussions/15013 — 讨论:CUDA 性能受驱动影响大、显存带宽决定上限,对应部分 offload 变慢
相关条目
MoE 模型快得离谱或慢得离谱:你在用总参数量估速度速度不对 · 30B-A3B 跑出 100+ tok/s 让你怀疑测速坏了;或者 235B-A22B 只跑到 20 tok/s 让你以为配置出错。不花钱让本地模型变快的 5 个开关① -ngl 拉满 ② 限制上下文 ③ KV 量化 ④ 开 flash attention ⑤ 关掉没用的多模态塔。前两个通常就够。