大模型量化是什么?INT8/INT4/AWQ/GPTQ 怎么选?

发布时间:2026/7/17 8:40:52
大模型量化是什么?INT8/INT4/AWQ/GPTQ 怎么选? 很多人对量化的理解只停在“把模型变小”一个 7B 模型用 FP16 保存理论上仅权重就接近 14GB换成 4-bit权重理论体积约为 3.5GB。看起来只是“少占显存”但真正难点在后半句模型参数原本是连续浮点数压成 16 个离散等级以后为什么还能正常回答问题答案不是“INT4 天生很聪明”而是量化算法在努力控制误差。它们会选择合适的缩放因子、零点和分组粒度有的补偿已经产生的误差有的保护重要通道有的把激活异常值转移给权重。这篇文章不追求把所有量化名词都塞进来而是把工程里最常见的几条路线讲清楚INT8、INT4、GPTQ、AWQ、SmoothQuant、NF4 与 QLoRA。先给结论位数决定“能省多少”算法决定“掉点多少”推理内核决定“到底能不能跑快”。理论权重体积对比不包含 KV Cache、激活值和运行时开销一、量化究竟做了什么模型权重本质上是一堆数字。训练阶段通常使用 FP32、FP16 或 BF16因为它们有更宽的动态范围也更适合梯度计算推理阶段不再更新全部参数继续使用高精度就可能显得奢侈。量化可以理解成给数字铺设一排有限的“停车位”。原始权重可以停在任意位置量化后必须停到最近的刻度。位数越低停车位越少取整误差越大。线性量化通常需要两个关键参数scale 用来控制每个整数刻度代表多大范围zero point 用来指定浮点数 0 对应哪个整数。对称量化常把 zero point 固定为 0计算简单非对称量化可以更充分地覆盖偏离零点的数据分布。量化误差并不只由 bit 数决定。相同的 INT4如果 group size、scale、zero point、异常值处理方式不同效果可能完全不同。二、为什么分组越细通常越准确如果一整层权重共用一个缩放因子少数极端值会把量化范围拉得很宽普通权重只能挤在少数几个刻度附近。把矩阵拆成通道或小组每组单独算 scale就像给不同身高的人准备不同尺子精度会更好。代价也很直观分组越细需要保存的 scale 越多推理时的索引、解包和反量化也更复杂。工程上常见的 INT4 权重量化通常使用 group-wise 方式在准确率和内核效率之间取平衡。三、先分清 PTQ、QAT 和量化微调PTQ 是训练结束后再压缩模型成本最低也是开源模型部署最常见的路线。GPTQ、AWQ 和 SmoothQuant 都属于这一大类。QAT 会在训练时模拟低精度取整让模型提前学会适应量化噪声低位宽下通常更有机会守住效果但训练成本也明显更高。QLoRA 容易被误认为某种部署量化算法。它真正解决的是微调显存基础模型以 4-bit 保存并冻结反向传播只更新 LoRA 适配器。四、GPTQ把误差留给后面的权重来消化朴素做法是每个权重直接四舍五入但局部误差会沿网络传播。GPTQ 使用近似二阶信息判断权重对输出的敏感程度并在逐步量化时把已产生的误差补偿到尚未量化的权重中。GPTQ 的优势是压缩能力强论文展示了 3-bit、4-bit 甚至更低位宽的可能性。它适合离线处理模型但需要校准数据和量化时间。最终推理速度不能只看“GPTQ”三个字还要看目标框架是否有适配的高效内核。五、AWQ重要权重不是看权重本身而是看它乘上什么输入AWQ 的出发点是并非所有权重对模型输出同样重要。论文发现只需要保护很小一部分显著权重就能大幅降低量化误差判断这些通道是否重要要参考校准数据产生的激活分布。AWQ 通过缩放显著通道来降低其量化误差同时保持线性层计算等价。它依然是权重量化激活值通常保留较高精度。是否比 GPTQ 更快要看具体模型、group size、GPU 与执行内核不能把算法名直接等同于固定倍数的速度提升。六、SmoothQuant为什么量化激活比量化权重更难很多大模型的激活值会出现少数极端通道。若直接对整组激活做 INT8这些尖峰会占满动态范围让普通值的刻度变得粗糙。SmoothQuant 通过一个数学等价的缩放把部分量化难度从激活迁移到更容易量化的权重。SmoothQuant 的目标是 W8A8也就是权重和激活都使用 8-bit。相比只压缩权重它更有机会减少矩阵乘法和访存成本但需要适合的硬件与内核支持。七、QLoRA 与 NF4让大模型在有限显存里完成微调QLoRA 把冻结的基础模型以 4-bit NormalFloat 保存。NF4 不是普通等距 INT4它根据近似正态分布设计 16 个非均匀表示值让 0 附近更密集的权重获得更细的刻度。前向与反向计算时量化权重会按需反量化到更高精度参与计算梯度不会更新基础模型而是流向 LoRA 参数。论文还引入双重量化以压缩量化常数并使用分页优化器缓解显存尖峰。QLoRA 的“4-bit”重点是减少训练显存并不代表训练过程全程使用原生 INT4 矩阵乘法。八、GPTQ、AWQ、SmoothQuant、QLoRA 到底怎么选如果目标是 GPU 在线推理先查看部署框架与目标显卡当前成熟支持哪些量化格式和 kernel再在候选中比较 AWQ、GPTQ、FP8 或 W8A8。如果目标是本地 CPU 或消费级设备GGUF 生态通常更方便但要记住 GGUF 是文件格式内部可以采用多种量化类型。如果目标是低显存微调QLoRA 通常比 GPTQ/AWQ 更对题因为它把低比特存储与 LoRA 训练结合起来。九、一个最小的 4-bit 加载示例下面示例使用 Hugging Face Transformers 与 bitsandbytes 加载 4-bit 模型。代码的重点不是“复制后一定最快”而是展示量化配置和计算精度是两个不同概念。importtorch from transformersimportAutoModelForCausalLM, BitsAndBytesConfig quant_configBitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_quant_typenf4,bnb_4bit_use_double_quantTrue,bnb_4bit_compute_dtypetorch.bfloat16,)modelAutoModelForCausalLM.from_pretrained(your-model-id,quantization_configquant_config,device_mapauto,torch_dtypetorch.bfloat16,)4-bit 主要描述基础权重的保存方式计算时仍可以使用 BF16。若要做 QLoRA还需要再接入 PEFT/LoRA 配置并且只让适配器参数参与训练。十、工程里别先问“哪个算法最好”先问你要解决什么量化选型最好从目标倒推。显存不足、吞吐不足、延迟过高和微调成本过高可能需要完全不同的方案。即便模型成功加载也不能说明方案可上线。十一、最常见的五个误区**误区一INT4 一定比 FP16 快**INT4 一定更省权重带宽但若硬件没有高效内核解包和反量化开销可能抵消部分收益。**误区二同为 4-bit效果就差不多**算法、分组粒度、校准数据、异常值处理与计算精度都会影响效果。**误区三GGUF、GPTQ、AWQ 是同一层概念**前者主要是文件格式后两者是量化算法。**误区四公开榜单掉点小业务也一定安全**数学、代码、工具调用、结构化输出和长上下文可能比通用对话更敏感。**误区五权重缩小四倍显存就必然缩小四倍**实际显存还包含 scale、运行时工作区、激活值、KV Cache 与批处理开销。结语量化不是把精度“砍掉”而是把误差放到更可控的位置INT8 和 INT4 告诉我们模型用了多少位GPTQ、AWQ、SmoothQuant 告诉我们如何降低精度QLoRA 告诉我们如何在低比特基础权重上继续训练GGUF 和 safetensors 则负责模型如何落盘。把这些层次分开量化选型就不会只剩下“哪个文件更小”。真正可靠的方案必须在自己的模型、硬件、框架和业务数据上同时验证质量、显存、延迟与吞吐。量化没有绝对冠军只有更适合当前约束的组合。