Ollama 默认吃 14.3G 显存,改一个参数降到 9.7G(16GB 卡装不下 14B 的真原因)

性能 · 5 档扫描 / 10 分钟L0整理于 2026-10-15 有效期 30d

同一台 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显卡

这条适用于

版本指纹

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 头数)相关,换模型数值会不同。测量前已停止占卡进程。因驱动与框架版本差异,你的数值可能与本文不同。
← SDXL 出图时间不过原点:每张先花 0.378 秒固定开销显卡编码反而更慢更大:nvenc 体积 2.44 倍只换回第五位小数的画质 →

← 返回全部排错方案