ModelVRAM 的估算有多准?预测值与实测值

在 19 条公开实测中,中位绝对误差为 1.2%。KV 缓存公式在 8 条 llama.cpp 日志中有 8 条完全一致;权重的中位误差为 1.5%;整卡总占用偏高 5.6%–8.1%,因为 0.5 GB + 10% 的开销对 llama.cpp 单个请求来说偏保守。

误差汇总

比较对象 条数 中位绝对误差 高估 低估 误差 ≤ 0.5%
全部 19 1.2% 6 4 9
KV 缓存 8 0.0% 0 0 8
权重 7 1.5% 2 4 1
整卡占用 4 6.4% 4 0 0

误差 = (预测 − 实测)÷ 实测,正数表示本站高估。GB 和 GiB 都指 1024³ 字节,MiB 指 1024² 字节,与 llama.cpp 日志相同。

逐条对比

预测值在构建网站时用计算器同一套函数算出:KV 缓存用 kvCacheBytes,权重用 weightBytes,整卡用 estimate(0.5 GB + 10% 开销),单个请求(Gemma 4 26B 那条按日志中的 4 个槽位)。上下文取 llama.cpp 实际分配的缓存单元数(上下文向上取整到 256 的倍数)。

模型 比较 设置 预测 实测 误差 原因 来源
Mistral Small 3.1 24B KV 缓存 Q4_K_M,20,736 个缓存单元,f16 KV
koboldcpp 1.88, RTX 4090 24GB
3,240 MiB 3,240 MiB
CUDA0 KV buffer size = 3240.00 MiB
0.0% 普通分组查询注意力:每 token 2 × 40 层 × 8 头 × 128 维 × 2 字节。 github.com
2025-04-13
Mistral Small 3.1 24B KV 缓存 Q4_K_M,57,600 个缓存单元,q4_0 KV
koboldcpp 1.88, RTX 4090 24GB
2,531.3 MiB 2,531.3 MiB
CUDA0 KV buffer size = 2531.25 MiB
0.0% q4_0 每 32 个值占 18 字节,即这里按每值 4.5 位计算。 github.com
2025-04-13
Gemma 2 9B KV 缓存 3,072 token,f16 KV,GTX 1070
llama.cpp(2024 年 10 月), GTX 1070 8GB
1,008 MiB 1,008 MiB
CUDA0 KV buffer size = 1008.00 MiB
0.0% 比 Gemma 2 的 4,096 token 滑动窗口短,所以每层都保留全部 token。 github.com
2024-10-28
Llama 3.1 8B KV 缓存 Q4_K_M,-c 132000(132,096 个缓存单元),f16 KV
llama.cpp b7583, DGX Spark
16,512 MiB 16,512 MiB
CUDA0 KV buffer size = 16512.00 MiB
0.0% 每 token 128 KiB,与公式完全一致。 github.com
2025-12-30
Llama 3.1 70B KV 缓存 Q4_K_L,131,072 token,q4_0 KV
llama.cpp b3889 (ROCm), AMD 多卡(ROCm)
11,520 MiB 11,520 MiB
KV self size = 11520.00 MiB, K (q4_0): 5760.00 MiB, V (q4_0): 5760.00 MiB
0.0% 同一公式,每值 4.5 位。 github.com
2024-10-06
gpt-oss-20b KV 缓存 MXFP4,32,768 token,f16 KV
llama.cpp b6360, NVIDIA 显卡(CUDA)
786 MiB 786 MiB
KV buffer size = 768.00 MiB (32,768 cells) + 18.00 MiB (SWA, 768 cells)
0.0% 12 个全注意力层一直完全一致。滑动窗口层分到 768 个单元(128 token 窗口加 512 token 批次,再向上取整到 256),我们自 2026-09-29 起按此计算;此前按 128 个单元计算,少算了 15 MiB(1.9%)。 github.com
2025-09-04
Gemma 4 12B KV 缓存 QAT q4_0,4,096 token,q8_0 KV
Ollama 0.30.6, RTX 4060 Laptop 8GB
289 MiB 289 MiB
non-SWA 34.00 MiB (4,096 cells) + SWA 255.00 MiB (1,536 cells), q8_0
0.0% 自 2026-09-29 起完全一致。此前少算了 35%,差在两处:llama.cpp 为 Gemma 4 全局层单独存了一份 V,而我们只算了一份 K;滑动窗口层分到 1,536 个单元(1,024 token 窗口加 512 token 批次),而我们按 1,024 计算。 github.com
2026-06-07
Gemma 4 26B-A4B KV 缓存 Q4_K_M,248,320 token,4 个槽位共享,f16 KV
llama.cpp b8648, RTX 4090 24GB
5,750 MiB 5,750 MiB
non-SWA 4850.00 MiB (248,320 cells) + SWA 900.00 MiB (4,608 cells)
0.0% 自 2026-09-29 起完全一致,按一个统一缓存中的 4 个槽位、每个 62,080 个单元计算。此前少算了 54%:全局层正好是我们的两倍;4 个并行槽位让滑动窗口层分到 4 × 1,024 + 512 个单元,而我们按 1,024 计算。 github.com
2026-04-04
Llama 3.1 8B 权重 bartowski Q4_K_M GGUF
llama.cpp b7583, DGX Spark
4,633.2 MiB 4,689.9 MiB
file size = 4.58 GiB (4.89 BPW)
−1.2% 文件平均每权重 4.89 位,略高于我们用的 4.84 位。 github.com
2025-12-30
Llama 3.1 70B 权重 Q4_K_L GGUF(Q4_K_M 加 Q8_0 嵌入层)
llama.cpp b3889 (ROCm), AMD 多卡(ROCm)
40,707.6 MiB 41,287.7 MiB
model size = 40.32 GiB (4.91 BPW)
−1.4% 与我们的 Q4_K_M 比较;Q8_0 的嵌入层和输出层多出约 1%。 github.com
2024-10-06
Mistral Small 3.1 24B 权重 openfree Q4_K_M GGUF
koboldcpp 1.88, RTX 4090 24GB
13,600.6 MiB 13,662.4 MiB
CUDA0 model buffer size = 13302.36 MiB + CPU_Mapped 360.00 MiB
−0.5% 相差不到 0.5%。 github.com
2025-04-13
gpt-oss-20b 权重 gpt-oss-20b-mxfp4.gguf
llama.cpp b6360, NVIDIA 显卡(CUDA)
13,123.8 MiB 11,540.5 MiB
file size = 11.27 GiB (4.63 BPW)
+13.7% 我们按官方权重计算:MXFP4 专家加 18 亿个 BF16 参数。GGUF 把其中一部分存成了更小的类型,例如 5.79 亿参数的嵌入表是 Q8_0(同一日志里 586.82 MiB 的 CPU 缓冲区)。 github.com
2025-09-04
gpt-oss-120b 权重 openai/gpt-oss-120b,MXFP4
vLLM 0.14.1, H100 80GB
62,226.1 MiB 65,925.1 MiB
Model loading took 64.38 GiB memory
−5.6% vLLM 报告的是加载完成后显存的实际占用,比权重文件本身多;我们按权重文件计算。 github.com
2026-01-27
Gemma 4 26B-A4B 权重 ggml-org Q4_K_M GGUF
llama.cpp b8648, RTX 4090 24GB
14,889.3 MiB 16,005.1 MiB
file size = 15.63 GiB (5.32 BPW)
−7.0% Q4_K_M 会把部分张量保留为更高精度,而这个模型里这部分占比更大:文件平均每权重 5.32 位,我们按 4.84 位计算。 github.com
2026-04-04
Gemma 4 31B 权重 Q5_K_M GGUF
llama.cpp b9031, 2 张 NVIDIA 显卡(CUDA)
21,138 MiB 20,817.9 MiB
file size = 20.33 GiB (5.69 BPW)
+1.5% 每权重位数基本一致(5.69 对 5.67);我们的参数量包含视觉编码器,而这个 GGUF 不含。 github.com
2026-05-06
Mistral Small 3.1 24B 整卡占用 Q4_K_M,f16 KV,20,736 个缓存单元,flash attention
koboldcpp 1.88, RTX 4090 24GB
18.59 GB 17.60 GB
19.2 GB used − 1.6 GB desktop
+5.6% 权重和缓存都与日志一致;差距来自我们的 0.5 GB + 10% 开销,约为 llama.cpp 单个请求在二者之外实际多用显存的 2–3 倍。 github.com
2025-04-13
Mistral Small 3.1 24B 整卡占用 Q4_K_M,q4_0 KV,20,736 个缓存单元,flash attention
koboldcpp 1.88, RTX 4090 24GB
16.09 GB 15.20 GB
16.8 GB used − 1.6 GB desktop
+5.8% 权重和缓存都与日志一致;差距来自我们的 0.5 GB + 10% 开销,约为 llama.cpp 单个请求在二者之外实际多用显存的 2–3 倍。 github.com
2025-04-13
Mistral Small 3.1 24B 整卡占用 Q4_K_M,f16 KV,41,216 个缓存单元,flash attention
koboldcpp 1.88, RTX 4090 24GB
22.03 GB 20.60 GB
22.2 GB used − 1.6 GB desktop
+6.9% 权重和缓存都与日志一致;差距来自我们的 0.5 GB + 10% 开销,约为 llama.cpp 单个请求在二者之外实际多用显存的 2–3 倍。 github.com
2025-04-13
Mistral Small 3.1 24B 整卡占用 Q4_K_M,q4_0 KV,57,600 个缓存单元,flash attention
koboldcpp 1.88, RTX 4090 24GB
17.83 GB 16.50 GB
18.1 GB used − 1.6 GB desktop
+8.1% 权重和缓存都与日志一致;差距来自我们的 0.5 GB + 10% 开销,约为 llama.cpp 单个请求在二者之外实际多用显存的 2–3 倍。 github.com
2025-04-13

整卡的 4 条是报告者读到的显存占用减去其中 1.6 GB 桌面占用。Mistral Small 3.1 按不含视觉编码器的 235.7 亿参数计算,与报告中的纯文本 GGUF 相同;Gemma 2 9B 的结构取自其 config.json。其余模型用计算器的预设。

图像模型

Qwen-Image-2.1 计算器给出的是区间:精确的文件大小加上实测得出的工作显存。

GPU 设置 预测区间 实测 结果 来源
RTX 3090 24GB Qwen-Image-2.1:DiT GGUF Q4_K_M + 编码器 INT8 ConvRot + VAE BF16,全部在 GPU 上,1024×1024
ComfyUI
15.35 GB–17.95 GB 15.39 GB 在区间内 github.com
2026-09-21
Apple M5 Max 48GB Qwen-Image-2.1:DiT GGUF Q4_K_M;编码器、VAE 和图像尺寸未说明,按 BF16 编码器 + FP32 VAE、全部在统一内存中、1 MP 比较
Unsloth Desktop (macOS)
23.60 GB–26.20 GB 42.00 GB 在区间外(实测更高) github.com
2026-09-29

RTX 3090 24GB:落在区间内,靠近下限。区间本身就参考了这次实测,所以这更像一致性检查,而不是独立验证。

Apple M5 Max 48GB:在区间外:实测远高于预测,即使按最大的编码器和 VAE 计算也是如此。加载后的约 34 GB 接近 DiT 以 BF16 保存时的文件总量(编码器和 VAE 为 BF16 时为十进制 32.4 GB),而不是 Q4_K_M 文件的 22.4 GB,所以这条路径很可能把 DiT 反量化了,而计算器没有考虑这种情况。图像分辨率未知,引擎也尚未确认所用精度;即使把 42 GB 按十进制 GB 理解,也仍远高于区间。

更多实测和 8–16 GB 的低显存组合见 Qwen-Image 2.1 显存计算器。MiniMax H3 的公开实测大多在流式加载权重,显卡占满只说明显卡的容量,无法与估算比较,所以没有列入。

vLLM 的 KV cache 池以 token 计,和这里按字节比较的数据不同,所以放在 vLLM KV cache 计算器的日志对照表里:6 条公开启动日志。

哪里高估,哪里低估

我们打算怎么改

2026-09-29 修正了 KV 缓存公式:Gemma 4 全局层的 K 和 V 分开计算,滑动窗口层按 llama.cpp 的规则取“窗口 × 槽位数 + 512”并向上取整到 256,但不超过上下文(src/llama-kv-cache-iswa.cpp)。上表的预测值是修正后的公式算出的;修正前 Gemma 4 12B 为 187 MiB,26B 为 2,625 MiB,gpt-oss-20b 为 771 MiB。其余几项还没有做,本页展示的是当前公式的真实表现;改动上线后,这张表会随之在构建时重新计算。

没有收录的报告

2026 年关于 Qwen3.8 27B 在 16 GB 显卡上运行的两篇报告(autodidacts.io,jrell 的 IQ4_XS 混合版)给出了量化、上下文和 KV 类型,但没有显存读数,只说明“能跑”。它们与本站估算不矛盾,但无法算出误差。有 nvidia-smi 读数或 llama.cpp 缓冲区日志的实测,欢迎联系我们(英文)。

提交一条实测

跑过某个模型?在 GitHub 上提交实测(英文表单):填写模型、文件或量化、引擎和版本、GPU、-c、并行槽位数和 KV 类型,并粘贴原始日志行,例如 llama.cpp 的 KV buffer size、model buffer size,nvidia-smi 读数,或 vLLM 的 KV cache 行。每条都会人工核对,再和构建时的预测一起列入上表。

常见问题

ModelVRAM 的显存计算器有多准?

在 19 条公开实测中,中位绝对误差为 1.2%。KV 缓存公式在 8 条 llama.cpp 日志中有 8 条完全一致;权重的中位误差为 1.5%;整卡总占用偏高 5.6%–8.1%,因为 0.5 GB + 10% 的开销对 llama.cpp 单个请求来说偏保守。

计算器是高估还是低估?

整卡总占用全部高估(+5.6% 到 +8.1%)。低估的情况有:把更多张量保留为高精度的 GGUF 文件(Gemma 4 26B Q4_K_M −7.0%),以及 vLLM 加载 gpt-oss-120b 后的占用(−5.6%)。KV 缓存目前没有低估的条目;2026-09-29 之前,llama.cpp 中 Gemma 4 的 KV 缓存少算了 35.3% 和 54.3%,gpt-oss 滑动窗口层少算了 15 MiB,这两处已在当天修正。

为什么估算值和 nvidia-smi 读数不一样?

nvidia-smi 显示的是整张卡的占用,包括桌面、CUDA 上下文和引擎自己的预留:vLLM 会按 gpu_memory_utilization 占满显存,llama.cpp 会在启动时按完整上下文分配 KV 缓存。本页只比较能对上号的部分:日志里的 KV 缓冲区、模型缓冲区,以及扣除桌面占用后的整卡读数。

这些实测是怎么选的?

只收录公开、带来源链接、设置足够复现的报告(模型、量化文件、上下文、KV 类型、引擎)。所有来源都在 2026-09-29 重新打开核对过。只有设置、没有显存读数的报告没有收录。

来源核对于 。