量化里的 Scale 和 Zero-Point 到底是什么
原视频:【量化压缩】scale 和 zero-point 到底是什么:对称与非对称、per-tensor 与 per-channel,7B 从 14G 到 7G
UP 主:古希腊掌管代码的神 | 时长:0:58 | tag:量化压缩
链接:https://www.bilibili.com/video/BV1CqJQ6qEoP
一句话结论
量化就是把连续浮点数塞进有限的整数格子(如 INT8 的 256 格):scale 是每个格子的宽度,zero-point 是浮点 0 落在哪个格子。权重分布近似对称,用对称量化(zero-point=0)+ per-channel;激活分布常一边倒,用非对称量化把格子铺满。7B 模型 FP16 是 14 GB,INT8 直接砍到 7 GB。
面试答法
30 秒版:量化的核心公式是 $q = \text{round}(x/s) + z$,反量化 $\hat x = (q-z)\cdot s$。$s$(scale)决定分辨率——把浮点范围等分成 256 份,每份多宽;$z$(zero-point)决定偏移——让浮点的精确 0 能对齐到某个整数格,这对 ReLU、padding 这类"0 有语义"的场景很重要。对称量化令 $z=0$,实现简单、乘法干净,适合以 0 为中心近似对称的权重;非对称量化多存一个 $z$,能把一边倒的分布(如 ReLU 后全正的激活)也铺满全部格子,分辨率翻倍,代价是矩阵乘里多出交叉项。粒度上 per-tensor 全张量共用一个 $s$ 最省事,但一个离群通道就能把 $s$ 撑大、毁掉其他通道的精度,所以权重量化基本都用 per-channel(每个输出通道一个 $s$)。
核心原理
1. 格子模型:scale 管宽,zero-point 管零点
INT8 有 256 个整数格(-128..127 或 0..255)。映射时每个浮点数被吸到最近的格子,误差最多半个格子宽——所以 scale 越小、格子越密,误差越小,但能表示的范围也越小,这是量化的根本权衡(clipping 范围的选择)。

2. 对称 vs 非对称:看分布形状
- 对称量化($z=0$):格子以 0 为中心铺开。权重分布通常左右对称,格子能用满;但对 ReLU 后的激活(全是非负),左半格子全部空转,等于只剩 7 bit。
- 非对称量化(多一个 $z$):格子只铺在有数据的地方,同样的 256 格分辨率翻倍。代价:多存一个整数,且整数矩阵乘要展开 $(q_x - z_x)(q_w - z_w)$ 的交叉项,工程实现更复杂。

3. 粒度:per-tensor 的离群值问题
per-tensor 全程共用一个 scale:图中通道 3 的最大值 8.0 把 scale 撑到 $8.0/127$,其余通道(最大值 0.3–0.7)实际只能用到 5–11 个格子,精度还不如 4 bit。per-channel 给每个输出通道单独算 scale,各自铺满 127 格——4094 个输出通道就是 4094 个 scale,存储开销可忽略,是权重量化的默认做法。

易错点与常见追问
- zero-point 必须是整数、且让浮点 0 精确可表示:这样 padding 的 0、ReLU 的 0 在量化域里没有误差;若 0 落在两个格子之间,误差会系统性累积。
- 粒度不止两种:per-tensor → per-channel → per-group(每 32/64/128 个权重一组 scale,如 GPTQ/AWQ 的 group-wise 量化)→ per-token(激活常用,按 token 动态算)。被追问 LLM 量化方案时,答到 group 级别是关键分水岭。
- 权重和激活的量化难度不同:权重静态、可离线校准,常用对称 per-channel;激活分布随输入变化、离群值严重,是 W8A8 的主要难点(SmoothQuant 就是把激活的量化难度迁移到权重上)。
- scale 怎么定:min-max 校准最简单但怕离群值;实际常用百分位/ MSE 最优 clipping / KL 散度校准(TensorRT 路线)。答题能提一句"scale 由校准集统计决定,不是拍脑袋"即可。
- INT8 显存账:7B 参数 × 1 byte = 7 GB 只是权重本体;KV cache、激活、scale/zp 元数据另算,面试估算时要声明口径。
修订说明
- 视频内容准确,公式与结论("权重对称 + per-channel,激活看情况")与业界实践一致,无硬错误。
- 两处简化已在正文标注口径:
- "存的时候除以 Scale 再取整"省略了 zero-point 的加减($q=\text{round}(x/s)+z$、$\hat x=(q-z)s$),对称量化时才退化为只除 scale;正文已补全公式。
- "7B 从 14G 砍到 7G"指的是纯权重体积,笔记的易错点里已注明 KV cache 等不计入。
- 配图均为视频截图(0:14 / 0:33 / 0:44)。