回答

收藏

什么是大语言模型量化? 每个量化精度都代表什么?[karminski]

应用科普 应用科普 467 人阅读 | 0 人回复 | 2025-03-10

作者:@karminski-牙医
出处:https://github.com/karminski/one ... ntization-in-LLM.md

number-representation.png


量化 (Quantization) 是一种通过降低模型参数的数值精度来压缩模型大小的技术. 在深度学习中, 模型参数通常以32位浮点数 (FP32) 存储, 通过量化可以将其转换为更低精度的表示形式, 从而减少模型的内存占用和计算开销.

如图, FP32 的大小是 4 字节 (每个字节8bit, 4字节 * 8bit = 32bit), 而 FP16 的大小是 2 字节 (每个字节8bit, 2字节 * 8bit = 16bit).

这也是为什么大家喜欢用 Q4 量化模型的原因, 跟 FP16 (16bit) 的模型相比, Q4 (4bit) 的模型只有 1/4 的大小. 运行起来需要的内存也是1/4.

现在大多数模型训练都采用 FP16 的精度, 最近出圈的 DeepSeek-V3 采用了 FP8 精度训练, 能显著提升训练速度和降低硬件成本.

Q4_K_M 到底是什么意思?
所以我们大概了解了 Q4 实际上指的是 4bit 量化, 那么后缀都是什么意思呢? 于是我整理了常见的量化精度和后缀供大家参考:

这种命名方式一般是 GGUF & GGML 格式的模型. 他们通常采用 K 量化模型, 格式类似 Q4_K_M, 这里的 Q 后面的数字代表量化精度, K 代表 K 量化方法, M 代表模型在尺寸和 PPL (Perplexity, 困惑度) 之间的平衡度, 有 0, 1, XS, S, M, L 等.

PPL 是评估语言模型性能的重要指标, 它用来衡量模型对下一个词的预测准确程度

常见 K 量化版本的PPL对比 (这是一个7B模型):


QQ20250310-111526.png



(数据来自: llama.cpp PR 1684)
(具体全部量化选项可以看 llama.cpp 的源代码 ggml-quants.h)

那 bf16, 4bit, int4, fp8 这种呢?
这种常见于其它量化格式的模型. 有了上面的经验我们很容易猜出来 bf16 是 16bit 的精度, 4bit 是 4bit 的精度. 同样也建议至少使用 4bit 量化的模型, 除非模型特别大 200B+.




分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

344 积分
36 主题