什么是模型量化?Q4、Q8、F16 到底是什么意思?

更新于 2025-07-01

量化的基本概念

模型的参数本质上是一堆数字(浮点数)。原始模型通常用 16 位浮点数(F16)存储每个参数,占 2 字节。 量化就是用更少的位数来表示这些数字: • F16(16-bit):原始精度,每参数 2 字节 • Q8_0(8-bit):每参数 1 字节,几乎无损 • Q6_K(6-bit):每参数 0.75 字节,轻微损失 • Q4_K_M(4-bit):每参数 0.5 字节,可接受的损失 • Q2_K(2-bit):每参数 0.25 字节,明显损失 打个比方:原始模型像高清照片(16-bit),量化就是压缩成 JPEG——文件变小了,画质会有一点损失,但大部分情况下够用。

量化会损失多少质量

这取决于模型大小和量化等级: 大模型(70B+)量化损失更小: • 70B Q4 ≈ 原始质量的 95%+ • 70B Q2 ≈ 原始质量的 85%+ 小模型(7B 以下)量化损失更大: • 7B Q4 ≈ 原始质量的 90% • 7B Q2 ≈ 原始质量的 70% 经验法则:大模型 Q4 量化 > 小模型 F16。也就是说,如果你的显存能跑 14B Q4 或 7B F16,选 14B Q4 通常效果更好。 对大多数用户来说,Q4_K_M 是最佳选择——体积小、速度快、质量损失在可接受范围内。

K 和 M 是什么意思

你可能注意到量化名称里有 K 和 M,比如 Q4_K_M: • K 代表 K-quant,是 llama.cpp 开发的一种智能量化方法。它不是对所有参数统一量化,而是根据参数的重要性分配不同的精度 • M 代表 Medium(中等),是 K-quant 的一个变体。还有 S(Small,更小但质量稍差)和 L(Large,更大但质量更好) 所以 Q4_K_M 的意思是:4-bit 量化,使用 K-quant 方法,Medium 变体。 简单记:带 K 的比不带 K 的质量好,M 是最常用的平衡选择。