什么是模型量化?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 是最常用的平衡选择。