跳到主内容

本地部署大模型怎么做:Ollama 与 vLLM 的显存换算、量化选型和并发实测

100%
本地部署大模型怎么做:Ollama 与 vLLM 的显存换算、量化选型和并发实测

本地部署大模型的成败在装软件之前就决定了:先把显存账算清。可用显存 = 显卡显存 − 模型权重 − KV Cache − 运行时开销,只要 KV Cache 那一项没留够,模型加载得进去也会在上下文一长时报 CUDA out of memory 。 Ollama 适合单机/单用户起步,vLLM 适合多并发生产服务,二者不是替代关系而是阶段关系。

先算显存:权重和 KV Cache 是两笔账

很多人按「模型文件多大就得多大显存」来选卡,这条经验只对了前半段。加载模型后显存里至少还有三样东西:

  • 模型权重:由参数量 × 每参数字节数决定,量化后直接缩小。
  • KV Cache:随上下文长度和并发数线性增长,长对话、多用户场景下这才是吃显存的大头。
  • 运行时与激活值:框架自身、 CUDA context 、临时张量,一般预留 1–2 GB 。

Hugging Face 上 GGUF 模型的卡面通常直接给出可用参照,例如 Qwen2.5-7B-Instruct 的 Q4_K_M 约 4.4 GB,官方建议 6 GB 内存 / 5 GB 显存起步,CPU 推理约 15 tokens/s 。这类数据是选型时最可靠的依据,比凭参数量估算准得多。

一个真实的反例:24 GB 显卡为什么会 OOM

社区里 Qwen3.8-19B 剪枝版的模型卡给过一组很有代表性的数字:一个 24 GB 显存的消费卡(RTX 3090/4090),装密集版 Q4 权重(21.5 GB)后只剩约 2.5 GB 余量,上下文一过 2k token 就开始崩或被迫把层溢出到内存;换成剪枝后的 Q4_0(17.79 GB)余量回到约 6.2 GB,可以稳定跑 8k–16k 上下文,并且生成速度从 34.2 tok/s 提到 83.2 tok/s 。

结论很直白:余量就是并发能力和上下文长度。挑模型时不能只问「装得下吗」,要问「装完还剩多少」。

量化档位怎么选:一张对照表

GGUF 命名里的 Q4_K_M、Q6_K、Q8_0 指的是权重量化位宽与策略。以 7B 级别的中文模型为例:

档位7B 模型体积建议显存适用
Q4_K_M约 4.4 GB5–6 GB默认首选,性价比最高
Q5_K_M约 5.1 GB6–8 GB对推理质量敏感的任务
Q8_0约 7.7 GB8–10 GB接近无损,做评测基线
FP8(W8A8)较 BF16 减半视模型而定vLLM 服务端吞吐优先

经验规则:先按 Q4_K_M 起跑,跑通后再评估是否有必要升档。多数检索问答、摘要、代码补全场景,Q4_K_M 与 Q8_0 的主观差异远小于「上下文不够长」带来的体验损失。

量化档位升一级换来的质量提升,通常不如把省下的显存让给 KV Cache 换来的长上下文收益大。除非任务对数字/逻辑推理极敏感,否则别急着上 Q8 。

Ollama 还是 vLLM:按并发量分界线选

维度OllamavLLM
定位本地/单机推理,开箱即用生产级高吞吐推理服务
并发1–2 路为主连续批处理,可支撑数十路
模型格式GGUF 为主,ollama run 直接拉SafeTensors / compressed-tensors
调优点Modelfile 设 temperature 、 systemPagedAttention 、 KV Cache 量化、 gpu-memory-utilization
适合开发联调、隐私敏感的小流量工具对外的 API 服务、批量离线任务

vLLM 侧常用的三个启动参数是长期运维的抓手:--gpu-memory-utilization 0.90~0.95 控制显存占用上限,--max-model-len 限制单请求上下文,--kv-cache-dtype fp8 用 KV Cache 量化换更长上下文。 FP8 动态量化在模型卡中常标注为约 50% 显存节省、 1.3–1.8 倍推理提速,代价是通常 1%–2% 的基准掉点,且只用于推理、不适合继续微调。

从零跑起来的五步


  1. 盘硬件:用 nvidia-smi 确认真实可用显存(注意共享显存不算),记下这个数字,后面所有估算都基于它。

  2. 定参数规模:显存 ≤ 8 GB 选 7B–8B;16 GB 可上 13B–14B;24 GB 可尝试 20B 级剪枝/量化版;48 GB 以上再考虑 70B 。

  3. 选量化:默认 Q4_K_M,装完后确认剩余显存 ≥ 4 GB,否则降一档参数规模而不是硬塞。

  4. 起服务:单机用 ollama run <模型> 暴露 11434 端口;对外用 vLLM 起 OpenAI 兼容接口,先压 4 路并发看是否有 OOM 。

  5. 压测与定容:固定一段 8k 上下文的 prompt,逐步加并发,记录 tokens/s 的拐点,把拐点前的值写进运维文档作为容量上限。

显存速查:常见规模的经验值
  • 7B / 8B:约 8 GB 内存或显存
  • 13B / 14B:约 16 GB
  • 20B 级(剪枝 + Q4):24 GB 卡可跑,余量约 6 GB
  • 70B:48 GB 以上,FP8 量化后约 40 GB 起

以上为社区模型卡给出的经验参考,实际以压测为准;CPU 推理速度通常是 GPU 的十分之一量级,只建议做功能验证。

什么时候不该本地部署

三种情况建议直接用云端 API,别在本地死磕:

  • 峰值并发高但平均低:本地要为峰值配卡,闲置率极高,成本反而不如按量付费。
  • 需要最强推理能力:同价位下本地能跑的模型通常比云端旗舰弱一档,复杂推理任务差距明显。
  • 没有运维人力:驱动、 CUDA 、模型更新、故障恢复都是持续成本,小团队容易被拖住。

反过来,数据不出内网、需要离线可用、请求量稳定且可预测这三类场景,本地部署的经济性和合规性优势是压倒性的。

相关阅读


本地部署大模型最低需要什么显卡?
7B 级别模型配 Q4_K_M 量化,6 GB 显存(如 RTX 3060 笔记本版)就能跑起来;8 GB 显存可以留出较舒服的上下文余量。再低的显存建议只做 CPU 功能验证,速度难以接受。

为什么模型加载成功但一问长问题就崩?
典型是 KV Cache 显存不足。模型权重占用是固定的,上下文每增长一倍,KV Cache 也近似翻倍。解决顺序是:缩短 max-model-len 、给 KV Cache 开量化(如 fp8)、降低并发数,最后才考虑换更小的模型。

Ollama 和 vLLM 能一起用吗?
可以分层用:开发机和内部工具用 Ollama 省事,对外服务用 vLLM 扛并发。两者都提供 OpenAI 兼容接口,业务代码里把 base_url 做成配置项即可切换,不要把地址写死在代码里。

量化会明显降低模型能力吗?
Q4_K_M 在多数问答、摘要、翻译任务上掉点很小,但在数学推导、长链逻辑、严格格式输出上更容易出错。如果任务对准确性要求高,用业务真实样本做一组 50–100 条的对比评测再定档,比凭感觉选靠谱。

延伸阅读:大模型上下文工程实践
这篇有帮助吗?
云上的幻象
云上的幻象查看主页

七彩云博客,分享 WordPress 建站实战与 AI 工具测评,覆盖服务器运维、站长工具、软件资源与电商运营干货,专注原创实用的主题插件、网站加速与安全优化教程。

847文章4评论

相关文章

评论 (0)

欢迎你,新朋友,感谢参与互动!文明发言,理性交流 · 首次评论将在审核后展示