为什么量化是部署标配
FP16(16 位浮点)是模型推理的常见默认精度,也是显存的吞金兽:显存占用大致按「参数量乘以每参数字节数」估算,70 亿参数的模型 FP16 就要 14GB 上下的显存,还没算 KV Cache(推理时缓存的注意力键值,随上下文变长而增长)。量化(Quantization)把权重从 FP16 压到 INT4(4 位整数),体积与显存大致降到四分之一量级——7B 级模型能塞进 8GB 级的消费级显卡,大模型跑进个人硬件与中小成本服务器,靠的就是这一步。省下的显存还能换来更大的并发批次与更长的上下文窗口,所以生产环境愿意承受一点精度损失,账要这样合起来算。
原理:用更少的比特近似权重分布
浮点数同时用「尾数与指数」表达精度和动态范围,整数只有有限档位。量化的本质是给权重分布换一套更粗的网格:把权重按组统计取值范围,每组共享缩放系数,再把每个权重舍入到最近的网格点。比特越少,网格越粗,逼近误差越大——精度账就是从这里欠下的。
为什么数学与多步推理对量化更敏感?粗网格带来的误差是单点的,但推理是逐级衔接的计算——每一步的小偏差会被下一步继承并放大,链条越长,累计偏离越远。闲聊类任务一步答完,误差止于措辞;数学推导几十步连乘,误差止于结论。这也解释了长上下文场景为什么对 KV Cache 的精度更挑剔。
PTQ 与 QAT 两条路线
- PTQ(训练后量化):拿到训好的成品模型直接压,无需重训。工程主流,本篇讨论的重点。
- QAT(量化感知训练):训练或微调阶段就模拟量化误差,让模型适应低比特表示。效果通常更好,但要重走训练流程,大模型时代成本高昂,实际用得少,一句带过即可。
PTQ 的三种代表方法
| 方法 | 思想 | 定性评价 |
|---|---|---|
| RTN | 逐个权重舍入到最近网格点,不做补偿 | 8-bit 及以上够用;4-bit 掉点明显 |
| GPTQ | 基于二阶信息逐层补偿:压掉一个权重产生的误差,同步修正同层其余权重来抵消 | 4-bit 的经典选择 |
| AWQ | 少数「重要」权重通道对精度影响大,按激活分布识别出来重点保护 | 4-bit 掉点更小,推理实现友好 |
一句话概括差异:RTN 不补偿,GPTQ 事后补偿误差,AWQ 提前保护关键权重。
权重量化与全栈量化
常见发布格式(如 GGUF 与主流 4-bit 方案)多是权重量化:只压权重,激活值与 KV Cache 维持较高精度,计算时把权重反量化回高精度再算。这条路稳妥、兼容性好。全栈量化把权重、激活、KV Cache 全部压到低比特,吞吐与显存收益更大,但对数值稳定性要求高得多,属于进阶路线。个人与中小部署从权重量化起步即可。
精度损失的现实预期
- 8-bit 权重量化在多数任务上损失接近无感,可作默认起步。
- 4-bit 在日常对话、摘要、常见代码任务上通常损失不大;数学推理与长尾知识问答更敏感,务必用自己的业务用例实测。
- 同样压到 4-bit,小模型退化通常更明显:70B 级模型冗余多、扛得住更粗的网格,7B 级本来就紧巴,选档要更保守,必要时优先保 FP16 而不是硬压到 4-bit。
通用榜单分数不能代替自己的评测——拿业务评测集跑一遍对比,是唯一可信的账本。
决策表
| 情形 | 选择 |
|---|---|
| 显存装得下 FP16 | 直接 FP16,不折腾 |
| FP16 装不下 | 先试 8-bit(RTN 即可),损失最小 |
| 8-bit 还不够 | 4-bit,GPTQ 与 AWQ 二选一,精度敏感可从 AWQ 起步对比 |
| 数学、长尾知识等高敏感任务 | 留 FP16 或 8-bit,或换更小的高精度模型 |
| 极致吞吐且工程能力强 | 再评估全栈量化 |
顺带一提:用 Ollama 这类本地工具时会见到 GGUF 的一串档位命名(q8_0、q4_k_m 等),本质就是同一套精度-体积权衡在文件格式层的体现,本站此前的 Ollama 实战指南有展开,本文的决策逻辑同样适用。
小结
量化是用更少的比特近似权重分布,PTQ 是现实主流;8-bit 几乎免费,4-bit 靠 GPTQ/AWQ 把损失压到可用;权重量化是稳妥起点,全栈量化是进阶选项。选型原则一句话:按显存预算逐级下降,按业务评测集实测损失,不做无对照的档位跃迁。
读者留言
COMMENTS 暂无还没有留言,来说第一句?