一句话定义:激活离群值(Outlier Features)是指在神经网络某一层的激活向量(activation vector)里,少数几个维度上的数值远大于其余维度,并且这些维度在几乎所有输入上都稳定偏大。
原理:班里那个"异常考生"
Transformer 每层输出的激活是一个几千维的向量,维度数等于隐藏层宽度(hidden size)。理想情况下各维度数值比较均匀,但实际总有那么几个维度,取值比邻居高出几十倍甚至上百倍。打个比方:全班五十个学生分数都在 60 到 90 之间,突然有一位考了 900 分。他不是出错,而是模型在预训练中学会了用这几个"专用通道"承载通用信号,比如强烈的语义标记、高频连接词、全局上下文强度。它是模型学到的结构,不是随机噪声。
为什么它让量化掉点
量化(AI 词典:Quantization">Quantization)把浮点数压成低位宽整数,需要先定一个缩放因子(scale)。最朴素的做法,是让张量里的最大值映射到整数能表示的最大值。问题就出在这里:最大值被离群值撑到 900,正常的 60 到 90 就被挤进整数格子最底下几格,分辨率被吃光——相当于拿一台量程 1 吨的地磅去称几克盐,读数只剩个"零"。
LLM.int8() 的处理思路
LLM.int8() 的办法是分而治之:把矩阵乘法拆成两路。超过经验阈值的离群维度用 FP16 单独计算,其余绝大多数普通维度走 INT8,最后把两路结果相加。因为离群特征只集中在极少数固定通道上,单独照顾它们的开销很小,却换回了几乎无损的精度。这就是混合精度分解(mixed-precision decomposition)的经典用法。
| 概念 | 特点 | 常见处理 |
|---|---|---|
| 激活离群值 | 运行时动态产生,集中在少数固定通道 | 拆分出来走高精度 |
| 权重离群值 | 静态,可离线统计 | per-channel scale、裁剪 |
| 激活尖峰 | 个别 token 上的偶发极大值 | 逐 token 动态量化 |
| 长尾分布 | 整体分布形态偏斜 | 用校准数据集调优 |
对不同人的意义
做量化和推理部署的工程师:动手前先看激活的直方图和逐通道最大值,别只盯平均误差,保留少数通道的高精度往往是性价比最高的一步。研究模型结构的人:离群通道的位置与注意力头、层归一化的关系,是理解模型内部表征的一个切口。普通使用者:模型能不能压得更小、跑在更便宜的硬件上,很大程度上取决于这类"少数派"问题处理得好不好。各框架的具体支持方式和参数,以官方页面为准。
