本地部署大模型,显存不足如何优化?

很多朋友在本地跑大模型时都遇到过这个场景:明明下载好了模型,一加载就报 CUDA out of memory
显存不足是部署大模型的头号拦路虎,但别急着放弃——下面三种方法从最简单到最深入,让你在现有硬件上也能跑起来。

1. 用量化模型,显存直接减半

量化就是把模型的权重从高精度(比如16位浮点数)压缩到低精度(4位或8位整数),显存占用会大幅下降,而生成的文本质量几乎不受影响。

  • Ollama:拉取量化模型时,在模型名后加 :q4_K_M:q8_0 即可。例如拉取 Llama3.1 的4位量化版本:
  ollama pull llama3.1:q4_K_M

运行和普通模型一样:

  ollama run llama3.1:q4_K_M
  • LM Studio:下载模型时选择带有 Q4_K_MQ5_K_M 标签的GGUF文件,加载时显存占用会少一半以上。
  • llama.cpp:直接把量化后的GGUF文件丢进去,不需要额外设置。

效果:以7B模型为例,16位需要约14GB显存,4位量化只需约5GB,6GB显存的老卡也能跑。

2. 调整上下文长度和批处理大小,回收富余显存

模型推理时默认会预留较长的上下文窗口(比如4096 tokens),如果只做简单对话,可以缩短上下文并减小批处理大小。

  • Ollama:运行时可指定 --num-ctx(上下文长度)和 --num-batch(批处理大小):
  ollama run llama3.1:q4_K_M --num-ctx 2048 --num-batch 128

上下文从4096降到2048,显存占用能减少1-2GB。
批处理默认是512,降到128对单次回答几乎无影响。

  • llama.cpp:在启动命令中加 -c 2048 -b 128
  • LM Studio:在侧边栏的“Model”设置中,将“Context Length”调小(比如2048),点击“Apply”即可。

如果显存还是不够,可以把上下文进一步降到1024,但长对话内容会被较早丢弃。

3. 把部分层卸载到CPU,让显存喘口气

这个操作让模型的一部分计算在CPU上完成,算力会慢一些,但能跑大很多模型。

  • Ollama(0.3.0以上版本):设置环境变量 OLLAMA_USE_CUDA_OFFLOAD 并指定搬运层数:
  set OLLAMA_USE_CUDA_OFFLOAD=20  # Windows
  export OLLAMA_USE_CUDA_OFFLOAD=20  # Linux/macOS

然后正常 ollama run
数字20表示把模型的前20层放到CPU,剩余部分依然在GPU。
层数根据模型总层数调整(比如7B模型有32层,放20层到CPU能省下大半显存)。

  • llama.cpp:直接加 --ngl 12,表示只用GPU跑后12层:
  ./llama-cli -m qwen2.5-7b-q4_K_M.gguf --ngl 12 -c 2048

如果显存只剩1-2GB,可以调 --ngl 1(只用GPU跑1层),甚至 --ngl 0(全CPU),不过速度会明显下降。

  • LM Studio:加载模型时,在右侧“GPU Offload”滑块中向右拖动(代表加载更多层到GPU),向左则是卸载到CPU。一般设到50%左右先试试。

注意:CPU卸载后生成速度会变慢(从几十token/s降到几token/s),但对问答场景完全够用。

避坑与高频问题

  • 为什么用了量化还是爆显存? 可能是上下文设置太大,或者模型本身是70B以上的大模型,量化后也需要10GB+。先确认模型参数量,14B以下量化后一般6GB能跑。
  • CPU卸载后生成时卡顿或报错? 检查CPU内存是否足够(至少要有模型量化后占用量的2倍)。还可以在Ollama中加 --num-threads 4 限制CPU线程数,避免系统卡死。
  • Ollama设置OLLAMA_USE_CUDA_OFFLOAD后不生效? 升级Ollama到最新版,并确保你的显卡支持CUDA。也可以在运行前执行 ollama serve 重启后台进程。
  • 所有方法试完还是爆显存? 最简单的终极大法:换成7B或3B量化模型,比如 phi3:3.8b-q4_K_Mtinyllama:1.1b,几乎任何显卡都能跑。

效果验证

  1. 运行命令前,先用 nvidia-smi 查看当前显存占用。
  2. 加载优化后的模型,再次运行 nvidia-smi
  3. 如果显存使用率低于显卡总容量的90%,且模型能正常回答,说明优化成功。
  4. 测试一个长问题(比如要求生成1000字回复),看看是否触发OOM错误。

如果你现在正被显存不足困扰,建议先直接套用量化模型(方法1),再视情况调小上下文或卸载层数。
三种方法可以同时使用,效果叠加。
记住:先量化,后调参数,最后卸载,这是最稳的顺序。

分享到:
上一篇
用 AI 写 Python 脚本,被反爬检测封禁 IP
下一篇
服务器被挂马后,如何防止再次被入侵?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意