Ollama 默认吃 14.3G 显存,改一个参数降到 9.7G(16GB 卡装不下 14B 的真原因)
同一台 5090D、同一个 qwen2.5:14b(Q4_K_M,9.0GB),只改上下文长度 num_ctx:2048/4096/8192/16384/32768 → 实际显存 8.45/8.83/9.71/11.23/14.26 GiB。模型本体一直 9.0GB 没变,多出来全是 KV 缓存 —— 2048 拉到 32768 多占 5.80 GiB(约 198 KB/token)。关键陷阱:不指定时 Ollama 0.40.4 默认就是 32768,而 decode 吞吐五档全在 136.4–137.4 tok/s(极差仅 0.7%)。上下文大小不影响速度,只影响你装不装得下。
Ollamanum_ctxKV缓存显存本地部署qwen2.5显卡选型16GB显卡这条适用于
- 用 Ollama 跑本地大模型,关注「16GB 卡为什么装不下 14B」与上下文长度对显存的影响
- 本机 RTX 5090D 32GB,Ollama 0.40.4,qwen2.5:14b Q4_K_M(9.0GB),每档先卸载再冷加载
版本指纹
RTX 5090D 32GB / Ollama 0.40.4 / qwen2.5:14b Q4_K_M / 驱动 591.86
具体做法
本机实测(2026-10-15,RTX 5090D 32GB + Ollama 0.40.4 + qwen2.5:14b Q4_K_M 9.0GB):
num_ctx 五档扫描(每档先卸载再冷加载,显存取 Ollama /api/ps 自报 size_vram):
· num_ctx 2048 → 8.453 GiB(基准)
· num_ctx 4096 → 8.829 GiB(+0.38)
· num_ctx 8192 → 9.709 GiB(+1.26)
· num_ctx 16384 → 11.225 GiB(+2.77)
· num_ctx 32768 → 14.256 GiB(+5.80)
每 token 缓存占用(两端实测值线性折算,约):(14.256 − 8.453) GiB ÷ (32768 − 2048) token ≈ 198 KB/token。
精度核对(同一段约 7000 token 长 prompt,三次对照):
· 不指定 num_ctx(走默认)→ 实际生效 32768 / 14.26 GiB / prefill 1.05 秒
· 显式 num_ctx=32768 → 实际生效 32768 / 14.26 GiB / prefill 1.05 秒
· 显式 num_ctx=8192 → 实际生效 8192 / 9.71 GiB / prefill 1.05 秒
→ 上下文从 32768 砍到 8192,prefill 耗时完全不变(都是 1.05 秒),白付 4.5 GiB。
decode 吞吐(5 档 × 3 次取中位):136.4–137.4 tok/s,极差 0.7%。
参考:qwen2.5:14b 在 16GB 卡(16311 MiB)上,32768 档的 14.26 GiB 加上系统常驻就装不下;同一模型 8192 档只需 9.71 GiB。
本结论为本机实测(RTX 5090D 32GB / Ollama 0.40.4 / qwen2.5:14b Q4_K_M;驱动 591.86)。显存占用为 Ollama 接口自报的 size_vram(模型 + 上下文缓存),非 nvidia-smi 整卡读数;吞吐为 3 次重复的中位数。每 token 缓存占用为由两端实测值线性折算的估算,非逐档独立测量。KV 缓存实际占用与模型架构(层数 / KV 头数)相关,换模型数值会不同。测量前已停止占卡进程。因驱动与框架版本差异,你的数值可能与本文不同。