llama.cpp 本地跑大模型入门:显存不够怎么办,量化到 4-bit 还能用吗

想在本地跑大模型,第一道门槛不是算力,是显存。一张 24GB 显存的卡,跑 7B 全精度模型都不轻松,更别说 27B、70B。而 llama.cpp 的核心价值,就是让「显存不够」这件事变得可以商量。

为什么是 llama.cpp

它把模型权重切成小块,可以在 CPU 内存、GPU 显存之间动态调度。更关键的是它支持量化——把原本 16 位浮点的权重压到 8 位、5 位、4 位,模型体积和显存占用直接砍到几分之一,代价是精度略有损失。

这也是为什么一台 16GB 内存的普通电脑,甚至一台破解的游戏主机,都能跑起来。

量化档位怎么选

常见的 GGUF 量化格式有一串后缀,记住这几个就够用:

  • Q8_0:接近无损,体积最大,显存紧张时别选它
  • Q5_K_M:质量与体积的平衡点,8GB 显存跑 7B 首选
  • Q4_K_M:最常用的档位,速度和质量的折中,多数场景推荐
  • Q3_K_M / Q2_K:能省内存,但中文场景下明显变傻,不推荐

经验法则:显存够就往上加档,不够就降档,但别低于 Q4。低于 4-bit 之后,模型在逻辑推理和长文本上会明显退化。

GPU 层数怎么调

llama.cpp 有个关键参数 --n-gpu-layers(简称 -ngl),决定多少层放显存。设得越高越快,但超了显存就崩。

调法是:从 0 开始往上加,每加 4 层观察一次显存占用,加到接近满载为止。找不到最优值时,宁可少放两层——留给 KV 缓存的空间比多跑两层更重要。

上下文长度别贪

很多人一上来就设 32K 上下文,结果发现模型边跑边卡。原因是 KV 缓存的显存占用随上下文线性增长,32K 上下文的缓存有时候比模型本身还大。

实用建议:日常对话 4K 到 8K 足够,长文档处理再上 16K。真的需要超长上下文时,考虑开启 kv 缓存量化,能省一半内存。

速度预期

参考几个真实数据:

  • RTX 3060 12GB 跑 7B Q4:约 35-45 token/s
  • M2 Pro 32GB 跑 14B Q4:约 20-25 token/s
  • 纯 CPU(16 核)跑 7B Q4:约 8-12 token/s

低于 5 token/s 就会明显感觉到卡顿,高于 20 token/s 基本可以当作流畅对话使用。

最后一句

本地跑模型的意义不在于「替代云 API」,而在于数据不出门。处理敏感文档、做私有知识库、离线环境使用,这三点是云端永远给不了的。

© 版权声明
THE END
喜欢就支持一下吧
点赞21 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容