大模型显存需求怎么算:要多少显存?参数量、量化和上下文长度

核对说明:公式和 KV 缓存示例由架构参数计算得出(已标注假设),模型文件大小来自 Ollama 模型库(2026-10-30 读取),第三方估算来自 CanRun 与 PromptQuorum 的公开指南,已逐项标注。我们没有在实机上逐一实测各模型的显存占用,最终请以 ollama ps 为准。

很多人下载模型之前最关心的问题是:大模型显存需求到底有多大?我的显卡跑得动吗?答案其实可以用一个简单的三项公式估出来:权重 + KV 缓存 + 运行开销。这篇文章把三项分别讲清楚,给出速查表和几个实例,帮你在下载几十 GB 文件之前先算一笔账。

大模型显存需求的三项构成

模型运行时,显存里主要放三样东西:

  1. 权重:模型文件本身,几乎整个都要放进显存。大小取决于参数量和量化精度。
  2. KV 缓存:保存上下文里每个 token 的键和值,随上下文长度线性增长。
  3. 运行开销:运行时的工作缓冲区,通常较小,但不能忽略。CanRun 的指南把这部分称为“compute buffer”。

另外要记住:显卡标称的显存并不能全部使用。CanRun 的指南举例,8GB 的 RTX 4060 可用显存约 7.4GB,系统和显示输出会占用一部分。

第一项:权重怎么算

权重大小约等于“参数量 × 每个参数的字节数”。量化精度决定每个参数占几个字节:

  • FP16:每个参数 2 字节,约 2GB / 10 亿参数。
  • Q8_0:约 1.1GB / 10 亿参数。
  • Q4_K_M:约 0.6GB / 10 亿参数(PromptQuorum 的经验法则)。

按这个比例,我们用公式算出一张速查表,并与 Ollama 上的实际文件大小对照(实际文件会因架构和词表略有出入):

参数量 Q4_K_M 估算 Q8_0 估算 FP16 估算 Ollama 实际文件(对照)
8B 约 4.8GB 约 8.8GB 约 16GB qwen3:8b Q4 为 5.2GB
14B 约 8.4GB 约 15.4GB 约 28GB qwen3:14b Q4 为 9.3GB;deepseek-r1:14b 为 9.0GB(Q8 16GB,FP16 30GB)
32B 约 19GB 约 35GB 约 64GB qwen3:32b Q4 为 20GB;deepseek-r1:32b 为 20GB(Q8 35GB,FP16 66GB)
70B 约 42GB 约 77GB 约 140GB llama3.3:70b Q4_K_M 为 43GB;deepseek-r1:70b Q8 为 75GB

可以看到,估算与实际文件相差不大。想进一步了解 Q4_K_M、Q8 各自的取舍,见《大模型量化是什么:Q4_K_M、Q8 怎么选》。

同一模型 Q4_K_M、Q8_0、FP16 的权重体积对比
图 2:量化精度越高,权重越大;Q4_K_M 约为 FP16 的三成

MoE 模型:激活参数少,不等于显存少

混合专家(MoE)模型例如 qwen3:30b-a3b 每次只激活约 3B 参数,推理速度更快,但整个模型文件都要放进内存:Ollama 上它的文件是 19GB,而不是 3B 对应的 2GB。所以 MoE 模型“跑得快,但吃显存”。DeepSeek 的 671B MoE 同理,见《DeepSeek 本地部署》。

第二项:KV 缓存怎么算

KV 缓存的大小与上下文长度成正比。对常见的 Transformer 架构,每个 token 的 KV 缓存约为:

2 × 层数 × KV 头数 × 每头维度 × 每个数值的字节数

以 Llama 3 系架构为例(8B:32 层、8 个 KV 头、每头维度 128;70B:80 层、8 个 KV 头、每头维度 128),FP16 精度下,8B 每个 token 约 128KB,70B 约 320KB。据此算出:

上下文长度 8B 的 KV 缓存 70B 的 KV 缓存
4K tokens 约 0.5GB 约 1.3GB
8K tokens 约 1.1GB 约 2.7GB
32K tokens 约 4.3GB 约 10.7GB
128K tokens 约 17.2GB 约 42.9GB

这是按公式算出的示例,不是实测。不同模型架构差别很大:有些新模型使用混合注意力等设计,KV 缓存明显更小(见下一节的 CanRun 数据)。但趋势是一致的:上下文越长,缓存越大,长上下文是显存的隐形大户。

大模型显存需求:KV 缓存随上下文长度增长的计算示例(8B 与 70B)
图 1:上下文从 4K 拉到 128K,KV 缓存从零点几 GB 涨到十几甚至几十 GB(公式计算示例)

两个压缩 KV 缓存的办法

根据 Ollama 官方 FAQ,设置环境变量 OLLAMA_KV_CACHE_TYPE 可以量化 K/V 缓存(需要开启 OLLAMA_FLASH_ATTENTION=1):

  • f16(默认):精度最高、占用最大。
  • q8_0:约为 f16 一半的内存,精度损失很小,Ollama 文档称通常对质量没有明显影响。
  • q4_0:约为 f16 的四分之一,精度损失为小到中等,在上下文很大时可能更明显。

另一个办法就是别把上下文开得过大。Ollama 官方默认值随显存而定:小于 24GiB 为 4k,24–48GiB 为 32k,48GiB 及以上为 256k;智能体和编程类工具建议至少 64000 tokens。

第三项:运行开销与实测对照

CanRun 的指南按“权重 + KV 缓存 + 缓冲区”给出了几个模型在 8k 上下文、Q4_K_M 量化、f16 KV 缓存下的估算,可以用来感受三项的比例:

模型 权重 KV 缓存(8k) 合计(含缓冲区) 来源
Llama 3.1 8B — — 6.3GB CanRun 估算
Qwen3 14B — — 10.5GB CanRun 估算
Qwen3.6 27B 16.1GB 0.5GB 17.2GB CanRun 估算
Gemma 4 31B 18.3GB 0.7GB 19.5GB CanRun 估算
Qwen3 30B-A3B(2507) 18.4GB 0.8GB 19.8GB CanRun 估算
Qwen3.6 35B-A3B 21.1GB 0.2GB 21.8GB CanRun 估算

可以看到,对这些新模型,权重仍是显存占用的大头,8k 上下文时 KV 缓存只占零点几 GB;但把上下文拉长后,KV 缓存会成倍增长。我们没有逐个实测这些数字,它们是第三方估算。

实战:三步估算你的显卡能跑什么

第一步:确定可用显存

用标称显存乘以 0.92–0.95 作为“可用值”的粗略估计(CanRun 的数字:8GB 的 4060 约 7.4GB、12GB 的 3060 约 11.4GB,比例分别约 0.93 和 0.95)。Mac 的统一内存只有一部分可供 GPU 使用,估计约 70%,详见《Mac 跑大模型怎么选》。

第二步:看文件大小再加余量

模型文件大小加上 1–4GB 余量(上下文和缓冲)。例如想在 12GB 显卡上跑 qwen3:14b(9.3GB),CanRun 的估算是 8k 上下文需要 10.5GB,而 12GB 卡可用约 11.4GB,只剩不到 1GB,属于“能跑但很紧”。

第三步:装好后用 ollama ps 核对

加载模型后运行 ollama ps,PROCESSOR 列显示 100% GPU 就是完全放进显卡;出现 CPU 比例就是溢出,速度会明显下降。排查办法见《Ollama 常见报错:GPU 没用上怎么办》。

三个算账实例

下面三个例子都是假设性场景,用上文的速查数字演示怎么算,不是实测结果。

实例一:12GB 显卡(如 RTX 3060 12GB)想跑 qwen3:14b。 可用显存约 11.4GB;CanRun 估算 8k 上下文共需 10.5GB,余量不到 1GB。结论:可以跑,但上下文不宜超过 8k;如果想开 32k,就要考虑量化 KV 缓存或换成 8B 级模型。

实例二:24GB 显卡想跑 qwen3:32b。 文件 20GB,可用显存按 22–22.8GB 算,余量约 2–2.8GB,足够 8k 上下文,但长上下文会吃紧。可以选择更小的 qwen3.6:27b(17GB),或把 KV 缓存量化到 q8_0,换取更宽裕的上下文。

实例三:16GB 显卡想跑 gpt-oss:20b。 文件 14GB,可用显存约 14.7–15.2GB,按公式只剩不到 1GB,非常紧;但 CanRun 的指南把它列为 16GB 能放下的模型,所以建议实际加载后用 ollama ps 确认,并把上下文控制在 8k 左右。

这三个例子说明:同一个“放得下”,余量大小决定了你能开多长的上下文,以及稳定性。预算有限时,宁可选小一档的模型,留出余量,也不要卡着极限加载。

按显存档位的速查表

可用显存 推荐模型级别 例子(文件大小) 备注
8GB 卡(约 7.4GB 可用) 7B–8B qwen3:8b(5.2GB) 详见《8GB 显存能跑什么模型》
12GB 卡 12B–14B qwen3:14b(9.3GB) 余量约 1GB,上下文别开大
16GB 卡 约 20B gpt-oss:20b(14GB) 20B 级的舒适档
24GB 卡 27B–32B qwen3.6:27b(17GB)、qwen3:32b(20GB) 详见《24GB 显存能跑什么模型》
32GB 卡 35B 级、27B 高精度 qwen3.6:35b-a3b(24GB) 余量宽裕
48GB 以上 70B llama3.3:70b(43GB) 单卡 24GB 放不下,需多卡或大内存设备
常见本地模型文件大小与显存档位对照
图 3:把文件大小放到显存线上,一眼看出哪档显卡放得下

放不下怎么办:五个办法

  1. 换更小的模型:一般比“硬塞”更划算。
  2. 换更低的量化:从 Q8 换成 Q4_K_M,体积大约减半以上,但质量会有下降。
  3. 缩短上下文:用 /set parameter num_ctx 或 OLLAMA_CONTEXT_LENGTH 调整。
  4. 量化 KV 缓存:OLLAMA_KV_CACHE_TYPE=q8_0(需开启 Flash Attention)。
  5. 接受部分落到内存:能跑,但慢,适合偶尔使用。

名词速查

名词 含义 对显存的影响
参数量(B) 模型有多少十亿个参数 决定权重体积的基数
量化 用更少的位数存储权重,如 Q4、Q8 位数越少,权重越小,质量略降
上下文长度(ctx) 模型一次能“看到”的 token 数 越长,KV 缓存越大
KV 缓存 保存上下文键值的显存区域 随上下文线性增长
并发(NUM_PARALLEL) 同时处理的请求数 每个并发请求都有自己的缓存,显存需求随之增加
卸载(offload) 把放不下的层放到系统内存 能跑但变慢

常见误区

误区 事实
“激活参数只有 3B,所以 8GB 显卡能跑 30B-A3B” MoE 要整个文件放进内存,qwen3:30b-a3b 文件 19GB
“显存标称 8GB 就能用 8GB” 系统会占用一部分,可用值约 7.4GB(CanRun 对 4060 的数字)
“文件大小等于显存占用” 还要加上 KV 缓存和缓冲区,通常多 1–4GB 以上
“上下文越长越好” 长上下文会占大量显存,也会拖慢速度
“FP16 一定比 Q4 好很多” 在多数日常任务中差异有限,取舍见《大模型量化是什么》

常见问题(FAQ)

70B 模型需要多少显存?

Q4_K_M 约 43GB(llama3.3:70b),再加上上下文缓存。单张 24GB 显卡放不下,需要多卡、专业卡或大内存统一内存设备。

8GB 显存能跑 14B 吗?

文件 9GB 左右(qwen3:14b 9.3GB),已经超过 8GB 卡的可用值,会部分落到内存,速度明显下降。8GB 建议选 7B–8B。

上下文长度会占多少显存?

取决于模型架构。以 Llama 3 系的 8B 为例,FP16 的 KV 缓存约每 1K tokens 占 0.13GB,128K 时可达十几 GB。不同模型差别很大,用 ollama ps 实测最准。

显存不够可以用内存补吗?

可以,Ollama 会自动把放不下的层放到内存,但速度会明显下降。

Mac 怎么算?

Mac 使用统一内存,GPU 可用部分约为总内存的七成左右(不同来源估计在三分之二到四分之三之间),可用 ollama ps 核对。

有没有现成的计算器?

有第三方工具(如 CanRun),可作参考,但仍建议用 ollama ps 实测。

下一步与社区

如果你的显卡刚好卡在两档之间,不知道该选哪个模型,欢迎把型号和用途发到社区(加入社区),我们一起算一算。我们在深圳做本地大模型机器的选型、组装与实测,也可以按你想跑的模型倒推配置;先聊需求,不强制购买。

参考来源

类似文章