「我 24G 内存能跑 27B 吗?」
这个问题我被问过很多次,答案每次都不一样——不是因为提问的人不同,是因为没人说清楚自己在问哪一档量化。
24GB 跑 27B:Q4 能跑,还能开 48K 上下文;Q5 也能跑,但上下文只剩 12K;Q6 直接装不下。同一台机器,同一个模型,三档三个结果。
量化在压什么
模型权重本来是 16 位浮点,每个参数占 2 字节。Q4 就是把这 2 字节压到大约半个字节,代价是精度。压得越狠,模型越”省地方”,也越容易在细节上出错。
实际用的量化档,参数体积大概是这个比例(每 10 亿参数):
| 档位 | 每 10 亿参数 | 27B 模型体积 |
|---|---|---|
| Q4_K_M | 0.59 GB | 15.9 GB |
| Q5_K_M | 0.70 GB | 18.9 GB |
| Q6_K | 0.82 GB | 22.1 GB |
| Q8_0 | 1.06 GB | 28.6 GB |
| FP16 | 2.00 GB | 54 GB |
Q4 到 Q8,体积差 1.8 倍。这不是「画质高低」的区别,是「装得下装不下」的区别。
被忽略的那一半:KV cache
大多数人算内存只算权重,但推理时还有一块:KV cache,用来存上下文的历史。
它也跟量化精度走。Q8 的 KV 是 Q4 的两倍左右,Q6 是 1.5 倍。所以你把权重从 Q4 换到 Q8,不只是权重翻倍,能留给上下文的余量也跟着缩。
这就是为什么 Q5 掉得那么狠。24GB 机器,扣掉 15% 给系统之后可用 20.4GB:
Q4 权重 15.9GB → 余 4.5GB → 上下文 48K
Q5 权重 18.9GB → 余 1.5GB → 上下文 12K
Q6 权重 22.1GB → 余 -1.7GB → 装不下
Q5 的权重只比 Q4 多 3GB,但可用的余量少了三分之二,而每 K 上下文的成本还贵了 25%。两个因素叠起来,48K 塌成 12K。
判定线在 1.25
判断一台机器装不装得下,粗糙但够用的规则是:
内存 ≥ 权重 × 1.25
那 25% 留给 KV cache、系统本身、显存碎片。低于这条线不一定跑不起来,但会跑到一半 OOM,或者上下文被压到几百 token——比跑不动更难受。
(下面算上下文时我扣的是 15%,比这条线松一点:判断「能不能跑」宁可保守,估「能开多长」可以放过一点。两个数不是一套,别混着用。)
按这条线,27B 各档需要的内存:
| 档位 | 权重 | 最低内存 |
|---|---|---|
| Q4_K_M | 15.9 GB | 20 GB |
| Q5_K_M | 18.9 GB | 24 GB |
| Q6_K | 22.1 GB | 28 GB |
| Q8_0 | 28.6 GB | 36 GB |
注意 Q5 刚好卡在 24GB 这条线上——能跑,但没余量。这就是刚才那个 12K 的由来。
那到底该选哪档
我的看法很简单:
24GB 及以下,锁死 Q4。 不是 Q4 最准,是别的档在这个容量上根本没法用。想提精度,先加内存,别加量化。
32GB,可以上 Q5。 权重 18.9GB 加上 KV,上下文还能开到 70K 上下,比 24GB 那台宽裕得多,精度也确实有提升。
48GB 以上,Q6 是甜点。 Q8 的精度提升已经很小了,体积却接近翻倍,除非你有明确的评测需求,否则不值。
Q8 和 FP16 基本是评测和微调场景用的。 27B 的 FP16 要 54GB,消费级机器上只有 64GB 以上的统一内存能碰。
还有个常被忽略的点:同一台机器,跑 27B 的 Q4 和跑 32B 的 Q4,内存占用差不多(15.9 vs 18.9),但上下文差很多。24GB 上 27B 能开 48K,32B 只剩 12K。模型大一号,可用性掉一档。
这些数字怎么来的
权重体积用的是 llama.cpp 各量化档的经验系数,跟实际的 GGUF 文件大小有 ±5% 的出入。上下文估算是按「可用内存减去权重,再按 KV 消耗速率折算」,比较粗,但量级对得上——它能告诉你 48K 和 12K 的差距,不能告诉你精确到 K。
要算自己那台,照着上面这个口径推一遍就行:先按量化档估权重体积,再用「可用内存减权重」除以 KV 消耗速率,估上下文能开多长。
带宽那一栏查不到的话,Mac 看苹果官网技术规格,显卡是显存位宽 × 速率。
顺带一提,选机器的时候也别忘了看带宽——我上一篇文章里那组实测数据说明,同样的芯片、不同的软件栈,速度能差一倍。