ai-infra-interview-305

第 117 题:SmoothQuant的原理?为什么能同时保持权重和激活的量化精度?

题目

SmoothQuant的原理?为什么能同时保持权重和激活的量化精度?


完整讲解

一、问题背景

权重通常分布平滑、易量化;激活(尤其大模型里)动态范围大、 outlier 多,直接 INT8 量化激活会严重掉点。SmoothQuant 通过「迁移」一部分数值范围到权重,让激活更平滑、权重略「变难」但仍在可量化范围内,从而同时保持权重与激活的量化精度。

二、核心做法

数学等价变换:把激活的 scale 乘到权重上。设 Y = XW,令 X' = X/diag(s)W' = diag(s)W,则 X'W' = XW 不变。选 s(per-channel 或 per-token)使得 X' 的幅值变小(平滑激活)、W' 的幅值变大但在可接受范围,再对 X'W' 分别量化,推理时先 dequant 再乘或直接 INT8 乘后按 scale 还原。

三、实现与效果

s 的选取常用激活的绝对值最大值或百分位数估计,有时结合一层内权重范数做平衡。实现上在量化前对线性层做一次离线或校准阶段的 scaling,推理仍是标准 linear + 量化。大模型 LLM 里 SmoothQuant 常与 per-channel 权重量化、per-token 激活量化配合,显著降低激活量化误差。


面试要点


记忆要点

  1. SmoothQuant = 激活难量化 → 用线性变换把 scale 迁到权重,激活变平滑、权重略放大仍可量化。
  2. 数学:X’=X/s, W’=sW,X’W’=XW;选 s 平衡 X’ 与 W’ 的幅值。
  3. 工程:s 由校准数据估计;与 per-channel/per-token 量化配合,常用于 LLM。
返回模块 返回总览