摘要:GGUF 文件名里的
Q4_K_M、IQ4_XS、UD-Q4_K_XL只表示配方流派,不代表质量等级。本文拆解 GGUF 量化后缀的命名规则与三代技术演进(Legacy / K-quant / I-quant),用源码公式讲清Q4_K_M的混合精度配方,附 Llama-3.1-8B 各格式实测位宽表,并覆盖 2026 年新增的UD-/_XL、-imatrix、FP4 后缀,最后按显存给出选型建议与常见误区清单。
本文把 GGUF 量化后缀拆到底,并顺带讲清 GPTQ / AWQ / EXL2 / MLX 的差异,附 Llama-3.1-8B 实测位宽表。
文章目录
- 结论先行
- 一、先说个反直觉的事实:`Q4_K_M` 比 `Q4_K_S` 大,但 `Q2_K` 比 `Q2_K_S` 也大
- 二、命名公式:四段拆解
- 三、三代技术演进:用人话讲清楚
- Legacy:初代方案(Q4_0、Q5_1、Q8_0)
- 第二代:K-quant(2023 年 5 月,PR #1684)
- 第三代:I-quant(2024 年 1-3 月,PR #4773 起)
- 四、`Q4_K_M` 里到底混了什么
- 五、核心数据表:Llama-3.1-8B 实测位宽
- ⚠️ 两套口径不能混用
- 六、2026 年的三个新后缀
- 1. `UD-` 前缀 + `_XL` 后缀(Unsloth 动态量化)
- 2. `-imatrix`(重要性矩阵标记)
- 3. FP4:NVFP4 与 MXFP4(新战场,别急着上车)
- 七、容易踩的坑:同一个 `Q4_K_M`,两个文件差 1.17 GB
- 顺带扫盲:文件名里那些跟量化无关的字段
- 八、我该怎么选:按显存直接给答案
- 显存不够时的降级阶梯
- 别忘了量化之外的三个杠杆
- 九、其他生态扫盲:HF 上那些不是 GGUF 的后缀
- GPTQ 的 group size 到底怎么选
- EXL2 的"小数位宽"是怎么来的
- bitsandbytes:独一份"不在文件名里"的
- 还有几个你会撞见但不用深究的
- 十、三个经常被混为一谈的概念
- 十一、误区清单
- 十二、数据来源与口径说明
结论先行
下载本地模型时,你在文件名里看到的Q4_K_M、IQ4_XS、UD-Q4_K_XL,不表示质量等级,只表示配方流派。
真正的规则只有三条:
Q4里的 4 不是真实位宽。实测 Q4_K_M 在 Llama-3.1-8B 上是4.90 bpw(bit per weight),比 4 高出 22%。多出来的部分是"关键张量升档"和缩放因子的开销。_S/_M/_L不表示"小/中/大质量",它表示的是升档策略。它决定"有多少关键张量被提到更高精度",M 是平衡点,不是"中等质量"。- 同一个
Q4_K_M,不同打包者的文件能差 1 GB 以上。标签只告诉你配方流派,不告诉你最终成品。
第三条尤其重要:2026 年你在 HuggingFace 上看到的一半 GGUF 叫UD-Q4_K_XL,但主流教程里根本没有这个后缀的解释。
一、先说个反直觉的事实:Q4_K_M比Q4_K_S大,但Q2_K比Q2_K_S也大
按常识,S(Small)应该比 M(Medium)小,M 应该比 L(Large)小。这条在 Q3、Q4、Q5 上都成立,唯独在 Q2 上翻车:
| 格式 | Llama-3.1-8B 实际文件大小 |
|---|---|
| Q3_K_S | 3.65 bpw |
| Q3_K_M | 4.00 bpw |
| Q3_K_L | 4.31 bpw |
| Q4_K_S | 4.67 bpw |
| Q4_K_M | 4.90 bpw |
| Q2_K(无后缀) | 3.17 bpw |
| Q2_K_S | 更小(接近纯 2.6 bpw) |
原因是个历史遗留:Q2_K是 2023 年 K-quant 推出时的初版档位,自带大量升档(FFN 下投影都升到 Q3_K),源码里它的官方名字直接就叫“Q2_K - Medium”。Q2_K_S是后来补的省内存档,才是真正的"Small"。
所以看到Q2_K别以为它比Q2_K_S小:它是 2-bit 档里质量损失更小、体积也更大的那个。
二、命名公式:四段拆解
以UD-Q4_K_M为例:
UD - Q 4 _ K _ M ↑ ↑ ↑ ↑ ↑ │ │ │ │ └── 尺寸档:S/M/L(Small/Medium/Large) │ │ │ └────── K = K-quant 超块家族 │ │ └────────── 数字 = 目标位宽档位(不是真实平均位宽) │ └──────────── Q = 量化(IQ = 重要性量化,TQ = 三值量化) └───────────────── UD = Unsloth Dynamic,厂商自定义前缀| 后缀片段 | 含义 | 出现在哪 |
|---|---|---|
Q | 标准块量化 | 这些格式 |
IQ | i-quant:码本 + 重要性矩阵 | IQ1_S ~ IQ4_XS |
TQ | 三值量化(-1/0/+1),BitNet 专用 | TQ1_0 / TQ2_0 |
K | K-quant,256 权重超块结构 | Q2_K ~ Q6_K |
_0/_1 | 老格式:_0只存缩放,_1多存一个偏移 | Q4_0 / Q4_1 / Q5_0 / Q5_1 / Q8_0 |
_S/_M/_L | Small / Medium / Large 升档策略 | Q3_K_* ~ Q5_K_*、Q2_K_S |
_XS/_XXS | extra-small / extra-extra-small | IQ2_XXS / IQ2_XS / IQ3_XXS / IQ3_XS / IQ4_XS |
_NL | Non-Linear,非线性码本 | IQ4_NL |
UD- | Unsloth 动态量化 | UD-Q4_K_XL 等 |
_XL | 厂商自定义档位(llama.cpp 官方没有) | UD-Q4_K_XL |
三、三代技术演进:用人话讲清楚
Legacy:初代方案(Q4_0、Q5_1、Q8_0)
朴素的做法:每 32 个权重分一块,整块共用一个缩放因子,权重就近取整。
打个比方:一本菜谱里每种调料的用量都写成"3.2 克"“5.7 克”,现在统一改成"一小撮"“半勺”。省地方,但精度粗。
_0和_1的区别只有一条:_0只记缩放比例,_1额外记一个下界值(偏移)。多花 0.5 bpw,精度略好。
现状:HF 官方文档已把它们标注为"遗留方法,现在不常用"。但Q8_0至今活着,因为它几乎无损(相对 F16 的困惑度增量只有 +0.0004),在精度基准和微调母本这类场景里用得多。
⚠️ 一个常见错误:很多资料说Q8_1是 9.0 bpw 且会出现在权重文件里。不对。Q8_1只用于计算中间结果,你不会下载到一个 Q8_1 的权重文件。
第二代:K-quant(2023 年 5 月,PR #1684)
核心改进是两级分块:32 个权重的小块,打包成 256 权重的超级块;而且缩放因子本身也被再量化。
这一步把缩放因子的开销从老格式的 0.5 bpw 压到 0.0625~0.09 bpw。省下来的空间全给了权重,2-bit 和 3-bit 量化这才头一回变得可用。
人话版:不再"整本菜谱统一用勺",而是每道菜单独配一套量具,而且量具本身的刻度也做了精简。
第三代:I-quant(2024 年 1-3 月,PR #4773 起)
再进一步,三板斧:
- 码本(codebook):权重不存数值,只存"码本里的第几个格子"。8 个权重共用一个索引。
- 偶符号技巧:强制每组 8 个权重的正负号个数为偶数,省 1 bit。
- 重要性矩阵(imatrix)加权:误差按权重的重要性加权,重要的权重优先保住。
人话版:先请厨师把菜谱里关键的那几步标出来,那些步骤把克数写清楚,其余的随便糊弄。
代价是必须要有 imatrix,否则低 bit 档是"total garbage"(llama.cpp 源码注释原话,PR #4773 直接禁止了无 imatrix 的 IQ2_XXS/IQ2_XS 量化)。
四、Q4_K_M里到底混了什么
这一节是全篇的核心。Q4_K_M其实是一份混合精度配方,不是一个单一的块格式。
llama.cpp 源码(llama-quant.cpp)的判定函数是:
use_more_bits(i, n) = i < n/8 || i ≥ 7n/8 || (i − n/8) % 3 == 2翻成大白话:开头 1/8 的层、结尾 1/8 的层、中间每隔 3 层,这些层的关键张量会升档。
Q4_K_M 在标准 dense 模型上的完整配方:
| 张量 | 实际使用的格式 |
|---|---|
| 输出头(output.weight) | Q6_K(升档) |
| 词嵌入(token_embd) | Q4_K |
| attn_v(use_more_bits 命中的层) | Q6_K(升档) |
| attn_v(其余层) | Q4_K |
| ffn_down(use_more_bits 命中的层) | Q6_K(升档) |
| ffn_down(其余层) | Q4_K |
| 融合的 attn_qkv(若有) | Q5_K |
| 其余张量 | Q4_K |
为什么是首尾层和中间交替?直觉是:首尾层直接决定输入怎么进来、输出怎么出去,对最终概率分布影响更大,中间层交替升档是在质量和体积之间折中。
⚠️ 网上流传的另一个版本说"Q4_K_M 把一半 attention.wv 升到 Q6_K",这个说法不准确,源码里用的是上面那个公式。
_S/_M/_L的真实差别:
_S(Small):只升开头 4 个 attn_v 层和前 1/8 的 ffn_down_M(Medium):按 use_more_bits 公式升档_L(Large):升档范围更大、档位更高
五、核心数据表:Llama-3.1-8B 实测位宽
我用 Llama-3.1-8B(80.3 亿参数)的公开实测文件大小,反推了每个格式的真实平均位宽。这是相当扎实的一组数据,比"源码理论值"更贴近你实际下载到的东西。
| 格式 | 文件大小 | 真实 bpw | 相对 F16 | 困惑度增量* |
|---|---|---|---|---|
| F16(基准) | 16.06 GB | 16.00 | 基准 | — |
| Q8_0 | 8.54 GB | 8.51 | 53% | +0.0004 |
| Q6_K | 6.60 GB | 6.57 | 41% | −0.0008(噪声级) |
| Q5_K_M | 5.73 GB | 5.71 | 36% | +0.0122 |
| Q5_K_S | 5.60 GB | 5.58 | 35% | +0.0400 |
| Q4_K_M | 4.92 GB | 4.90 | 31% | +0.0532 |
| Q4_K_S | 4.69 GB | 4.67 | 29% | +0.0992 |
| IQ4_XS | 4.48 GB | 4.47 | 28% | 介于上两行之间 |
| Q3_K_L | 4.32 GB | 4.31 | 27% | +0.1764 |
| Q3_K_M | 4.02 GB | 4.00 | 25% | +0.2496 |
| Q3_K_S | 3.66 GB | 3.65 | 23% | +0.5551 |
| Q2_K | 3.18 GB | 3.17 | 20% | +0.6717 |
注:困惑度增量来自 llama.cpp PR #4773 附带的 llama-quantize 自打印数据,评测对象是 LLaMA-v1-7B(2024-01),与文件大小列不是同一个模型。它只用来看同族内的相对排序,不要当成 Llama-3.1-8B 的真实损失。
读这张表的方法:
- 从 Q4_K_M(+0.0532)到 Q3_K_M(+0.2496),困惑度增量放大近 5 倍。这就是"3-bit 开始能感觉到质量变化"的由来。
- 到 Q2_K(+0.6717)是明确的质量台阶,比 Q4_K_M 差了 12 倍。
- Q6_K 的 −0.0008 是负值,说明它和 F16 的差距已经在噪声范围内。想要"无损",Q6_K 就够了,不必上 Q8_0。
⚠️ 两套口径不能混用
这里容易出错。同一个IQ4_XS:
- 按源码块结构算:4.25 bpw
- 按实测文件大小反推:4.47 bpw
差的 0.22 bpw 是词嵌入、输出头、一维小张量这些"不进块结构统计"的部分。你在不同资料里会看到两套数字打架,它们都没错,只是口径不同。我这张表统一用实测口径,因为它直接对应你要下载多少 GB。
六、2026 年的三个新后缀
1.UD-前缀 +_XL后缀(Unsloth 动态量化)
这是两份主流教程都没讲、但你躲不开的一个。
是什么:标准 GGUF 量化给每一层用同一套规则;Unsloth Dynamic 会逐层分析敏感度,把敏感的层(尤其是注意力层)提到高精度,不敏感的层往更低的位宽压。
实测效果(Gemma 3 12B,Unsloth 公布数据):
| 指标 | BF16 基线 | UD-Q4_K_XL | 标准 Q4_K_XL |
|---|---|---|---|
| 5-shot MMLU | 67.15% | 67.07% | 更低 |
| 文件大小 | — | 7.52 GB | 相近 |
KL 散度(衡量量化前后输出分布差异,越低越好)的改善:Q2_K_XL −3.8%、Q3_K_XL −8.2%、Q4_K_XL −4.8%。
我的建议:如果同一个模型既有 UD- 版又有标准版,优先下 UD- 版。同样体积,质量更好,不要钱。
但这里有个必须知道的真相:UD-Q4_K_XL的 GGUF 文件头里,file_type 字段写的是15,也就是LLAMA_FTYPE_MOSTLY_Q4_K_M。_XL这个档位只活在文件名里,不在文件格式里。
也就是说,_XL是 Unsloth 自己定义的标签,llama.cpp 官方的量化类型表根本没有这一项。同理,你在别处看到的Q4_K_XL、Q5_K_XL、Q6_K_XL也都是厂商自定义档位。
2.-imatrix(重要性矩阵标记)
前面说过,imatrix 是对"哪些权重重要"的统计,它对 IQ 系列是刚需。
⚠️常见的误解:IQ不等于imatrix。
IQ是一种存储类型(用码本存索引)imatrix是一份校准数据(告诉量化器该保护谁)
一个叫Q4_K_M的文件也可能是 imatrix 量化版。主流打包者(Bartowski、MaziyarPanahi、unsloth)的 K 系列基本都带 imatrix。
下载建议:各档 IQ 系列、以及 Q2/Q3 档位,只下有 imatrix 的版本。2-bit 档没有 imatrix 基本不可用。
3. FP4:NVFP4 与 MXFP4(新战场,别急着上车)
| NVFP4 | MXFP4 | |
|---|---|---|
| 归属 | llama.cpp 主线(type ID = 40) | ik_llama.cpp fork(type ID = 39) |
| 背景 | NVIDIA block-scaled FP4 | OCP 开放标准,gpt-oss 原生格式 |
| 落地时间 | 2026 年 3-4 月分批合并 | 2025-11 起 |
| 硬件 | 仅 Blackwell(RTX 5090 / PRO 6000 / B200)有原生加速 | 覆盖广,含 CPU |
关键区别:老卡(RTX 3090 / 4090 / 5070)也能跑 NVFP4 文件,但只省显存,不加速。
Blackwell 原生路径是 llama.cpp build b8967(2026-04-29)才打开的。社区实测 Qwen3.6-27B-NVFP4 在 RTX 5090 上:
| 项目 | b8966 | b8967 | 变化 |
|---|---|---|---|
| 预填充 pp512 | 3295 t/s | 5547 t/s | +68% |
| 预填充 pp512 @ 32K 上下文 | 2515 t/s | 3587 t/s | +43% |
| 生成 tg128 | 73.7 t/s | 73.6 t/s | 几乎不变 |
看明白了吗:FP4 加速的是读长 prompt 的速度(RAG、长上下文 agent、代码库问答),吐字速度几乎没变。如果你主要是对话聊天,这个升级跟你关系不大。
至于"FP4 质量是否优于 Q4_K_M",2026 年 9 月这个时间点,社区结论还没统一。有模型上表现好,也有编码类 benchmark 明显回退的案例。别急着当结论用。
七、容易踩的坑:同一个Q4_K_M,两个文件差 1.17 GB
2026 年 9 月有人扒了同一个模型(Qwen3.6-27B)的两个Q4_K_M文件做对比:
| 打包者 | 差异 |
|---|---|
| unsloth | 基准 |
| bartowski | 比 unsloth 大 1.17 GB |
差异来源:bartowski 把 32 个张量保留在 Q8_0 不压,unsloth 一个都不留。两者的文件标签都叫Q4_K_M。
再举一个更明显的:Unsloth 的某个"Q4_K_M"文件里,IQ4_XS 张量比 Q4_K 张量还多。标签说的是配方流派,不是配方内容。
所以:别只看后缀选文件,点开文件列表看一眼实际大小。同一模型同一标签差 1 GB 是常态。
顺带扫盲:文件名里那些跟量化无关的字段
| 字段 | 含义 |
|---|---|
-Instruct/-it | 指令微调版,能听懂人话(-base/-pt是预训练基座,不会对话) |
-bf16/-fp16 | 没量化,16 bit 全精度,体积比任何量化版都大 |
-imatrix | 用了重要性矩阵校准 |
-00001-of-00009 | 分片编号,大模型被切成多个文件,要下全 |
-32K/-1M | 上下文长度 |
-GGUF/-MLX-4bit/-AWQ/-exl2 | 目标运行时的格式 |
八、我该怎么选:按显存直接给答案
文件大小 ≈ 参数量(十亿)× bpw ÷ 8。这只是权重,还要另加 KV cache 和 0.5~1 GB 运行开销。
| 模型规模 | Q6_K (6.57) | Q4_K_M (4.90) | IQ4_XS (4.47) | Q3_K_M (4.00) | IQ3_M (3.66) |
|---|---|---|---|---|---|
| 4B | 3.3 GB | 2.5 GB | 2.2 GB | 2.0 GB | 1.8 GB |
| 7B | 5.7 GB | 4.3 GB | 3.9 GB | 3.5 GB | 3.2 GB |
| 8B | 6.6 GB | 4.9 GB | 4.5 GB | 4.0 GB | 3.7 GB |
| 14B | 11.5 GB | 8.6 GB | 7.8 GB | 7.0 GB | 6.4 GB |
| 32B | 26.3 GB | 19.6 GB | 17.9 GB | 16.0 GB | 14.6 GB |
| 70B | 57.5 GB | 42.9 GB | 39.1 GB | 35.0 GB | 32.0 GB |
按显卡直接抄答案:
| 你的显存 | 推荐 |
|---|---|
| 4 GB | 3B~4B @ Q4_K_M,或 7B @ IQ3_M(务必 imatrix 版) |
| 6 GB | 7B~8B @ Q3_K_M / IQ3_M |
| 8 GB | 7B~8B @ Q4_K_M(贴边,长上下文要开 KV 量化)或 IQ4_XS;想跑 14B 就 IQ3_M |
| 12 GB | 8B @ Q5_K_M / Q6_K,或 14B @ Q4_K_M |
| 16 GB | 14B @ Q5_K_M,或 32B @ Q3_K_M |
| 24 GB | 32B @ Q4_K_M,或 70B @ Q3_K_M |
我手上是 RTX 3070 8G,按这张表,8B 的 Q4_K_M 占 4.9 GB,加 KV cache 和开销基本贴着 8 GB 边,这就是为什么很多人 8G 卡跑 8B 模型"能跑但一开长对话就崩"。
显存不够时的降级阶梯
Q4_K_M → IQ4_XS → Q3_K_M / IQ3_M → IQ3_XS / IQ3_XXS → IQ2_M / IQ2_XS → IQ2_XXS / IQ1_M 基准 省 9% 省 18~25% 省 33~37% 省 44~52% 省 57~64%但有个首要原则:降两级以上之前,先考虑换个更小的模型。
理由:模型参数量对质量的影响,远陡于位宽对质量的影响。同样在 IQ3_XXS 下,13B 的困惑度 5.4469 明显优于 7B 的 6.3013;70B 甚至在 IQ2_XXS(2.06 bpw)上还有 4.079。
同样 20 GB 预算,30B @ Q4_K_M 通常打得过 14B @ Q8。但这规则有边界:70B @ Q2 未必能赢 30B @ Q4,压到 2-bit 就进入收益递减区了。
别忘了量化之外的三个杠杆
- KV cache 量化:Q8_0 几乎不花代价就省下一半显存(困惑度只 +0.001)。参数是
--cache-type-k q8_0。 - 缩短上下文:KV cache 随上下文线性增长,很多人省这个比降位宽划算。
- 部分 GPU 卸载:
-ngl N只放 N 层进显存,剩下的吃内存。
⚠️量化权重不会缩小你的 KV cache。这是常见的踩坑:机器在对话开头好好的,聊 40 轮就崩,那是 KV cache 在涨,从 Q6 降到 Q4 一点用没有。
九、其他生态扫盲:HF 上那些不是 GGUF 的后缀
你不是每次都在用 llama.cpp。这一节覆盖另外五大格式。
| 格式 | 典型文件名 | 关键后缀 | 谁能跑 |
|---|---|---|---|
| GGUF | xxx-Q4_K_M.gguf | 本篇上文 | llama.cpp / Ollama / LM Studio,CPU+GPU+Mac 通吃 |
| GPTQ | xxx-GPTQ-4bit-32g-actorder | 32g/64g/128g= 分组大小(越小越准、越占显存);actorder(也叫 desc_act)= 按激活重要性排序,更准 | vLLM / SGLang / ExLlamaV2,纯 GPU |
| AWQ | xxx-AWQ-4bit | 参数少,一般就一个 4bit | vLLM / TGI / Transformers,纯 GPU |
| EXL2 | xxx-4.65bpw-h6-exl2 | 4.65bpw=目标平均位宽,可连续调(2~8 任意值);h6= 输出头用 6 bit | ExLlamaV2 / TabbyAPI,纯 NVIDIA GPU |
| MLX | xxx-4bit/xxx-8bit | 就 4bit / 8bit 两档,没有中间花样 | 仅 Apple Silicon |
| bitsandbytes NF4 | 不体现在文件名里 | 代码里load_in_4bit=True+bnb_4bit_quant_type="nf4" | Transformers,加载时当场量化,QLoRA 微调标配 |
GPTQ 的 group size 到底怎么选
TheBloke 的 Llama-2-13B-GPTQ 实测(同一模型、同一 bit):
| 分支 | 文件大小 |
|---|---|
4bit-32g-actorder | 8.00 GB(精度更高、体积也更大) |
4bit-64g-actorder | 7.51 GB |
4bit-128g-actorder | 7.26 GB |
4bit-128g(无 actorder) | 7.26 GB(更省、略差) |
结论:group size 越小越准,代价是文件更大。显存够就选 32g。
EXL2 的"小数位宽"是怎么来的
EXL2 是把位宽做成了连续可调的旋钮:你给一个目标(比如 4.65 bpw),量化器逐层测误差曲线,然后在这个预算内分配,敏感层给 6~8 bit,钝感层给 3~4 bit,平均下来正好 4.65。
这就是为什么你会看到4.65bpw这种奇怪数字,它来自真实的分层加权平均,跟营销取整没关系。
代价:EXL2 只能在 ExLlamaV2 / TabbyAPI 上跑,纯 NVIDIA GPU,没有 CPU 回退。速度上它对同硬件的 GGUF 有 10~30% 优势。
bitsandbytes:独一份"不在文件名里"的
它不产出文件,是在你from_pretrained()的时候当场把模型压成 4 bit 塞进显存。所以 HF 上你找不到"NF4 版"的模型,因为根本不存在这种文件。
它是 QLoRA 微调的底座:基座模型冻结在 4-bit NF4,只训练很小的 LoRA 适配器。一块 48 GB 卡微调 65B 模型靠的就是它。
还有几个你会撞见但不用深究的
- FP8 / compressed-tensors:llm-compressor 产出的格式,要 H100/B100/MI300 这种新卡才吃满
- HQQ:免校准,8 bit 到 1 bit 都能压,但 4 bit 以下掉得厉害
- AQLM / SpQR / VPTQ / HIGGS:研究向,冲 2 bit 以下
- EXL3:ExLlamaV3 的新格式,接 EXL2 的班
十、三个经常被混为一谈的概念
量化、剪枝、蒸馏是三件不同的事。
| 干了什么 | 模型结构 | 参数量 | |
|---|---|---|---|
| 量化 | 把每个权重从 16 bit 压到 4 bit | 不变 | 不变 |
| 剪枝 | 去掉不重要的权重或整层 | 变了 | 减少 |
| 蒸馏 | 让小模型学大模型的输出 | 换了模型 | 大幅减少 |
你在文件名里看到的Q4_K_M只说明它做了量化。有些模型名里同时带Distill(蒸馏)和Q4_K_M(量化),那是两件事叠加。
顺带说一个:QAT(量化感知训练)模型是训练时就带着量化约束训的,不是训完再压。如果官方出了 QAT 版(比如 Gemma 的 QAT 构建),优先于社区的后量化版本。
十一、误区清单
- ❌ “Q4 就是 4 bit” → 实测 Q4_K_M 是 4.90 bpw
- ❌ “_S/_M/_L 是质量等级” → 是升档策略,M 是平衡点不是"中等质量"
- ❌ “IQ 就是 imatrix 量化” → IQ 是存储类型,imatrix 是校准数据,两回事
- ❌ “Q2_K 比 Q2_K_S 小” → 反过来,Q2_K 更大
- ❌ “量化了显存就够长对话了” → 量化权重不动 KV cache
- ❌ “越小越快” → 在质量可接受范围内成立;低于 Q3 后质量崩了,快也没意义
- ❌ " IQ 比 K 好" → 同位宽确实更优,但要 imatrix,且部分后端(曾有 Metal)跑得慢
- ❌ “同标签就是同文件” → 差 1 GB 以上是常态,看实际大小
- ❌ “Q8_0 保险些” → Q6_K 已经在噪声级了,Q8 多花 30% 体积买看不见的差别
十二、数据来源与口径说明
文件大小与真实 bpw:Llama-3.1-8B(80.3 亿参数)GGUF 各格式的公开实测文件大小,按bpw = 文件大小 × 8 ÷ 参数量反推,统一用 10^9 字节的 GB 口径(与 HuggingFace 页面显示一致)。
困惑度增量:llama.cpp PR #4773(2024-01)附带的 llama-quantize 工具自打印数据,评测对象为LLaMA-v1-7B。只用于同表内相对排序。
混合精度配方:llama.cpp 源码src/llama-quant.cpp的use_more_bits判定函数与张量升档规则。
Unsloth Dynamic 数据:Unsloth 公布的 Gemma 3 12B 对比数据(5-shot MMLU 与 KL 散度)。
FP4 数据:llama.cpp NVFP4 相关 PR(#20644 / #21074 / #22196 等),build b8967 的 RTX 5090 实测来自 2026-04-29 社区 benchmark。
GPTQ group size:TheBloke/Llama-2-13B-GPTQ 模型卡分支对照表。
局限:本文未在本地实测。这些质量结论基于公开困惑度/KL 基准,这类代理指标与实际对话、编码体感可能偏离;不同评测的上下文长度和数据集不同,跨表不可直接比较;同一配方在不同模型(GQA 比例、词表大小、是否共享嵌入)上的实际 bpw 有 ±0.1 级浮动。
一句话带走:默认下载Q4_K_M,有UD-版就下UD-版,显存差 10% 换IQ4_XS,差 20% 换Q3_K_M/IQ3_M,再往下不如换个更小的模型。下载前点开看一眼实际文件大小,别只信后缀。
原创声明:本文为作者原创,转载请注明出处。文中 5 张配图与封面均由作者基于公开数据制作。
更多AI相关信息,请关注本号。