投机解码显存计算器(MTP 与草稿模型)
投机解码会给 llama.cpp 再加一个模型或预测头,而 llama.cpp 的自动适配并不总会把它算进去。选择主模型文件和草稿,就能看到精确的额外字节数:GPU 上的草稿权重、草稿上下文(始终与主上下文一样长)下的草稿 KV cache、混合架构模型额外保存的循环状态副本,以及草稿计算缓冲区的估算值。
– 投机解码额外显存
- GPU 上的草稿 / MTP 权重
- –
- 草稿上下文的 KV cache
- –
- 主模型额外的循环状态副本
- –
- 草稿模型自身的循环状态
- –
- 草稿计算缓冲区(估算)
- –
- 仅主模型(文件 + KV + 状态 + 1 GB 缓冲区)
- –
- 开启投机解码
- –
llama.cpp 的自动适配
| GPU 显存 | 12 GB | 16 GB | 24 GB | 32 GB | 48 GB |
|---|---|---|---|---|---|
| 仅主模型 | – | – | – | – | – |
| 加上草稿 | – | – | – | – | – |
“紧张”:只有按计算缓冲区估算的下限才装得下。权重、KV 和状态都是精确字节数;计算缓冲区取两份 Qwen3.8 27B MTP 日志给出的范围(126.77–272.28 MiB),再加上 CUDA flash attention 为量化草稿缓存保留的 F16 副本。“仅主模型”按整个文件和 1 GB 缓冲区计算,与本站其他页面一致。如果这块 GPU 还要驱动显示器,请再留出约 0.5–1 GB。
GB 即 GiB(1024³ 字节),MB 即 MiB;日志数值按 llama.cpp 输出原样显示。
llama-server 命令
所有草稿对比
使用各模型的 Q4_K_M 文件、f16 缓存、单个 slot、--spec-draft-n-max 3。额外 = 权重 + 草稿 KV + 循环状态副本 + 计算缓冲区估算。“-fit 计入”:llama.cpp 的自动适配是否把草稿算进去。
| 草稿 | --spec-type | 文件大小 | GPU 上 | 草稿 KV,32K | 草稿 KV,128K | 额外,32K | 额外,128K | -fit 计入 |
|---|---|---|---|---|---|---|---|---|
| 模型文件内的 MTP 层 Qwen3.8 27B | draft-mtp | – | 335 MB | 128 MB | 512 MB | 1.01 GB–1.16 GB | 1.39 GB–1.53 GB | 是 |
| Unsloth MTP 文件(mtp-Qwen3.8-27B-Q4_0) Qwen3.8 27B | draft-mtp | 1.28 GB | 1.08 GB | 128 MB | 512 MB | 1.77 GB–1.91 GB | 2.15 GB–2.29 GB | 是 |
| DFlash2 Q4_K_M (z-lab) Qwen3.8 27B | draft-dflash | 1.06 GB | 1.05 GB | 50.0 MB | 50.0 MB | 1.67 GB–1.81 GB | 1.67 GB–1.81 GB | 否 |
| DFlash2 Q8_0 (z-lab) Qwen3.8 27B | draft-dflash | 1.92 GB | 1.90 GB | 50.0 MB | 50.0 MB | 2.52 GB–2.66 GB | 2.52 GB–2.66 GB | 否 |
| DFlash2 BF16 (z-lab) Qwen3.8 27B | draft-dflash | 3.60 GB | 3.58 GB | 50.0 MB | 50.0 MB | 4.20 GB–4.34 GB | 4.20 GB–4.34 GB | 否 |
| Qwen3.5 0.8B Q4_K_M Qwen3.8 27B | draft-simple | 508 MB | 497 MB | 384 MB | 1.50 GB | 1.00 GB–1.15 GB | 2.13 GB–2.27 GB | 是 |
| Qwen3.5 0.8B Q8_0 Qwen3.8 27B | draft-simple | 774 MB | 764 MB | 384 MB | 1.50 GB | 1.26 GB–1.41 GB | 2.39 GB–2.53 GB | 是 |
| Qwen3.5 2B Q4_K_M Qwen3.8 27B | draft-simple | 1.19 GB | 1.18 GB | 384 MB | 1.50 GB | 1.70 GB–1.84 GB | 2.83 GB–2.97 GB | 是 |
| Qwen3.5 2B Q8_0 Qwen3.8 27B | draft-simple | 1.87 GB | 1.86 GB | 384 MB | 1.50 GB | 2.38 GB–2.52 GB | 3.51 GB–3.65 GB | 是 |
| Unsloth MTP assistant Q8_0 Gemma 4 31B | draft-mtp | 491 MB | 476 MB | 0 | 0 | 603 MB–748 MB | 603 MB–748 MB | 否 |
| Unsloth MTP assistant F16 Gemma 4 31B | draft-mtp | 911 MB | 896 MB | 0 | 0 | 1.00 GB–1.14 GB | 1.00 GB–1.14 GB | 否 |
| DFlash Q4_K_M (Anbeeld) Gemma 4 31B | draft-dflash | 870 MB | 855 MB | 168 MB | 552 MB | 1.12 GB–1.27 GB | 1.50 GB–1.64 GB | 否 |
| DFlash Q8_0 (Anbeeld) Gemma 4 31B | draft-dflash | 1.53 GB | 1.52 GB | 168 MB | 552 MB | 1.81 GB–1.95 GB | 2.18 GB–2.33 GB | 否 |
相关的 llama.cpp 参数
读自 llama.cpp master 的 common/arg.cpp 和 common/common.h,提交 4364bf7(2026-09-28)。
--spec-type- draft-mtp(内置 MTP 层、Qwen MTP 文件或 Gemma 4 assistant)、draft-dflash、draft-dspark、draft-eagle3、draft-simple(小模型),以及不需要模型的 n-gram 类型。给了 -md 却没写 --spec-type 时,llama.cpp 会从草稿文件读取类型。
--spec-draft-n-max / --spec-draft-n-min- 每步最多和最少草稿 token 数,默认 3 和 0。在混合架构模型(Qwen3.8)上,每多一个草稿 token 就多保存一份循环状态:Qwen3.8 27B 每份 150 MB。
-md, --spec-draft-model- 草稿、MTP 或 DFlash 文件。模型文件内置的 MTP 层不需要它。
-ngld, --spec-draft-ngl- 放到 GPU 上的草稿层数:数字、auto(默认)或 all。
-ctkd / -ctvd- 草稿 KV cache 类型,默认 f16。-ctk / -ctv 对草稿不起作用。
-devd, --spec-draft-device- 草稿放在哪些设备上,例如第二块 GPU;none 表示留在 CPU。
没有设置草稿上下文长度的参数:草稿上下文总是与主上下文
公式能复现的 llama.cpp 日志
| 日志内容 | 日志数值 | 来源 |
|---|---|---|
| 循环状态,不开投机解码(Qwen3.8 27B,1 个 slot) | 149.62 MiB | #27814 2026-08-27 |
| 循环状态,MTP --spec-draft-n-max 3(Qwen3.6 27B,结构相同) | 598.50 MiB | #28112 2026-08-31 |
| 循环状态,MTP --spec-draft-n-max 4(Qwen3.6 27B) | 748.12 MiB | #23577 2026-05-23 |
| MTP 草稿 KV cache,4 × 131,072 token,-ctk q8_0(草稿仍为 f16) | 2,048.00 MiB | #28115 2026-08-31 |
| MTP 草稿计算缓冲区,-c 64000,f16 草稿缓存 | 126.77 MiB | #28378 2026-09-04 |
| 同上,加 -ctkd q8_0 -ctvd q8_0 | 374.03 MiB | #28378 2026-09-04 |
| MTP 草稿计算缓冲区申请量,-c 196608,q4_0 草稿缓存(显存不足) | 1,040.28 MiB | #27282 2026-08-17 |
文件大小和张量字节数读自 GGUF 文件头和 Hugging Face API,日期 : unsloth/
使用方法
- 选择主模型文件。Unsloth 的 Qwen3.8 27B 文件自带 MTP 层;GSQ-RCO IQ3_XXS 文件没有。
- 选择草稿:内置 MTP 层、单独的 MTP 文件、DFlash 草稿模型或小的 Qwen3.5 模型;Gemma 4 31B 可选 Unsloth 的 MTP assistant 或 DFlash 草稿模型。
- 按你运行 llama-server 的方式设置上下文长度、主模型和草稿的 KV cache 类型以及 --spec-draft-n-max。
- 查看额外显存、12–48 GB 显卡上加草稿前后的总量,并复制 llama-server 命令。
常见问题
Qwen3.8 27B 开启 MTP 要多占多少显存?
UD-Q4_K_M、64K 上下文、f16 缓存、默认 --spec-draft-n-max 3 时:MTP 层 335 MB,它的 KV cache 256 MB,再多 3 份循环状态副本 449 MB,计算缓冲区约 127–272 MB,合计 1.14–1.28 GB。256K 时草稿缓存增至 1.00 GB,合计 1.89–2.03 GB。
文件里的 MTP 层在不开 MTP 时占显存吗?
不占。除非设置 --spec-type draft-mtp,llama.cpp 会以 TENSOR_SKIP 创建 blk.64 张量,所以带这一层的文件只是多下载 335 MB(Q8_0 为 430 MB),不多占显存;加载日志会把它们列为未使用。Hugging Face 上 Swift-1.5 的一个讨论里,一位使用 DFlash2 草稿模型的用户发现显存多了约 1 GB,怀疑是 MTP 层;1 GB 正是草稿模型本身的大小(DFlash2 Q4_K_M 在 GPU 上占 1.05 GB),而 MTP 层只有 335 MB。
DFlash2 和 MTP 哪个更占显存?
DFlash2 Q4_K_M 的权重更大(1.05 GB,MTP 为 335 MB),但缓存很小:它的五层都用 2,048 token 的滑动窗口,只保留 2,560 个单元,任何上下文下 f16 都是 50 MB。MTP 的缓存随上下文增长:64K 时 256 MB,256K 时 1.00 GB。两者额外保存的循环状态副本相同(每个草稿 token 150 MB)。64K 时 DFlash2 Q4_K_M 额外 1.67–1.81 GB,MTP 1.14–1.28 GB;256K 时分别为 1.67–1.81 GB 和 1.89–2.03 GB。
为什么 Gemma 4 31B 加上 MTP 草稿就爆显存,不加却正常?
在 llama.cpp issue #29521(Gemma 4 31B 搭配 --model-draft mtp-gemma-4-31B-it-F16.gguf)中,common/fit.cpp 输出 "failed to measure the memory of the extra model, fitting without it":assistant 必须借助主上下文才能创建,所以适配器把它算作 0,并用上下文填满显存。草稿上下文的 n_ctx 总是和主上下文相同。请自己为草稿留出显存:F16 assistant 在 GPU 上占 896 MB(Q8_0 为 476 MB),另加约 127–272 MB 计算缓冲区;它读取主模型的 KV cache,不另外占缓存。请自己设置 -c 和 -np 1,或把 --fit-target 调高约 1.2 GB。
有设置草稿上下文长度的参数吗?
llama.cpp master(提交 4364bf7,2026-09-28)上没有:common/
-ctk q8_0 会同时压缩草稿缓存吗?
不会。草稿缓存有自己的类型参数 -ctkd 和 -ctvd,默认 f16(issue #28115 的日志里,q8_0 主缓存旁边是 2,048 MiB 的 f16 MTP 缓存)。在 CUDA 上量化它反而可能更占显存:flash attention 会在计算缓冲区里保留一份 F16 副本,PR #28378 中 -c 64000 时计算缓冲区从 126.77 MiB 增至 374.03 MiB,比缓存省下的还多。
这里的 GB 指 GB 还是 GiB?
指 GiB,MB 指 MiB,与 llama.cpp 和 nvidia-smi 输出的单位一致,全站都是如此。
更多计算器
- 微调显存计算器 Transformers 或 Unsloth 中全参数微调、LoRA、QLoRA 需要的显存,并与公开实测对比。 打开 →
- vLLM KV cache 与并发计算器 vLLM 分配的 KV cache 池有多少 token、能同时处理多少请求,并给出 vllm serve 命令。 打开 →
- 我的电脑能跑什么? 在浏览器里识别你的 GPU,列出它能跑的本地大模型,以及最佳量化和速度。 打开 →
- MiniMax H3 显存计算器
(ComfyUI) MiniMax H3 视频在 ComfyUI 中的显存与系统内存:剪枝版、INT8、NVFP4 和 GGUF 文件在 8–96 GB 显卡上的表现。 打开 → - MoE 卸载计算器
(--n-cpu-moe) 根据 GGUF 真实张量大小,找出能装进你显卡的最小 llama.cpp --n-cpu-moe。 打开 → - Qwen3.8 27B 新 GGUF 量化:Bonsai 2、GSQ-RCO 与 UD 对比 Qwen3.8 27B 的 Ternary Bonsai 2、GSQ-RCO 与 Unsloth UD 文件:显存、质量、速度,以及各自需要的推理引擎。 打开 →
更新于