本文揭示了LLM中离群值与Attention机制和RoPE编码的内在联系。研究发现,离群值是召回头为克服RoPE干扰而产生的必要信号,对模型处理长文本至关重要。前几个token作为注意力汇点充当"空操作",而RoPE的快分量会干扰召回能力。文章提出Partial RoPE和NoPE等改进方法,为大模型量化提供了新视角,对理解LLM架构设计具有重要价值。
作者:唐瀚霖,阿里巴巴高级技术专家,开源推理引擎RTP-LLM的核心作者之一,研究方向为LLM和AIGC的高倍压缩和推理加速方案,曾参与DoubleSqueeze, 1bit-Adam, RazorAttention等工作。
团队介绍
RTP-LLM是阿里巴巴智能引擎团队自研的高性能大模型推理引擎,支持了淘宝、天猫、高德等业务的大模型推理需求。智能引擎源自阿里巴巴搜索、推荐和广告技术,是阿里AI工程领域的先行者和深耕者。团队专注于AI工程系统的建设,主导建立了大数据AI工程体系AI·OS,持续为阿里集团各业务提供高质量的AI工程服务。
RTP-LLM 项目已开源,欢迎交流共建:
https://github.com/alibaba/rtp-llmLLM中的离群值是当前大模型量化的最主要挑战,然而其本身的存在价值却很少被人讨论。
本文从Transformers的核心Attention机制的角度出发,揭示了当前LLM涌现异常值和带有RoPE位置编码的Attention之间的内部联系,为新型模型架构设计提供了一个简洁易懂的视角和思路。
离群值:大语言模型(LLM)量化的主要挑战
量化是一种广泛采用的推理加速方法。其核心思想是将浮点数映射到低维空间:
这里是舍入算子。通常,对于 k 位整数量化,我们会设置,。通常我们还会设置,这意味着我们需要将 x 中的所有数字归一化到区间内。
然而,LLM内部存在大量离群值(在激活中分步尤其显著,见图1),这给大模型量化带来了很大的挑战。
图1:Llama-13B的激活值中存在大量显著离群值
图2:量化scale难以选取
这里最棘手的部分是如何设置这个 scale。如图所示,这里存在一个两难的问题:
- 直接设置会造成量化粒度太粗,导致绝大部分数字很难被精确的表示;
- 剔除掉离群值,设置,这可以保证绝大部分数字都被更精确的表示,但是离群值全部被压缩到了一个很小的数字。
从原理上来看,通过牺牲1%的数值表示精度来是的剩下99%的数能够被更精准的表达,听上去是一件很自然的设计。
然而,出乎意料的是,这些离群值对于LLM至关重要,许多先前的研究发现直接裁剪这部分离群值会导致 LLM 性能出现灾难性的下降(如图3)。
图3:直接强行将离群值置0会完全破坏LLM精度
因此,几乎所有关于 LLM 量化的工作都在寻找更好的方法来减少这些离群值,或者降低这些离群值的影响。但在本文,我们关注一个更本质的问题:
为什么 LLM 会出现这些离群值,以及它们为什么如此重要。
离群值带来的线索
前人的工作注意到离群值具有以下特征:
1.特别大的离群值只存在于前几个 token 中;
2.离群值的存在本身很重要,而不是它们的量级。将一个离群值从几乎没有影响,但将其从则会极大地破坏 LLM 的性能。
非常巧合的是,特质1和LLM的另外一个重要特性(attention sink)高度重合。更具体的,很多工作指出LLM 的前几个 token 起到了“注意力汇点”的作用,即这些token往往会被大量token倾注很高的注意力权重,而移除这些汇点同样会破坏 LLM 的性能。这就启发我们试图从attention sink的角度来研究离群值。
Attention Sink:注意力机制中的“空操作”(Non-op)
在 StreamingLLM[1]中,作者注意到原始的滑动窗口注意力(SWA)会导致 LLM 胡言乱语。一个简单的修复方法是在计算中包含注意力汇点(即最开始的几个 token)。
其背后的核心直觉是,作者发现在某些注意力头中,大多数 token 会将大部分注意力权重分配给汇点 token(见图4)。
图4:Llama2-7B中,多数tokens会将主要注意力权重分配给首token
那么,为什么我们需要这种奇怪的汇点 token 呢?StreamingLLM的作者注意到这些汇点在注意力机制中充当了“空操作”。更具体地说,作者发现这些汇点的Value 值几乎为零,这意味着注意力输出( 表示从 token i 到 j 的注意力权重)也基会趋向为0:
换而言之,当输出消失时,该注意力头对 token i 而言就不发挥作用。这对 LLM 来说是一个非常关键的机制,因为之前的研究已经揭示了某些注意力头可能仅用于特定的关系提取。当不存在这种关系时,该注意力头自然就不应生效。
离群值对注意力汇点至关重要
一个有趣的实验是:如果我们将汇点 token 的离群值设置为正常值(比如从),注意力汇点现象就会消失!下图是一个例证。但这是为什么呢?
如何构建注意力汇点(无RoPE)?
想象你是一个 LLM 模型,现在你需要找到一种方法来开发这种汇点机制。在不考虑 RoPE 的情况下,我们有:
如果对于大多数,都非常大,这基本上意味着会将 token 投影到一个与其自身正交但与汇点 token 平行的低维空间中(见下图,汇点 token 的 Key 值与普通 token 非常不同):
图5:sink token的key值与其他token基本正交
所以现在我们知道,开发注意力汇点并不一定需要通道维度的离群值(channel-outlier)。那为什么在 LLM 中这种情况依然会发生呢?
RoPE 才是罪魁祸首
RoPE 是一种广泛用于建模相对距离的技术,而全注意力(Full Attention)被广泛认为有利于提高模型在长文本下的性能。下面我们将挑战这一观点。
全 Softmax 注意力在长文本下信噪比降低
注意力的输出是:。这里是 token i 和 j 之间的注意力权重。假设我们有一个长文本,结构如下:
“Alice 的关键词是:abcd,xxxxxxx(100万个 token),Alice 的关键词是什么?”
在这种情况下,为了回答关键词,我们期望某些注意力头关注到字母abcd。这意味着这些注意力头需要将大部分注意力分数分配给召回信息。因此,我们可以将信噪比(SNR)定义为:
定义,我们可以看到随着序列长度的增加,也会增加,这意味着 SNR 会持续衰减,导致模型“迷失在不重要的信息中”参见 OpenAI 最近的工作[2]
图6:Attention在长序列下存在信噪比下降的问题
LLM 如何处理长文本
现在我们意识到 Softmax 注意力在长文本中会迷失,然而这一点和现实相悖:近期的 LLM 已经证明了其卓越的长文本处理能力。这一现象的答案在 Anthropic[3] 的突破性工作中得到了揭示。
在这篇论文中,作者发现存在一类特殊的注意力头,被称为归纳头(Induction Heads)。这些头部的逻辑非常简单:它只关注与当前 token 相似的历史 token。
图7:LLM中存在特定attention head负责长文本信息找回
现在我们可以提出一个重要的假设:
为了避免在长文本中迷失,大多数注意力头会关注其相邻 token 加汇点,而少数注意力头负责将远程 token 抓取到当前位置,以便深层网络可以在局部处理这些信息。
验证方法很简单:在RazorAttention[4]中,作者首先根据召回得分筛选出前 20% 的注意力头,并丢弃其余头部的远程 KV 缓存。令人惊讶的是,准确率下降不到 3%。
然而,如果我们保留 80% 的头部为全注意力,并丢弃那 20% 召回头的 KV 缓存,准确率会下降超过 30%。
RoPE机制与召回头存在冲突
如上文所述,召回头的功能非常简单,它只是为了确保相似的 token 拥有较大的注意力权重。下面我们将看到 RoPE 背后的先验设置对这种远程召回能力有一定的负面影响。
经过 RoPE 处理后,和之间的注意力权重为:
这里和是 Query 和 Key 的第个旋转分量,是相应的旋转频率,是 q 和 k 之间的相位偏移。
然而,对于召回头,对于需要被召回的token(假设其位置是),无论其位置如何,我们都需要 足够大。这意味着快旋转分量(较大)对召回头是有害的,因为其本身的attention score会随着相对位置变化快速波动。
在这种情况下,我们需要慢旋转分量占据主要成分,以保持清晰的召回信号。事实上,如果绘制出来每个 token 的 q 和 k 的通道级分布,就会发现对于召回头,低频分量维度通常拥有非常大的量级。
实际上,这种通道级的大量级是离群值出现的关键原因(在[5]也提出了类似的观点)。
图8:LLM的key值在低频分量上会出现离群值
另一个非常有意思的观察是:召回头往往会出现更明显的attention sink现象。而这一现象的答案其实现在已经呼之欲出了。对于召回头,如果前文中不存在需要召回的信息,那通过attention sink现象就可以实现“关闭”效应。
到这里,我们其实已经能够弄清楚为什么大模型需要离群值,以及这些离群值对于attention起到了什么作用。
最终结论
由上述讨论可以看出,LLM中的离群值实际上对于attention长程依赖至关重要。更具体的,和人类一样,LLM 处理长文本的方式存在一个显著的召回模式:
- • 首先在先前的上下文中搜索相关信息,然后进行局部逻辑推理;
- • 召回头需要给相关 token 较大的注意力权重,但 RoPE 的快分量会干扰这一召回能力;
- • 为了绕过 RoPE 的副作用,这些召回头需要在低频分量的维度上产生较大的通道级信号,从而导致了离群值。
到此为止,我们已经从一个角度理解了离群值产生原因,下面则是由上述讨论分析得到的一些自然扩展。
扩展讨论
为什么长文本外推需要更大的旋转基数
最广泛使用的上下文窗口扩展方法,即 YaRN,其实质就是增大旋转基数。由于,这意味着最慢的旋转分量的自旋频率为。
在这种情况下,为了确保被召回的 token 共享较大的注意力权重,我们需要。因此,我们可以有把握地预测,对于序列长度,召回准确率将严重下降。这就是为什么长文本 LLM 通常使用非常大的。
Partial RoPE、NoPE可能更好
如上所述,为 LLM 的序列长度设定了上限,一个简单的修复方法是为某些维度设置。这种方法被称为Partial RoPE,即 q 和 k 中的某些维度不使用 RoPE。
DeepSeek-V3 和 GLM-4.6 采用了这种策略,先前的研究也发现 Partial RoPE 有利于长文本处理。
除此之外,另一种克服这一缺陷的方法是针对某些注意力头禁用 RoPE(我们称之为NoPE)。我想你已经猜到哪些头应该使用 NoPE 了。(如何选择NoPE,避免离群值,请参考《DoPE: Denoising Rotary Position Embedding》,链接:https://arxiv.org/html/2511.09146v1)
是的,答案是召回头。这种策略在最近的 Kimi 模型中被使用,他们在线性注意力头中启用 RoPE,而在 MLA(Multi-head Latent Attention)头中使用 NoPE。
RoPE 离群值的副作用:斜条状带(Slash Pattern)
在MInference[6]中,作者注意到注意力图中存在“斜线模式”(见下方 Qwen3-30B-A3B 某注意力头的精细图谱)。
图9:LLM的自注意力存在slash pattern
通常,近期的免训练稀疏注意力算法会尝试在计算中保留这种斜线模式。但实际上,这些斜线有一些有趣的特征:
- • 斜线模式与输入 token 无关,这意味着它只取决于输入序列长度,而与输入的语义信息无关;
- • 斜线模式呈现出一种准周期性模式。
正如指出的那样,如果这种模式与语义无关,那么其本身对于LLM并不会产生价值。实际上,这种准周期模式正是 qk 离群值在 RoPE 下产生的副作用。
假设 qk 中存在某些离群通道,那么在 RoPE 下,这些离群通道的分量满足:
这无非是某些旋转分量的叠加结果。实际上,如果你对该头的注意力图运行 FFT(快速傅里叶变换),你会发现峰值频率与离群值的频率一致。
如何系统的学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
01.大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
02.大模型 AI 学习和面试资料
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。