那张 8GB 显存适配表撒了百分之七的谎
8GB 显存卡有 8.59 十进制 GB,可用的却只有约 7.3 GiB。容量今日实测,KV 计算全程展示,一张诚实的适配表——表格最爱的 9B 在 8k 放不下。
8GB 显存的最佳 ollama 模型:qwen2.5:7b(Q4_K_M)—— 8k 上下文全算上约 5.4 GiB,余量最多,也是五个里唯一在 32k 仍放得下的。llama3.1:8b(≈6.2 GiB)和 qwen3:8b(≈6.4 GiB)在 8k 放得下。gemma2:9b 在 8k 需要 ≈8.6 GiB,放不下 —— 只能用 4k 上下文。
8GB 显存到底能装多少?
论点:「8 GB」卡从来不装 8 个十进制 GB 的模型 —— 它装的是 8 个二进制 GiB,而且桌面会在模型到来之前先切走自己那份。营销把「8」买了两次,赋予两种含义;你的显存溢出杀手只认其中一种。卡的 8 GB 是 8 × 2³⁰ 字节 = 8.59 十进制 GB。GGUF 文件的 4.92 GB 是 4.92 × 10⁹ 字节。同一个词,两把尺子,之间固定的 7.4% 差距 —— 我开始叫它百分之七的幽灵:它缠着网上每一张显存表,而几乎没有一张表肯承认自己用的是哪把尺。
第二笔没人做预算的扣减:卡从来不是空的。带合成器的 Linux 桌面会常驻 0.3–0.5 GiB,CUDA/ROCm 上下文再吃约 0.3。无头运行你有约 7.6 GiB 可用;桌面上请按 7.3 GiB 可用来做计划。本文的每一次适配判断都以这条线为准。
为什么显存表格会相差百分之七?
论点:各表不是舍入不同 —— 它们混用了尺子,而在临界处,混用决定答案。拿 gemma2:9b 说。文件标着 5.76 GB(十进制)。天真的表拿 5.76 对「8」,写出 72% 满 —— 行,收货。4k 上下文下的诚实账本:5.37 GiB(文件)+ 1.31 GiB(KV)+ 0.6 GiB(开销底线)= 7.28 GiB,对照 7.3 可用。同一模型,同一张卡,同一上下文:表上的 72% 与现实的 99.7% 是同一行。除法只有一行 —— GiB = GB ÷ 1.074 —— 下文每个判决都亮出自己的除法。
8GB 显存的最佳 ollama 模型:判决表
论点:8k 上下文下,社区默认五选四都能放下 —— 放不下的那个,恰是清单文一直推荐的 9B。文件大小今日实测自 Hugging Face 文件 API(bartowski 的 GGUF 仓库,Q4_K_M —— ollama 对这些家族的默认量化;mistral:7b 默认带 q4_0,与实测文件相差约 2%):
curl -s https://huggingface.co/api/models/bartowski/Meta-Llama-3.1-8B-Instruct-GGUF/tree/main \
| jq '.[] | select(.path | test("Q4_K_M"))'
验证:Q4_K_M.gguf → 4,920,739,232 字节,取于 2026-11-01。同一行命令在全部五个仓库上跑过。
| 模型(ollama 标签) | 文件,十进制 GB | ÷ 1.074 = GiB | KV @ 8k | 开销底线 | 总计 GiB | 8k 判决 |
|---|---|---|---|---|---|---|
| qwen2.5:7b | 4.68 | 4.36 | 0.44 | 0.6 | 5.40 | 放得下 —— 余量最大;撑得住 32k(6.71) |
| mistral:7b | 4.37 | 4.07 | 1.00 | 0.6 | 5.67 | 放得下,宽松 |
| llama3.1:8b | 4.92 | 4.58 | 1.00 | 0.6 | 6.18 | 放得下;16k 在毫厘之间(7.18);32k 失败(9.18) |
| qwen3:8b | 5.03 | 4.68 | 1.13 | 0.6 | 6.41 | 放得下 —— 留意思考预算 |
| gemma2:9b | 5.76 | 5.37 | 2.63 | 0.6 | 8.59 | 8k 放不下 —— 只能 4k(7.28,毫厘之间) |
赢家刻意朴素:ollama pull qwen2.5:7b 给你每 GiB 最多的可用上下文,而且是这里唯一在上下文翻倍到 32k(6.71 GiB)时仍放得下的行。失败的那一行是本文的凭据:gemma2:9b 差 1.29 GiB 到不了 8k,而且这还是零开销预算 —— 5.37 + 2.63 = 8.0,对照 7.3 可用。任何量化都救不了它;Q4_K_M 已经是最小的那个。
KV 缓存要吃掉多少显存?
论点:上下文是你加载的第二个模型,而架构决定价格 —— 按 token 计,gemma2:9b 收 qwen2.5:7b 六倍的费。KV 缓存是模型为对话准备的工作内存:2 字节 × 层数 × kv-heads × head-dim,fp16,每 token。Qwen2.5-7B 苗条的 28×4×128 注意力每 token 收 56 KiB。Gemma-2-9B 的 42×8×256 每 token 收 336 KiB。杀死小卡长上下文的正是这个每 token 费率,而不是文件大小。
| 模型 | KV @ 4k | KV @ 8k | KV @ 16k | KV @ 32k |
|---|---|---|---|---|
| qwen2.5:7b (56 KiB/tok) | 0.22 GiB | 0.44 | 0.88 | 1.75 |
| mistral:7b / llama3.1:8b (128) | 0.50 | 1.00 | 2.00 | 4.00 |
| qwen3:8b (144) | 0.56 | 1.13 | 2.25 | 4.50 |
| gemma2:9b (336) | 1.31 | 2.63 | 5.25 | 10.50 |
一条 2026 年特有的脚注:qwen3 是思考型模型。它的推理 token 也是上下文 token —— 一个「思考」了 3,000 token 的简短回答,在上下文重置前要为这 3,000 个 token 每个付 144 KiB。在 7.3 GiB 的卡上,思考预算不是玄学旋钮;它是上表 KV 的复利。
逐行算术
可用线:8 GiB − 0.4(桌面,合成器 + 显示)− 0.3(CUDA 上下文)≈ 7.3 GiB;无头模式可再回收约 0.3。开销底线 0.6 = CUDA 上下文 ~0.3 + 计算缓冲 ~0.3(8k);诚实区间为 0.4–1.2 GiB,随后端与上下文而变 —— gemma2 的失败判决在整个区间都成立,这正是底线够用的原因。KV 费率:llama3.1-8B 32L×8kv×128d;qwen2.5-7B 28×4×128;qwen3-8B 36×8×128;gemma2-9B 42×8×256;mistral-7B-v0.3 32×8×128 —— 全部 ×2 字节 ×2(K 与 V)。GiB 换算:文件字节 ÷ 2³⁰(4,920,739,232 → 4.58;4,683,074,240 → 4.36;4,372,812,000 → 4.07;5,027,784,224 → 4.68;5,761,057,728 → 5.37)。gemma2 的诚实备注:它一半的层是滑动窗口,llama.cpp 的真实 KV 比这个保守的全注意力数字更小 —— 失败判决不需要这个折扣也成立。最后测试 2026-11-01。
这张表无法告诉你的事
论点:以上每个数字都是对公开容量的算术 —— 表仍在猜的两个数字是开销与 MoE,而这恰是下一次测量的落点。开销底线是穿着制服的区间;任何只打印一个开销数字的计算器都在猜,包括我们自己的 GGUF 显存计算器一文 —— 它的伤口(拒绝 MoE 数学的那道)记在那里。适配线还随你的桌面移动:无头启动,回收约 0.3 GiB,gemma2:9b 在 4k 就从毫厘之间变成只是偏紧。能一锤定音的:同样五个模型在一块真正的 8 GB 卡上跑 ollama,把 nvidia-smi 的数字打印出来与本表的预测对照。那个测试台不是本文 —— 这张桌上的卡没资格冒充测试台。
最后测试 2026-11-01 —— 文件大小实时取自 Hugging Face 文件 API;适配的数学是除法,不是玄学。