先算账:为什么必须量化
把开源模型下载下来自己跑,第一件事就是算显存账。权重字节数 = 参数量 × 每参数字节数,而精度的字节数是硬的:FP32 四字节、FP16 与 BF16 两字节、INT8 一字节、INT4 半字节。拿 Llama-2-70B 代入:FP16 要 140 GB,单张 H100 都紧张;量化到 4-bit 只剩约 35 GB,一张 48 GB 的消费级/工作站显卡就能装下,24 GB 的卡则可以跑 13B-14B 级别。量化不是锦上添花,是「能不能在自己机器上跑」的分水岭。
推理场景下量化还有第二重红利:提速。大模型解码是访存密集型负载——每生成一个 token 都要把全部权重从显存读一遍(KV cache 的账本,本站已有专文),瓶颈常在带宽而非算力。权重从 2 字节压到 0.5 字节,要读的数据量变成四分之一,生成速度自然上去了。AWQ 论文配套的 TinyChat 推理核实测比 FP16 基线快 3.2-3.3 倍,GPTQ 的反量化 kernel 也有 3.25-4.5 倍的端到端加速。
不同规模的模型,量化前后的账目大致是这张表:
| 模型规模 | FP16 显存 | INT4 显存 | 适配的硬件档位 |
|---|---|---|---|
| 7B | 约 14 GB | 约 3.5 GB | 8 GB 显卡 / 手机旗舰 |
| 13B | 约 26 GB | 约 6.5 GB | 12-16 GB 显卡 |
| 70B | 约 140 GB | 约 35 GB | 48 GB 工作站卡 / 双卡 |
(按每参数字节数直接换算,实际部署还要给 KV cache 和激活值留余量——经验法则是至少多留 20%-30%。)
两条路线:训练后量化是绝对主流
按「什么时候量化」分两条路。量化感知训练(QAT)在训练时就模拟量化误差,质量最好但要重训练,大模型时代基本只有原厂玩得起。训练后量化(PTQ)拿现成权重直接压,是开源社区的事实标准。PTQ 又分两档:bitsandbytes 这类即时量化开箱即用、加载时现压;GPTQ、AWQ 这类校准量化需要先用一批样本(几十到几百条即可)跑一遍模型,让量化器「看看真实激活长什么样」再决定怎么压——多花 0.1 到 3 个 GPU 小时,换明显更低的精度损失。校准数据的另一个价值是把极限推得更低:Hugging Face 文档指出,带校准的方法可以把压缩做到 1-2 bit 的极限区间,即时量化做不到。
值得多想一步的是校准量化的原理——它本质上是在「用一小撮数据窥探模型的实际工作状态」。这也埋下了后面会看到的一个问题:如果校准数据的分布和你实际的请求分布差得远,量化器做出的权衡就可能不适用于你。
Hugging Face 的量化总览里列了 20 多种方法,但实际主导生态的就三支:服务端的 GPTQ/AWQ、端侧的 GGUF,以及做即时量化的 bitsandbytes。
GPTQ:用二阶信息把误差「补」回去
GPTQ(Frantar et al.,ICLR 2023)的血统可以追到神经网络的经典剪枝理论(Optimal Brain Surgeon 一脉):量化每个权重必然引入误差,但如果能算出「这个误差会怎样影响该层的输出」,就可以把误差补偿到还没量化的其他权重上。
具体做法是逐层处理:对每一层的权重,用一小批校准数据估计输出误差的 Hessian(二阶)信息,然后逐个量化权重——每压掉一个,就把它的量化误差按 Hessian 指引重新分摊给剩余权重,压完一层再处理下一层。这篇论文最有名的数字是效率:用约 4 个 GPU 小时就能完成 175B 参数模型的量化,单个 A100 即可,让「发模型当天社区就出 4-bit 版」成为可能。
GPTQ 有一个在后续论文里被反复验证的软肋:对校准数据的分布敏感。AWQ 论文的实测显示,跨分布校准时 GPTQ 的困惑度恶化 2.3-4.9,而后面要讲的 AWQ 只恶化 0.5-0.6。校准集选得好不好,直接影响 GPTQ 模型的最终质量。
AWQ:不是所有权重都一样重要
AWQ(Lin et al.,MIT 韩松组,MLSys 2024 最佳论文)的出发点是一个经验观察:权重里只有约 0.1%-1% 是「显著权重」(salient weights),跳过它们不量化(或高精度保留),模型质量就能保住大半。
关键在于怎么识别「重要」。直觉是看权重幅度——数值大的重要。AWQ 论文用实验否定了这个直觉:按权重大小选通道,几乎无改善;按激活分布选——哪个权重通道在真实前向中接收的激活值大,哪个就显著。这个判据背后是有道理的:激活值大,说明该通道承载的信号在当前输入下起了实质作用,量化误差会直接传到输出;权重本身大,只说明参数存储的数值大,未必在实际计算里挑大梁。「重要性是运行时属性,不是存储时属性」,这是 AWQ 最值得记住的洞见。论文给过一个干脆的对比:OPT-6.7B 在 INT3 下保留 1% 通道为 FP16,按激活选,困惑度从朴素量化的 23.54 降到 11.39;按权重大小选,几乎纹丝不动。
AWQ 的实际质量数字(Llama-2,INT4-g128 对比 FP16):7B 困惑度 5.60 对 5.47,70B 是 3.41 对 3.32——都在 0.13 附近,非常温和。它的鲁棒性同样突出:AWQ 用 16 条校准样本就能达到 GPTQ 用 192 条的水平,跨分布场景稳定性也更好。低比特是 AWQ 优势最明显的区间:LLaMA-7B INT3 下 AWQ 困惑度 6.35,GPTQ 是 8.81;INT4 上两者基本打平(3.41 对 3.42)。
GGUF 与 llama.cpp:消费设备的事实标准
前两者面向有 GPU 的服务端,真正让「笔记本跑大模型」普及的是 llama.cpp 的 GGUF 格式。它为 CPU、Apple Metal、CUDA、Vulkan 等后端做了全套优化,支持 1.5-8 bit 量化,CPU 与 GPU 可以混合跑——大模型住内存、热点层进显存。
GGUF 的命名初看像乱码,其实是一套紧凑的说明书。拿最常见的 Q4_K_M 拆解:Q4 表示平均约 4-bit;K 表示用了 k-quants 量化方案——把 256 个权重组成一个超块,块内再分小块、每小块配一个 8-bit 缩放因子,比旧方案(Q4_0)在同等体积下困惑度更低;M 表示 medium,同一比特数下的质量档位(S/L 分别更小/更大),Q8_0 则是 8-bit、质量接近 FP16。同一个模型通常有从 Q2_K 到 Q8_0 的一整排版本,用户按显存与质量预算挑选。
k-quants 之外,社区还有一个重要的增强:imatrix(重要性矩阵)。用 llama-imatrix 工具在校准文本上跑一遍模型,记录哪些权重对输出影响大,量化时(llama-quantize --imatrix)让重要权重保留更高精度——思路与 AWQ 的激活感知一脉相承,在 3-bit 及以下的激进压缩上收益尤其明显。Hugging Face 还提供了自动把仓库转换成 GGUF 的 Space,社区模型基本隔天就能出全系列量化版。
量化的代价:什么时候不要量化
「量化会不会伤推理能力」在 2025 年前后有了系统性的实测答案,结论比口号微妙。
先看好消息。Red Hat 做过 50 万次以上的大规模评估:4-bit 与 8-bit 量化在 4K-64K 的长上下文任务上保留了 99% 以上的精度;针对推理模型的实证研究(2025 年 8 月)也确认,4-bit weight-only 量化与 KV cache 量化对数学推理的影响在 1% 以内。保守量化(4-bit 及以上)的代价,日常任务基本无感。
坏消息在激进量化。另一项研究测得 AWQ/GPTQ 类方法在数学任务上最高降 32.39%、平均降 11.31% 的精度——不过该结论针对的是包含 2-bit 的激进设置;4-bit 之下数学与代码能力是「先受伤的能力」,这在多轮实测里反复出现。此外,长输入任务(64K 以上输入、长输出)的量化影响与短文本不能直接外推,EMNLP 2025 的一项系统评估专门指出了这一点。
为什么受伤的总是数学和代码?一个合理的解释是:这类任务依赖长链条的精确计算,每一步都要用到权重的精细差别,量化噪声在多步推理中逐步累积、放大;而闲聊、摘要这类任务对单步误差更宽容,语义冗余本身就能吸收噪声。这个机制也解释了为什么 4-bit 是一条清晰的经验分界线——更低的比特带来的误差水平恰好跨过了「多步累积可承受」的阈值。
落地建议可以收敛成一张选型表:
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 消费级显卡 / Mac 本地跑 | GGUF Q4_K_M 起步 |
生态最顺,显存富余上 Q5/Q6 |
| 服务端 GPU 部署 | AWQ 或 GPTQ 4-bit | 质量接近,内核成熟;校准数据领域差异大时偏 AWQ |
| 快速试验、不想预处理 | bitsandbytes 即时量化 | 零校准,加载即压 |
| 数学 / 代码推理敏感 | 不低于 4-bit,最好 FP16 | 多步累积误差敏感,评测先行 |
再强调一遍最后一条:评测驱动选型,不要只看通用榜单——通用基准上的差异可能只有零点几个点,到你的具体任务上未必如此。
小结
量化做的事说穿了只有一件:用不均匀的精度分配,把「所有参数同样重要」这个浪费的假设改掉。GPTQ 用二阶信息把误差补偿给邻居,AWQ 按激活分布认出那 1% 的关键权重,GGUF 的 k-quants 用超块结构把压缩做进了消费设备的生态。方法各不相同,哲学是一致的——精算每一比特。当模型权重从 140 GB 变成 35 GB,「谁能跑大模型」的门槛就从中副本位下移到了每个人的桌面。这也是过去两年开源模型生态繁荣最被低估的一块基建。
参考资料
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers(ICLR 2023):二阶误差补偿与「175B 约 4 GPU 小时」的原始出处。
- AWQ: Activation-aware Weight Quantization(MLSys 2024 最佳论文):激活感知、显著权重与校准鲁棒性的全部实验数字。
- Hugging Face 量化文档总览:20+ 量化方法的支持矩阵与校准要求。
- llama.cpp(GitHub):GGUF 格式、k-quants 与多后端支持。
- llama.cpp imatrix 工具文档:重要性矩阵的用法与适用场景。
- Quantization Hurts Reasoning?(2025-08):量化对推理能力影响的系统实证,4-bit 近无损与低比特退化的边界。
读者留言
COMMENTS 暂无还没有留言,来说第一句?