跳到主内容
快讯直播
AI智模界
AI 词典

SmoothQuant:把激活的量化难题搬给权重

一句话定义

SmoothQuant 是一种训练后量化(post-training quantization,PTQ)技术:用一次数学上等价的逐通道缩放,把激活(activation)的量化难度部分转移到权重(weight)上,让大模型能稳定做到 W8A8——权重和激活都压成 8 位整数(INT8)。

激活为什么难量化

矩阵乘法可以写成 y = xW,x 是激活,W 是权重。INT8 只有 256 个刻度,量化前要先定一个缩放系数(scale),把一段浮点范围映射到这些刻度上。

权重的数值分布通常比较规整,离群值(outlier)少,一个 scale 够用。激活麻烦得多:它随输入文本变化,而且少数通道会出现特别大的值,比普通值大出几十上百倍。为了让这些大值不溢出,scale 只能定得很大,于是绝大多数正常值被挤进最前面几个刻度里,舍入误差被放大,精度就掉了。

做法:把包袱搬过去

对每个输入通道做等价的线性变换:

y = xW = (x / s) · (s · W)

s 由该通道的激活幅度和权重幅度共同决定,相当于把激活的离群部分「搬」一部分给权重。变换之后激活分布被压平、更好量化;权重被同步放大一点,但它本来就规整,放大后依然好量化。整个变换逐通道进行,数学上完全等价,输出不变。

打个比方:激活像一车尺寸悬殊的行李,里面有几件超大件,而箱子(INT8 的刻度)尺寸统一,为了塞下大件,小件只能糊成一团。权重像另一车尺寸均匀的行李,本来就装得下。SmoothQuant 就是在两车之间搬东西:把大件的部分体积挪过去,总量不变,两车都装得整齐。

缩放还有个好处:它逐通道进行,可以被「吸收」进前一层的算子(比如 AI 词典:LayerNorm">LayerNorm 或线性层),推理时不需要额外计算。整个过程不必重新训练,只要一小批校准数据(calibration data)估计激活幅度即可。

和邻居的区别

方法量化对象特点
SmoothQuant权重 + 激活(W8A8)训练后量化,等价变换可融合,几乎零额外开销
GPTQ / AWQ只量化权重(如 W4A16)激活保持高精度,收益主要来自省显存和带宽
LLM.int8()权重 + 激活,混合精度离群通道单独用 FP16 计算,精度好但要走两条计算路径
量化感知训练(QAT)权重 + 激活需要重新训练,成本高,精度上限通常更高

实际意义

只想省显存、算力充足时,权重量化往往更省事;但想吃到 INT8 矩阵乘的算力红利——更高吞吐、更低延迟、更省带宽——激活就得一起量化。SmoothQuant 是让 W8A8 不掉点的常用前置技巧,本身也很轻:不改结构、不加算子,因此常和逐 token 动态量化、权重量化方法叠加使用。具体支持情况和默认参数以对应推理框架的官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。