微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 百度、上海交大等多机构联合研究:大模型里藏着一个"数值炸弹",你的AI量化部署或许正在悄悄失准

百度、上海交大等多机构联合研究:大模型里藏着一个"数值炸弹",你的AI量化部署或许正在悄悄失准

2026-05-25 11:03
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-25 11:03 科技行者

这项由百度公司、上海交通大学、南开大学及独立研究者联合完成的研究,于2026年5月以预印本形式发布,论文编号为arXiv:2605.15572,题为《Measuring Maximum Activations in Open Large Language Models》。对大模型量化部署感兴趣的读者,可通过上述编号查阅完整原文。

**一、从一个让工程师头疼的问题说起**

假设你是一名厨师,手里有一把精度极高的厨房秤,能精确到0.1克。现在你需要同时称量一粒盐(0.1克)和一块猪肉(500克)。问题来了——如果你把秤的量程设到500克,那0.1克的盐就几乎称不出来了;如果你把量程设到1克,猪肉又直接把秤压垮。这个"量程困境",正是大型语言模型在量化部署时面临的核心挑战,而研究团队把这个问题的根源叫做"最大激活值"。

所谓激活值,是模型在处理文字时,神经网络内部每一层产生的数字信号。你可以把整个大模型想象成一条复杂的流水线,文字从入口进去,经过几十乃至上百道工序,最终从出口变成回答。每道工序都会产生大量数字,这些数字的大小就是激活值。大多数激活值都很"正常",但偶尔会出现几个极端的大数字——就像流水线上突然蹦出一个巨型零件,把整个传送带都撑爆了。

这个极端大数字,研究团队用一个简单的符号表示:M = max|a|,也就是整个模型里出现过的最大绝对激活值。别看这个定义简单,它背后的意义却非常重要。当工程师要把模型压缩成低精度版本(比如常见的INT-8量化,把高精度浮点数压缩成只有256个刻度的整数)时,这个M值就决定了"秤的量程"。M越大,量程就设得越大,结果是大多数普通数字被挤压到了少数几个刻度里,精度损失严重,模型输出质量就会下降。

这个问题早就有研究者注意到了。麻省理工学院、Meta等机构的研究者曾发现,早期的LLaMA、OPT、BLOOM等模型里存在所谓"巨大激活"现象——某些特定位置的数字会大得离谱,且带有明显的稀疏性。围绕这个现象,学界形成了两条研究路线:一条是"解释派",研究这些大数字为何出现、有何功能;另一条是"工程派",研究如何通过各种技巧(旋转变换、平滑量化、前缀量化等)把这个问题绕过去。

然而,两条路线都有一个共同的盲点——它们几乎都基于2024年以前的老模型,而2024年之后,开源大模型家族已经大幅扩张,Qwen2.5、Qwen3、Qwen3.5、Gemma2、Gemma3等新一代模型在结构设计、训练方式上与早期模型有显著差异。没有人系统地测量过:在这些新模型里,M到底有多大?不同家族之间差距几何?架构变化(比如稀疏专家混合结构MoE)会如何影响这个数字?

这正是这项研究要回答的问题。

**二、搭建一把统一的"量尺":测量协议的设计**

在正式开始测量之前,研究团队面临的第一个挑战是:如何保证对27个来自8个不同家族的模型的比较是"公平的"?这就像要比较来自不同国家的选手的100米成绩,必须确保跑道长度、计时规则、起跑信号都完全一致。

研究团队为此设计了一套严格的统一测量流程,分为三个阶段。第一阶段是数据准备。他们构建了一个包含5000条样本的多领域文本语料库,内容涵盖数学与科学(850条)、代码(850条)、英文网页文本(850条)、知识类文本如百科全书和问答(850条)、中文文本(400条)、其他低资源语言(300条),以及额外的英文混合网页文本(900条)。这样的设计是为了避免测量结果被某个单一领域主导——如果只用代码文本测试,可能会人为放大某些模型的激活峰值。

在序列长度上,研究团队也做了精心控制。样本被随机截断为256、512、1024、2048或4096个token,其中4096 token的长文本占绝大多数(93%),短文本只占极小比例。这样设计是因为长文本更容易触发极端激活值,能更可靠地估计M的真实上界。整个语料库平均长度约3899个token,总计约1950万个token。

值得强调的是,同一批文本会用每个模型家族自己的分词器(tokenizer)分别处理,确保不同模型看到的是语义上完全相同的内容,只是被切割成不同token序列——这就像同一道菜谱,但用不同国家的计量单位来写,核实本质还是同一道菜。

第二阶段是激活值测量。研究团队对27个模型逐一进行前向推理(只读取输出,不修改参数),并通过PyTorch的钩子(hook)机制,在六个关键位置实时收集激活数据:词嵌入层输出、每层残差叠加后的隐状态、每层注意力输出、每层MLP或MoE输出、SwiGLU门控预激活值,以及最终归一化层输出。对于每个捕获的位置,他们不仅记录最大值,还记录均值、标准差、均方根、平均绝对值、最小值,以及基于对数直方图的绝对值分位数估计。

为了验证这个M值不是被少数几个异常样本"带偏"的,研究团队专门做了稳定性验证:从5000条样本中随机抽取1000条和2000条子集,各重复5次完整测量。结果显示,1000条子集的最大变异系数(数值波动的相对大小)仅为10.1%,2000条子集的最大变异系数为8.2%。换句话说,用5000条样本测出来的M值是稳定可靠的,不是"碰巧遇到一条奇葩句子"的偶然结果。

第三阶段是分析与报告。所有统计数据都被保存为JSON格式,论文中所有图表都直接从这些保存的数据生成。

**三、旧的"判断标准"还够用吗:从二值判断到连续测量**

在测量之前,研究团队首先梳理了一个来自学界先前工作的"判断标准"——"Sun准则"(以提出者命名)。这个准则定义了什么叫"巨大激活":对于某一个token的隐状态向量,如果某个维度的绝对值大于100,同时这个维度的值比同一个token向量里所有维度的绝对值中位数大1000倍以上,那这个维度就算是"巨大激活"。一个模型只要有任意一层、任意一个token满足这个双重条件,就被认为含有"巨大激活"。

这是一个"有或无"的二值判断,像一个开关——要么有,要么没有。研究团队想看看,在24个主要分析的模型里,这个开关处于什么状态。结果是:20个模型通过了Sun准则,4个没通过。

但这4个没通过的模型,原因各不相同,这恰恰说明了二值判断的局限性。其中,Qwen2.5-1.5B的绝对峰值高达7968,乍看是个很大的数,但同一个token向量里其他维度的值也不小,中位数达到13.9,局部比值只有574倍,没达到1000倍的门槛。这个模型的激活值整体"虚高",是一种"密集型大激活"而非"稀疏型大激活",用秤来比喻就是整锅菜都偏咸,而不是里面夹了一小撮盐。

另外三个没通过的模型——Qwen3.5-0.8B、Qwen3.5-9B、Qwen3.5-35B-A3B——失败的原因则完全相反:它们的整体激活规模被系统性地压低了,绝对峰值根本没超过100。Qwen3.5-0.8B的全局峰值仅有122,是所有模型中最低的。

这两种失败模式揭示了一个重要道理:通过/未通过的二值判断,无法区分"激活值普遍偏大但不够稀疏"和"激活值整体被压低"这两种完全不同的情况。前者对量化的威胁不一定更小,后者对量化则几乎是个福音。正因如此,研究团队主张用M = max|a|这个连续的绝对上界,作为描述模型激活动态范围的主要指标,二值判断只作为与历史研究对话的辅助工具。

**四、极端值藏在哪里:残差流是最大的"藏宝地"**

确定了测量指标之后,下一个问题自然是:这些极端激活值通常出现在模型的哪个部位?

研究团队绘制了一张"热力图",横轴是归一化后的层深度(从0到1代表从第一层到最后一层),纵轴是各模型名称,颜色深浅(用对数尺度)代表该层隐状态的峰值大小。从这张图可以看出,不同模型的峰值位置差异很大,有的在浅层就爆发了,有的在深层才攀升到顶点,甚至同一个家族的不同尺寸模型,峰值位置也可能不同。

不过,从跨模型的载体分析来看,一个规律非常稳定:在24个主要分析的模型中,有22个的全局最大激活值出现在"残差流"(post-residual hidden states,即每层注意力和MLP处理后叠加残差的隐状态)里。只有两个例外:GPT-OSS-20B的全局峰值出现在MLP输出,以及本来就激活值整体很小的Qwen3.5-0.8B,其峰值出现在最终归一化层输出。

残差流为什么是"藏宝地"?这与Transformer架构的基本运作方式有关。在每一层里,输入信号会先进入注意力机制或MLP处理,得到一个"增量",然后这个增量与原始输入直接相加,形成新的隐状态再传入下一层。这种"跳过连接"的设计,使得早期层产生的大数值能被持续累积叠加,而不会被后续层轻易抹掉。就像往一碗汤里不断加盐,盐分会一直积累,而不是被后面加的水稀释。这与学界另一项研究(Sun等人2026年的工作)的机制分析高度吻合——那项研究发现,残差流中的"激活峰"是由少数早期层的"阶跃块"集中产生并维持的。

从峰值的动态轨迹来看,研究团队归纳出两种典型模式。第一种是"跳跃-平台型":激活值在浅层或中层突然急剧升高,之后在很长的层区间内维持在高位,Qwen2.5和GPT-OSS属于这一类。第二种是"渐进积累型":激活值随层深度缓慢稳步上升,往往在接近最后几层才达到峰值,Qwen3.5和Gemma属于这一类。这种分类方式更多是定性描述,本质上体现了不同模型家族在设计思路上的差异。

**五、真正的"惊天差距":跨家族比较彻底颠覆了"越大越危险"的直觉**

研究最核心、也最令人震惊的发现,来自对所有24个模型全局最大激活值M的横向比较。

以下用具体数字来感受一下这个差距的量级。在差不多同一个参数规模(约7-9亿参数)这个档位上,Qwen3.5-9B的全局峰值只有956,Qwen3-8B是17664,而Gemma3-4B-it(约40亿参数,规模稍大)已经达到245760。三者之间相差了将近三个数量级(1000倍)!

在更大的规模档位(约270亿-320亿参数),Qwen3.5-27B的峰值是167,Qwen3-32B是35328,Gemma3-27B-it竟然高达696320,是Qwen3.5-27B的4170倍。这就好比同样是一碗汤,有的碗里的温度是室温20度,有的是热水80度,有的却是工业熔炉的1000度——它们都是"汤",但需要的"容器"根本不是一个量级。

这种差异有多少是因为模型大小不同造成的?很少。在同一个模型家族内部,参数规模确实与激活峰值正相关——以Qwen2.5为例,1.5B、7B、32B的峰值分别是7968、13248、22144,呈现出随尺寸增大而增大的趋势。Qwen3.5和Gemma3也有类似的规律。但Gemma2是个例外,9B的峰值(1656)居然低于2B(2992),之后27B(157696)才重新飙升,出现了非单调的异常。

更关键的是,一旦跨越家族边界,参数规模的解释力就基本失效了。同为约30亿参数的Qwen2.5-VL-3B峰值是3248,而Gemma3-4B-it(约40亿参数)是245760,差了75倍。同为约27亿参数,Qwen3.5-27B是167,Gemma3-27B-it是696320,差了4170倍。这意味着,当你决定要对一个模型做量化压缩时,知道它有多少参数远远不够——你必须知道它是哪个家族、哪一代、用什么架构训练出来的。

**六、架构和训练方式对激活峰值的具体影响**

研究团队还针对几个关键变量做了精心设计的对比实验,尽量控制其他因素不变,只改变一个变量,以此观察单一因素对M的影响。

第一个变量是"稠密架构"versus"稀疏专家混合架构(MoE)"。MoE是一种特殊设计:模型内部有很多"专家"(小型子网络),处理每个token时只激活其中少数几个专家,大多数专家处于"休眠"状态。研究团队找到了两对同家族、同规模但结构不同的模型对比。Qwen3-32B(稠密架构)的峰值是35328,而同规模的Qwen3-30B-A3B(MoE架构)峰值只有1512,稠密架构的峰值是MoE的23.4倍。Qwen3.5-27B(稠密)峰值1800,而Qwen3.5-35B-A3B(MoE)峰值132,差了14.0倍。

MoE为什么能压低激活峰值?研究团队给出的解释是:稀疏路由使得每个token只流经少数专家路径,激活值没有机会在广泛的全连接网络中累积到极端水平。当然,这只是观察层面的推断,两对匹配组之间可能还有训练配方等未观察到的差异,并不能完全确认是纯架构效果。

第二个变量是"纯文本模型"versus"视觉-语言多模态模型"。研究团队比较了Qwen2.5(纯文本)和Qwen2.5-VL(同规模多模态版本)。在7B规模,文本版峰值13248,多模态版8256,后者低了1.6倍。在32B规模,文本版全局峰值30848,多模态版22144,后者低了1.4倍。多模态版的峰值略低,但仍处于同一数量级,说明增加视觉能力并没有根本改变激活峰值的量级,只是有一定的温和压制效果。

第三个变量是"基础模型(Base)"versus"指令微调模型(Instruct)"。研究团队用Qwen2.5的三个尺寸(1.5B、7B、32B)做了比对,这是最严格的控制实验,因为基础模型和指令版完全共享同一套预训练权重,只是后期微调方式不同。结果显示,1.5B和7B尺寸下,微调前后的全局峰值几乎没变(1.5B保持7968,7B从13248微升到13312)。但32B尺寸下,指令版的全局峰值从30848降到了22144,约下降了1.4倍。

进一步分析每一层的细节,可以发现指令微调的效果主要集中在"最后几层":最后一层的峰值在三个尺寸上分别下降了45%、48%、31%,但中间层的高峰区域几乎未受影响。这说明指令微调(SFT)对激活峰值的压制,是通过"修剪最后几层的尾部"实现的,而不是对整个网络结构的重组。

第四个变量是"训练进度"本身。研究团队利用Ling-mini系列(一个公开发布了多个训练阶段checkpoint的模型),观察了从5万亿token(5T)到20万亿token(20T)的训练过程中,激活峰值如何变化。结果是单调递增:5T时峰值7648,10T时9024,15T时9600,20T时10240,整个训练过程M增长了约1.34倍。这说明即使保持模型结构和参数规模不变,随着训练数据的增加,激活峰值会逐渐爬升。不过这个效果(1.34倍)相对于跨家族差异(数千倍)来说,是非常温和的。

**七、代际演化的非线性:新版本不一定比旧版本"温顺"**

一个自然的疑问是:随着时间推移,模型一代代更新,开发者们是否在有意识地控制激活峰值,让新版本变得更"量化友好"?

答案是:没有统一规律,完全取决于家族。

在Qwen系列里,呈现出一个"倒V型"轨迹。从Qwen2.5到Qwen3,各规模的峰值都在上升:约1B规模从8000升到14200,约7-8B规模从13200升到17700,约30-32B规模从22100升到35300。然而从Qwen3到Qwen3.5,峰值却大幅跳水:约1B规模从14200跌到122,约7-9B规模从17700跌到956,约27-32B规模从35300跌到1800左右。这说明Qwen团队在Qwen3.5的设计或训练中,进行了某种根本性的调整,彻底改变了激活的动态范围。

在Gemma系列里,轨迹正好相反——持续上升。中等规模从Gemma2-9B的1656,跳升到Gemma3-4B-it的245760,大规模从Gemma2-27B的157696,进一步升至Gemma3-27B-it的696320。从Gemma2到Gemma3,峰值提升了约4倍,形成了目前所有被测模型中最高的激活峰值。

这些非线性的代际变化,进一步证实了研究团队的核心论点:M不是模型大小的简单函数,而是一个由家族设计、架构选择和训练策略共同决定的复合属性。

**八、和量化效果的实际关联:做了一个"轻量级检验"**

说了这么多关于M的测量,研究团队也想直接验证:M越大,量化效果就越差吗?

为此,他们选取了8个有代表性的模型(跨越Qwen2.5、Qwen3、Qwen3.5、Gemma3和MoE/稠密对比),在每个模型的峰值隐状态层,用128条样本做校准,256条样本做评估,对比两种常见的INT-8量化策略:一是"最大绝对值缩放"(scale按最大值设定,保证所有激活值都不超出范围),二是"99.9%截断缩放"(scale按99.9%分位数设定,容忍最大的0.1%的激活值被截断)。评估指标是SQNR(信噪比),越高代表量化精度越好,超过20 dB通常认为是可接受的精度。

结果基本符合预期:激活峰值最低的Qwen3.5-0.8B,在两种策略下SQNR分别高达29.1 dB和26.3 dB,量化几乎没有损失。Qwen3-8B、Qwen2.5-7B、Gemma3-4B-it等中高峰值模型,在最大绝对值缩放下有10-14 dB的SQNR(低于20 dB的理想线),在99.9%截断策略下更是骤降到约0.2-0.4 dB,几乎完全失去精度。

但有一个有趣的偏差:Qwen3.5-9B和Qwen3.5-35B-A3B的绝对峰值虽然不算太高(956和132),但它们的SQNR明显低于同级别峰值预期。这说明层内分布的整体形态不只由峰值决定,尾部之外的分布结构也会影响量化质量。换句话说,M是一个重要的先行指标,但不是量化质量的唯一决定因素。

这个实验刻意设计为"轻量级的合理性验证"而非全面评测——它只测了8个模型的1个层,没有覆盖端到端任务,没有比较旋转量化、前缀量化等更先进的方法。研究团队也明确指出,那些先进方法的目的恰恰是"绕过"M的影响,如果用它们来测试,反而看不出M与量化误差的关系。这个实验的价值在于定性确认:M与量化损失之间确实存在正向关联,M可以作为量化风险的先行参考指标。

**九、研究边界与未来方向**

研究团队在论文中坦诚地列举了多项局限性,这份坦诚本身就值得肯定。

首先,语料库的覆盖范围不够广,只包含了英文、中文和代码,缺乏数学推理链、工具调用记录、或低资源语言文本,这些场景下的激活峰值可能有所不同。其次,所有测量都在4096个token以内的序列长度下进行,而许多被测模型支持32k乃至128k的超长上下文,在极长序列下激活峰值是增大、饱和还是转移到不同载体,尚不清楚。

在比较设计上,MoE与稠密架构的对比只有两对匹配组,视觉语言与纯文本的对比也只有两对;训练阶段对比集中在一个家族的四个阶段;只有基础版与指令版的对比勉强达到了三个尺寸的设计。这些样本量都太小,结论只能说明"方向性效果",不能支持跨家族的量化预测。

更深层的限制是:研究完全是观察性的,没有干预实验。论文观察到MoE架构对应更低的M,观察到某些家族的激活峰值更高,但这些差异是由哪个具体的设计决策导致的——是归一化方式、残差结构、训练数据、还是优化器选择?目前完全不清楚。探明这一机制,需要在可控条件下对不同设计要素逐一消融,是留给未来研究的重大课题。

另外,文章中对两种激活分布"形态"(跳跃-平台型与渐进积累型)的区分,目前是纯定性的视觉判断。要把这个二分法变成可重复使用的量化指标,需要设计具体的"跳跃分数"或聚类诊断方法,目前尚未实现。

归根结底,这项研究的价值不在于给出了最终答案,而在于建立了一把"统一的量尺",用统一的协议、统一的指标,第一次让跨家族、跨代际、跨架构的激活峰值比较成为可能,并且把测量代码和所有模型的统计数据公开发布,供后续研究者直接使用。

**十、对普通用户和工程师意味着什么**

研究团队基于全局激活峰值,把24个模型分成了五个"部署难度层级":低于2000的(6个模型,如Qwen3.5系列、Qwen3-30B-A3B),2000到1万之间的(6个模型),1万到5万之间的(8个模型),5万到20万之间的(2个模型),超过20万的(2个模型,均为Gemma3家族)。

这个分层有实际意义。低层级的模型可以用标准的INT-8或INT-4量化策略,几乎不需要额外处理,适合资源受限的本地部署。高层级的模型则需要额外的激活值处理手段——要么用旋转变换(QuaRot、SpinQuant等)改变激活的分布形态,要么用平滑迁移(SmoothQuant等)把激活的难度转移到权重上,要么干脆避开低精度量化。

对于普通的模型使用者而言,这项研究的最直接启示是:当你看到两个模型说"我们都是7B参数",却发现在边缘设备上跑起来精度差了一大截,很可能背后的原因就在于激活峰值的巨大差异。选择模型时,除了参数量、测评分数之外,激活动态范围也应该是一个重要的参考维度——而这个信息,目前大多数模型发布时并未披露。

研究团队的建议很直接:任何开放权重模型在发布时,都应该把M及其所在的层级和载体作为模型卡片的标准组成部分一同发布,就像参数量、训练数据规模、许可证类型一样成为常规信息。

说到底,这项研究做的是一件看起来很简单却从未有人系统做过的事:把一把统一的量尺放到28个现代开源大模型面前,量了量它们内部数值的"脾气"有多烈。量出来的结果让人意外——相同参数量的模型之间,这个"脾气"可以相差几千倍乃至几万倍。更重要的是,这个差异与模型有多大关系不大,而与它出自哪个家族、用了什么架构、训练到了哪个阶段,关系极大。这意味着,模型家族的设计哲学在"数值稳定性"这个维度上,留下了深刻的可量化烙印——而在此之前,大家对这个烙印几乎一无所知。

Q&A

Q1:大模型量化时为什么激活值的大小会影响压缩质量?

A:量化是把高精度浮点数压缩成有限刻度的低精度整数,需要先确定一个"量程"(scale)来覆盖所有激活值。如果某个激活值特别大,量程就必须设得很大,导致大多数普通的小数值被挤压到极少的刻度上,信息损失严重,模型回答质量就会下降。全局最大激活值M直接决定了最坏情况下需要多大的量程,因此M越大,量化越难做好。

Q2:MoE架构为什么比稠密架构的激活峰值更低?

A:MoE(稀疏专家混合)模型在处理每个输入时,只激活全部专家网络中的一小部分,大多数子网络处于"休眠"状态。这种稀疏路由使得信号不需要经过完整的大型全连接层,激活值累积的机会更少,峰值自然更低。研究发现,同规模的MoE模型峰值比稠密模型低14到23倍左右,但目前只有两对对比案例,需要更多验证。

Q3:指令微调(Instruct版)和基础版(Base版)大模型的激活峰值有多大差别?

A:在Qwen2.5的三个尺寸对比中,1.5B和7B的指令版与基础版峰值几乎没有变化,32B尺寸的指令版峰值比基础版低约1.4倍。进一步分析发现,指令微调主要压低了最后几层的激活峰值(降幅约31%到48%),而中间层的高峰区域基本保持不变。总体来看,指令微调对激活峰值的影响比较局部,远小于跨家族之间数千倍的差距。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-