问题
一个 70 亿参数(7B)的模型,如果用 FP16(半精度浮点,每参数 2 字节)存储,仅权重就需要约 14GB 显存。普通手机根本没有这么大的内存。
量化的思路
量化(Quantization)的做法是:用更少的比特数来表示模型权重和激活值。
常见方案:
- FP16 / BF16:16 位浮点,已是训练中的常见格式;
- INT8:8 位整数,相比 FP16 直接减半;
- INT4:4 位整数,再减半,是端侧部署的热点;
- 更激进的还有 2 位、1 位量化(研究阶段)。
为什么能这么做
神经网络对数值精度有一定的容错性。模型的权重分布通常集中在很小的范围内,用低位宽表示不至于破坏整体结构。
关键技巧在于确定映射关系——如何把浮点数值范围映射到有限的整数区间。常见做法包括:
- 对称/非对称量化:是否给零点留出偏移;
- 逐通道量化(Per-channel):对权重矩阵的每一列/行单独计算缩放因子,比整体用一个缩放因子精度高得多;
- 分组量化(Group-wise):折中方案,把权重分小组,每组一个缩放因子。
训练后量化 vs 量化感知训练
PTQ(Post-Training Quantization):模型训练完成后直接量化。简单快速,但精度损失相对较大,尤其在 INT4 及以下。
QAT(Quantization-Aware Training):在训练过程中就模拟量化效果,让模型"适应"低精度。精度保持更好,代价是需要重新训练。
实际的精度损失
量化不是无损的。一般规律是:
- INT8 量化:精度损失通常很小,很多任务上几乎无损;
- INT4 量化:需要配合好的量化算法(如 GPTQ、AWQ、GGUF 中的各种方法),损失可控但可感知;
- 更低位宽:损失显著,需要特殊处理。
一个实用策略是混合精度:对敏感层(如注意力机制中的某些部分)保留更高精度,对其余部分激进量化。
与端侧部署的关系
前面提到,努比亚的 AI 智能体手机内置 30B 端侧离线大模型。要在手机上跑 30B 模型,量化几乎是必需的——即便经过 INT4 量化,30B 参数仍需约 15GB 存储,对手机内存和闪存带宽都是挑战。
这解释了为什么端侧大模型目前多集中在 3B–10B 量级,30B 属于相当激进的选择。
说明:本文为模型压缩技术的公开知识整理。