这是一个带有注意力接收器的高效流式语言模型项目。近期在研究如何通过解读模型来优化设计,我打算写一个简短系列文章,清晰阐述模型原理与解释,梳理设计思路。这是系列首篇探索性内容,以下将用通俗语言剖析 StreamingLLM 的本质,并分享对该方法的思考。StreamingLLM旨在解决现有大语言模型输入序列长度受限的问题,其根源在于注意力机制需计算全局注意力分数。当前模型在输入长度扩展上受制于两方面因素:缓存冗余与外推困境,这限制了模型处理更长序列的能力。缓存冗余问题突出。在大模型解码阶段,需持续存储之前全部的Key和Value信息,借助自回归方式逐步生成后续内容。随着输入长度增长,这一成本变得难以承受。1(a)所示,下三角矩阵即是需要长期保存的数据部分。外推困境在于,许多现有方法通过滑动窗口处理超长输入。当输入长度超出预训练的窗口范围时,性能会下降。1(b)、(c)所示,这两种经典滑动窗口方法虽能降低缓存成本,但外推能力有限,难以适应更长序列的需求。
这篇文章被归类在模型解释系列中,因为它对Attention机制有独特的见解和有趣的洞察。研究发现,在大模型的 Attention 计算中,许多 Attention 权重集中于特定 Tokens,不论其与语言建模任务是否相关。这些 Tokens 通常位于序列的起始位置,占据了较多的注意力资源。这一现象揭示了模型权重分配的某些偏好性特征。
2所示,在Layer 2中,权重分布尤为显著,大量权重集中于开头的若干Tokens。虽然这些初始Tokens语义有限,但却获得了较高的注意力分数。这项研究将这一现象归因于计算中的 Softmax 操作,因为它要求注意力分数的总和必须为 1。当当前查询与许多先前标记没有很强的匹配时,仍需将不必要的注意力值分配给一些与语义关联性不强的位置,以确保最终分数总和为 1。这种接收多余权重的 token 类似于一个容器,无论是什么样的权重都可以被分配到其中。因此,在序列的初始位置上,那些聚集了大量权重的 tokens 被称为 Attention Sinks。初始Token成为无需关注的接收器,因其对几乎所有的后续标记均可见。在自回归建模中,它们更易被训练为注意力汇聚点,从而发挥相应作用。通过上述分析,可以清晰地阐述 StreamingLLM 的核心方法:保留初始 Tokens 的键值对(K、V),再结合滑动窗口的键值对,从而稳定模型性能。这是因为保存 Attention sinks 能使窗口内的注意力分数分布接近原始状态。结合图 1(d) 可以更直观地理解这一机制。话说回来,上述所有解释和推断均来自作者的理解。假设初始标记接收了多余的注意力分数,这看似合理。然而,我们是否也能换个思路思考这个问题:或许那些所谓的注意力汇(Attention Sink),类似于 BERT 中句首用于分类的特殊标记,又或者像是图神经网络里的超级节点(Super Node),接收的是全局或整个句子的信息。从这个角度来看,这项研究实际上是在滑动窗口的过程中,引入了几个代表全局信息的无语义标记,并让它们伴随窗口一起进行预训练。这样一来,模型可能就逐渐掌握了全局的语义信息。或者,从人脑类比来看,这就像给大模型添加了一个海马体,在处理流式信息时持续缓存整体内容,从而赋予模型短期记忆能力。本质上,这项研究通过连续型 prompt 的方法实现了大模型的短期记忆功能。以上仅为大胆类比思考,仅供参考。总体而言,这项工作是一个典型的发现规律、剖析原因并应用于实际方法的研究,其分析方式对后续工作具有重要参考价值。这种方法不仅适用于大型语言模型,所有基于注意力机制的模型都能借鉴这种思路,使输入序列长度更加灵活。同时,对于其他人工智能研究领域而言,这也是一个将模型解释与模型开发有机结合的优秀示例。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号