跳到主要内容

量化实战:GPTQ、AWQ 与大模型压缩的落地取舍

· 阅读需 4 分钟
Industry Research Team

数值格式(FP8、FP4)解决的是"硬件支持什么精度",而量化算法解决的是"训练好的模型怎么安全地住进低精度"。后者才是工程落地的日常:手里一个 70B 模型、一张 80GB 的卡,怎么让它跑起来还尽量不掉点。

GPTQ:用二阶信息做误差补偿​

GPTQ 的思路源于经典的二阶最优剪枝方法。它逐层处理权重:用少量校准数据(几百条即可)估计该层输入的二阶统计量,然后按列量化权重,每量化一列,就利用 Hessian 信息调整其余未量化列,把引入的误差"摊"到还没量化的地方去补偿。整个过程不需要反向传播,在单张卡上几个小时内就能压完一个百亿级参数模型。

代价是它本质上在做"整体最优的近似":逐层的贪心决策叠加起来,对校准数据分布有一定敏感性,校准集与真实业务分布偏差大时,掉点风险随之上升。

AWQ:抓住关键的 1% 通道​

AWQ 从另一个观察出发:权重中真正对精度敏感的通道,是那些对应激活值特别大的少数通道——通常只占 1% 上下。与其逐列做全局误差补偿,不如识别出这些显著通道,用一个按通道缩放的变换保护它们,让它们落在量化网格的"好位置"上。

这个方法同样不需要反向传播,校准成本与 GPTQ 相当,但对校准数据规模和分布的依赖更弱,跨领域、跨任务的鲁棒性通常更好,这也是它在开源社区部署中被广泛采用的原因。它只解决权重侧的压缩(常见的 W4A16 形态:权重 4bit、激活保持 16bit),计算时需要把权重反量化回高精度再做矩阵乘。

W8A8 与激活离群值​

想同时压缩激活(W8A8)会撞上大模型的经典难题:激活分布中存在系统性的离群通道,个别通道的数值比其余大几个数量级,直接按统一 scale 量化会把这些通道全压废。SmoothQuant 的解法很巧:用一个等效数学变换,把激活里的离群难度迁移到权重侧,让两边都变得"平缓",从而实现全整数推理。W8A8 的算子效率高、适合大 batch 高并发服务,但精度风险高于 W4A16,需要更仔细的评估。

方法对照与取舍​

方法典型形态是否需要反传主要优势适用场景
GPTQW4A16否压缩比高,工具链成熟单卡/双卡装下大模型
AWQW4A16否鲁棒性好,跨域稳定通用生产部署
SmoothQuantW8A8否激活也压缩,算子高效高并发吞吐服务
QAT(量化感知训练)任意是精度上限最高有训练资源且对精度极敏感

实操建议​

单卡或双卡要装下大模型、追求低延迟,选 W4A16 的 AWQ 或 GPTQ,两者精度差异通常不大,优先看框架支持度;高并发吞吐场景考虑 W8A8。评估时不要只看困惑度,困惑度的小幅变化可能对应下游任务的大幅波动,务必跑自己的业务评测集。另外,KV Cache 量化是独立的压缩维度,长上下文场景可与权重量化叠加使用。最后,任何量化方案上线前都先在影子流量上对照全精度基线跑一段时间,这是最便宜也最可靠的保险。