测量开源大语言模型中的最大激活值 Measuring Maximum Activations in Open Large Language Models
统一协议测量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' 这些结论具有可解释的因果方向。
实验结果
核心发现 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 强相关。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 全局最大激活测量(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 列数字可直接作为复现验证锚点。
论文图表