← 返回 2026-05-19

测量开源大语言模型中的最大激活值 Measuring Maximum Activations in Open Large Language Models

Luxuan Chen, Han Tian, Xinran Chen, Rui Kong, Fang Wang, Jiamin Chen, Yuchen Li, Jiashu Zhao, Shuaiqiang Wang, Haoyi Xiong, Dawei Yin 📅 2026-05-15 👍 18 2026-07-13 08:36
LLM 实证研究 开源模型 模型量化 激活异常值 激活量化

统一协议测量24个开源LLM的全局最大激活,揭示近4个数量级跨家族差异。

前置知识

激活动态范围

神经网络前向推理时各层激活张量所覆盖的数值范围。LLM 推理中激活范围从几十到数十万不等,决定了推理引擎、量化器与缩放规则必须容纳的数值上界。

本文核心统计量 $M = \max |a|$ 即为全局激活动态范围的上界,是低比特量化(INT8/FP8)选择 per-tensor 缩放因子的关键依据。

Massive Activation(巨型激活)

Sun 等人定义的概念:hidden state 中某坐标需同时满足 $|x_i| > 100$ 且对同一 token 的 $d$ 维坐标中位数比超过 $1000$,即同一 token 上极大幅度且局部稀疏。

本文与之对比的'二元判定标准'。作者认为这种二元标签对部署不友好,因此提出连续量 $M$ 作为补充视角。

INT-8 per-tensor 量化

把每个张量整体共享一个缩放因子 $s$ 后映射到 INT8 整数域:$x_q = \mathrm{round}(x/s)$。$s$ 由 calibration 集合上的最大激活决定,会被极端值主导。

本文用 INT-8 sanity check 把 $M$ 与实际重建 SQNR 挂钩,证明 $M$ 不是纯描述性指标而是部署相关量。

SwiGLU 门控 MLP 与 MoE

SwiGLU 把门控线性单元与 SiLU 结合,是当前主流 LLM(如 LLaMA、Qwen)的 MLP 形式;MoE(Mixture of Experts)将 FFN 替换为多个专家并由路由器稀疏激活。

论文发现 MoE 相比同规模 dense 模型激活峰值降低 $14.0\sim 23.4\times$,是 MoE-vs-dense 对照实验的核心结论。

PyTorch Forward Hook

在不修改模型代码的前提下,注册到 module 上、在前向时被调用的回调函数,可拦截中间张量。本文用它来流式收集 6 类激活统计量。

整个测量流水线基于 hook 而非侵入式修改,是'统一协议跨家族比较'在工程上能够成立的关键。

研究动机

LLM 推理部署中,activation 量化与缩放规则高度依赖 calibration 集合上观察到的最大激活幅度 $M = \max|a|$。一旦 $M$ 异常大,per-tensor 缩放因子就会被少数极端值主导,大量 INT8 量化级别被浪费在罕见区间。已有的 massive activation 研究主要基于 LLaMA-derivative 模型与单一架构,代表性工作如 Sun 等人引入的二元判定 $|x_i|>100$ 且局部比 $\ge 1000\times$ 中位数。这些结论能否迁移到 Qwen2.5/3/3.5、Qwen2.5-VL、Gemma2/3、Ling、GPT-OSS 等后 LLaMA 时代开源模型上,缺乏系统验证。当前的部署栈(SmoothQuant、AWQ、GPTQ、QuaRot、SpinQuant、DuQuant 等)都把异常激活视为'待消除的障碍',回避了'M 在不同家族/代际/架构下究竟如何变化'这一基础问题。

本文的目标是本文用一个统一流水线在 24 个主分析 checkpoint + 3 个 SFT 对照(共 27 个,覆盖 8 个开源家族)上系统测量 $M$,把 $M$ 作为可发布的连续模型属性而非二元异常标签,并将 $M$ 与 INT-8 重建 SQNR 直接挂钩,回答三个具体问题:(1) 现代开源 LLM 的激活到底能有多大?(2) 最大值出现在哪些组件?(3) 家族、代际、MoE-vs-dense、视觉-语言、Base-vs-Instruct、训练阶段这五个因素分别如何影响 $M$?

与已有工作不同的是,与既有工作相比,本文有三处独特切入:第一,把'二元判定'重写为'连续量'并证明二者会出现分歧——Sun 准则失败的 Qwen2.5-1.5B 反而已是量化友好型,而通过的某些 checkpoint 反而最难量化;第二,首次在统一协议下覆盖后 LLaMA 时代 8 个家族、24 个 checkpoint,而不是局限在 LLaMA-derivative monoculture;第三,通过 5 组 matched-design 对照在同一基质上做变量分解,而非把多因素混在一起平均。

核心方法

直觉上,测量'一个模型的激活有多大'看似简单:跑一遍前向、记录所有张量的最大绝对值即可。但要跨家族比较,必须同时控制语料、tokenization、采集点与统计流程这些变量,否则任何家族间差异都会被混杂因素淹没。本文把流水线固化为'Data Preparation → Activation Measurement → Analysis & Reporting'三阶段:用一个固定的 5000 样本多语种语料,逐家族重新 tokenize,在每层挂同样的 PyTorch hook 收集 6 类张量的 mean/std/RMS/mean|a|/max/min/分位数,最后把所有 checkpoint 的统计统一以 JSON 形式落盘并离线画图。这样得到的 $M$ 就是一个可发布的'模型卡'指标。

核心创新是把'最大激活'重新定义为部署导向的连续统计量 $M = \max|a|$(覆盖全部 6 类 hooked 组件与所有层),而非沿用 Sun 等人的二元 same-token 准则。围绕这一重新定义,论文做三件本质不同的事:(i) 用 5000 样本多域语料 + 家族级 tokenization 取代单 tokenizer + 单语料做法,把 tokenizer mismatch 与单域偏置从信号中剥离;(ii) 把 Sun 准则作为描述性桥梁保留,同时给出 absolute peak 与 local-ratio scatter(Figure 2),证明两类失败机制不同;(iii) 设计 5 组 matched-pair 对照,把规模、家族、代际、架构、模态、训练阶段逐因素拆开比较。

方法步骤详情

流水线四步。(1)语料:RedPajama 抽 5000 样本,按 850 数学/科学+850 代码+850 英文 web+850 知识/QA/书+400 中文+300 低资源+900 额外英文混合 web 分层;长度桶按 256/512/1024/2048/4096 token 以 1%/1%/2%/3%/93% 截断,均长 3899 token。(2)家族专属 tokenization:文本固定,各家族用自有 tokenizer 重切。(3)前向测量:加载完整权重只跑前向;在 embedding、layerwise 残差 hidden state、attention、MLP/MoE、SwiGLU gate、final LayerNorm 6 类组件注册 forward hook,流式记录 mean/std/RMS/mean|a|/max/min 与分位数,GPU 在线聚合。(4)分析:per-checkpoint JSON 离线画图;在 4 个代表模型上用 1k/2k 子样本 × 5 次重复验证 $M$ 稳定性,1k 最大 CoV 10.1%、2k 最大 CoV 8.2%。

技术新颖性

技术新颖性体现在三方面。第一,把'最大激活'从二元 outlier flag 升级为部署可比的连续统计量 $M = \max|a|$,并显式连接 INT-8 per-tensor scale 选择机制——这是量化社区此前回避的'上界测量'问题。第二,首次在统一 hook 协议下覆盖 24 个 post-LLaMA checkpoint、8 个家族(含 MoE、VLM、intermediate-training、instruct 四种变体),并通过 Figure 3 的 normalized-depth heatmap 给出跨家族层间强度分布的整体景观。第三,设计了 5 组 matched-design 对照(within-family scaling、MoE-vs-dense、VLM-vs-text、Base-vs-Instruct、training-stage),在同一测量基质上做单变量分解,这让 'MoE 比 dense 低 14.0-23.4×'、'SFT 主要压缩 late-layer peaks'、'训练进程可以单调抬高 M' 这些结论具有可解释的因果方向。

Overview of the pipeline.
Figure 1: Overview of the pipeline.

实验结果

核心发现 6 点。(1)跨家族 $M$ 跨近 4 个数量级:Qwen3.5 仅 122-956,Gemma3-27B-it 达 696,320、Gemma2-27B 157,696、Qwen3-32B 35,328、GPT-OSS-20B 43,008。(2)Sun 准则:24 中 20 通过,4 失败机制不同——Qwen2.5-1.5B 因中位数 13.9 致比值 574 属'大但密'型;Qwen3.5-0.8B/9B/35B-A3B 因整体压制失败。(3)残差流主导:22/24 全局最大值在 hidden state,例外 GPT-OSS-20B(MLP)与 Qwen3.5-0.8B(final LayerNorm)。(4)MoE 显著压制:同规模 MoE 比 dense 低 14.0-23.4×,Qwen3-30B-A3B 的 $M$ 仅 1,512,远低于 Qwen3-32B 的 35,328。(5)层间轨迹呈 jump-and-plateau 与 gradual-accumulation 两模式。(6)INT-8 sanity check 表明 $M$ 与 SQNR 强相关。

Representative activation locations for the 24 main-analysis checkpoints.
Table 1: Representative activation locations for the 24 main-analysis checkpoints.
Failure modes for the four checkpoints that do not satisfy the Sun criterion.
Figure 2: Failure modes for the four checkpoints that do not satisfy the Sun criterion.
Layerwise heatmap of hidden-state peak magnitudes.
Figure 3: Layerwise heatmap of hidden-state peak magnitudes.
Representative layerwise trajectories for the two main emergence patterns.
Figure 4: Representative layerwise trajectories for the two main emergence patterns.
Within-family scaling effects.
Figure 5: Within-family scaling effects.
Global maximum activation landscape across 24 base checkpoints.
Figure 6: Global maximum activation landscape across 24 base checkpoints.
Generational trends at similar model sizes(appendix figure).
Figure 7: Generational trends at similar model sizes(appendix figure).
查看结构化数据
任务指标本文基线提升
全局最大激活测量(8 家族 24 checkpoint) M = max|a| Gemma3-27B-it 达 696,320,Qwen3-32B 达 35,328,Qwen3.5-0.8B 仅 122,跨家族跨越近 4 个数量级 Sun 等人定义的二元 massive activation 准则 |xi|>100 且局部比 >1000×中位数 提出连续量 M 而非二元标签,揭示 Sun 准则失败机制分'大但密'与'整体压制'两类
MoE vs Dense 同规模对照 峰值比 Qwen3-30B-A3B 的 M = 1,512,Qwen3.5-35B-A3B 的 M = 132 Qwen3-32B M = 35,328;Qwen3.5-9B M = 956 MoE 比同规模 dense 模型峰值低 14.0-23.4×
峰值统计稳定性验证 Coefficient of Variation (CoV) 1k 子样本最大 CoV 10.1%(Qwen3-30B-A3B),2k 子样本最大 CoV 8.2% 5k 完整语料单次测量 证明 M 不是单样本偶然事件,在所研究规模上统计稳健
INT-8 per-tensor 量化 sanity check SQNR M 较高的 checkpoint 通过 scale 选择机制表现出显著更低的重建 SQNR 未挂钩量化误差的纯描述性 M 报告 把 M 从描述性统计量提升为部署敏感量,验证其工程意义
残差流承载全局最大值比例 承载率 22/24 主分析 checkpoint 的全局最大值出现在 layerwise hidden state 既有量化栈通常只关注 attention/MLP 输出的 outlier 论证激活量化与缩放策略应优先检查 hidden state 峰值

局限与改进

作者明确承认两点限制。第一,Gemma3 公开 checkpoint 本身就是 instruction-tuned 模型,Gemma2/Gemma3 的对比只能视作 family-level 跨代对比而非严格的 base-to-base 消融;Gemma2 27B 内部的非单调性(2B=2,992 → 9B=1,656 → 27B=157,696)作者标注为 local non-monotonic 但未深入归因。第二,作者明确声明'不声称本文观察的差异有因果机制',Appendix D 专门留出 limitations 章节;论文是测量而非干预式实验,'为何 Qwen3.5 整体压制 M'、'为何 Gemma3 突然抬升 1 个数量级'仍需后续 mechanistic 工作解释。我自己还观察到:语料 19.5M token 对 27B+ 模型不算大,对极小概率最大值仍可能尾部欠采样;n=24 个 trajectory 不支持严格聚类;INT-8 探针只覆盖 per-tensor 缩放,未触及 group-wise 或 KV-cache 量化路径。

独立分析的弱点

独立审视本文有四点可改进。第一,5000 样本虽覆盖 7 个 domain bucket,但文本集中于 RedPajama,对超长上下文、长 reasoning chain、code execution trace 等场景的极端激活估计可能不足;后续可在 LongBench、RepoBench 等更长样本上做 sensitivity 验证。第二,SFT 对照只覆盖 Qwen2.5-Instruct,Base-vs-Instruct 因子分解因此只对单一家族成立;Gemma3-it 等其他家族 instruct 版本未独立分析,SFT-家族交互效应未被捕捉。第三,INT-8 探针只用 per-tensor 缩放,未覆盖 GPTQ/AWQ/SmoothQuant 等真实生产路径,deployment take-away 仍是间接证据;若能接入 round-to-nearest 与 groupwise 量化并报告 perplexity 退化,说服力更强。第四,Figure 2 的 failure mode 只画 4 个 checkpoint,二元 vs 连续之间的明确边界条件尚未给出。

未来方向

作者在 Appendix D 明确不主张因果机制,这就为后续 mechanistic 干预式研究留出空间:用 activation patching、attention sink ablation、logit lens 等手段直接定位 Gemma3 异常高 $M$ 的源头;沿 normalized-depth heatmap(Figure 3)做聚类,把 jump-and-plateau 与 gradual-accumulation 形式化为可计算的轨迹描述符;把 $M$ 与训练阶段的 loss curve、data mixture、learning rate schedule 做联合回归,看 $M$ 是否可作为训练健康的 early-warning 指标;扩展到 reasoning 模型(OpenAI o 系、DeepSeek-R1、QwQ)在 chain-of-thought 生成中的 $M$ 行为;以及把 $M$ 与 FP4/FP6/FP8 训练-推理一致性联合建模,服务于 native low-precision 训练栈。

复现评估

论文承诺公开 hook 测量代码与 per-checkpoint 统计:仓库见 https://github.com/clx1415926/Max_act_llm。复现资源方面,24 个主分析 checkpoint 涵盖 0.8B 到 27B-IT,仅 Gemma3-27B-it、Qwen2.5-32B、Qwen3-32B、GPT-OSS-20B 超过 20B,主流 A100/H100 多卡可覆盖;全部跑完需数百到上千 A100·时。难度中等偏上:RedPajama 抽取 + 7 个 domain bucket + 5 个长度桶描述明确,hook 注册点是 6 类标准模块,纯前向、无需训练 loop。主要风险在于家族间 tokenizer 与 module 命名差异(MoE router、Gemma Norm)需逐个适配,以及 19.5M token 的 streaming 聚合实现细节。Sun 准则与 $M$ 计算公式都已给出,Table 1 的 24 行 × 10 列数字可直接作为复现验证锚点。