【收藏必学】大模型上下文窗口扩展神器:YaRN方法详解,轻松处理超长文本,提升LLM性能
文章介绍了一种创新的大模型上下文窗口扩展方法YaRN,通过NTK-by-parts插值策略和预softmax缩放机制,有效解决了RoPE、PI等现有方法的局限性。实验表明,YaRN能快速收敛,成功将上下文窗口扩展至128k,同时保持模型基础能力,在长文本处理上表现优异。这一方法为大模型处理超长文本提供了高效解决方案,在文档分析等领域具有重要应用价值。
前言
在大语言模型(LLM)领域,研究人员一直在探索如何突破上下文窗口长度的限制。
本文将介绍其中一篇效果很好的的论文《YARN:EFFICIENT CONTEXT WINDOW EXTENSION OF LARGE LANGUAGE MODELS》提出了一种创新的方法 - YaRN(Yet another RoPE extensioN method)。
这种方法不仅在计算效率上表现出色,在模型性能方面也取得了重大突破。
1、已有方法的不足之处
在扩展大语言模型上下文窗口长度的研究中,已有的几种主要方法各有优劣:
(1)RoPE 方法
这是一种创新的位置编码方案,通过复数向量编码相对位置信息,相比传统的位置编码方法有显著提升。
但 RoPE 的主要局限在于,当序列长度超过预训练时的上下文窗口时,其表现会急剧下降,无法有效处理更长的序列。
(2)PI 方法
Position Interpolation 通过对 RoPE 维度进行均匀插值来扩展上下文窗口。
这种方法虽然简单直接,但存在两个明显问题:
- 一是会丢失对长序列处理至关重要的高频信息;
- 二是当扩展倍数 s 较大时,模型性能会显著降低。
(3)NTK-aware Interpolation
这种方法通过修改 RoPE 的基底:
来实现上下文扩展。它在原始预训练模型上效果不错,但在经过微调的模型上表现欠佳。
主要原因是该方法在某些低维度上进行了超出预训练范围的外推,这种外推会干扰模型已学到的特征,从而影响微调后的性能。
2、YaRN 方法
(1)NTK-by-parts 插值
YaRN 方法的核心是一种新的插值策略,称为 NTK-by-parts 插值。为了理解这个方法,我们首先需要引入波长的概念。
在 RoPE 中,对于第 i 个维度,其波长定义为:
波长 λ_i 表示在该维度上,位置编码需要经过多少个 token 才会完成一次完整的旋转周期 2(π)。
基于波长的概念,YaRN 将不同的插值方法分为两类:
- 盲插值方法(blind interpolation):如 PI 方法,对所有维度采用相同的插值策略
- 有针对性插值方法:如 YaRN,根据不同维度的特性采用不同的插值策略
为了实现有针对性的插值,YaRN 引入了一个重要的比值:
其中 L 是原始上下文长度。这个比值反映了上下文长度与波长的关系。
基于这个比值,YaRN 构造了一个分段函数:
最终,YaRN 的核心公式为:
这个公式巧妙地实现了对不同频率维度的差异化处理:
以 LLaMA 模型为例,实验表明 α 和 β 是较优的参数选择。
这意味着:
- 当波长大于上下文长度时,执行线性插值
- 当波长小于上下文长度的 1/32 时,保持原始频率
- 其他情况下,进行动态混合
(2)预 softmax 缩放机制
YaRN 方法的另一个重要创新是引入预 softmax 缩放机制。这一机制通过温度参数 t 来动态调节注意力机制,使模型能更好地处理长序列。
在将查询向量 query 和键向量 key 的点积结果输入到 softmax 函数之前,将注意力权重的计算公式修改为:
之所以要引入这个机制,是因为当模型的上下文窗口被扩展时,注意力权重的分布会发生显著变化。
这种变化会导致模型的困惑度(perplexity)上升,即预测的不确定性增加。
为了缓解这一问题,YaRN 引入温度参数 t 来对注意力权重进行精细调节:
通过大量实验,研究人员发现温度参数 t 与扩展因子 s 之间存在一个优雅的对数关系:
这个公式揭示了一个重要规律:随着我们将上下文窗口扩展得越大(即 s 增大),我们需要相应地降低温度参数 t,以此来增强模型对长距离信息的敏感度,从而有效降低困惑度,保持模型性能。
3、实验结果
(1)训练效率与收敛性
YaRN 在训练效率方面展现出显著优势。实验表明,相比 Position Interpolation(PI)方法,YaRN 具有更快的收敛速度和更稳定的训练过程。
在实验中,将 LLaMA 7B 模型的上下文窗口扩展至 32k 时,YaRN 仅需 400 个训练步骤即可达到理想效果,大幅领先于 PI 方法的训练效率。
这种高效的训练特性不仅节省了计算资源,也为模型的实际部署提供了便利。
(2)长序列处理能力
YaRN 在处理超长文本序列时表现卓越。通过在 Proof-pile 和 GovReport 两个具有代表性的长文本数据集上进行评估,YaRN 展示出了出色的长程建模能力。
特别值得一提的是,在 Proof-pile 数据集上,YaRN 优化后的 LLaMA 2 模型能够有效处理 128k 长度的序列,并取得了 2.37 的优异困惑度分数,这一成绩显著优于现有其他扩展方法。
这证明了 YaRN 在保持模型性能的同时,成功突破了传统注意力机制的长度限制。
(3)通用任务表现
在 Hugging Face Open LLM Leaderboard 提供的标准化评测中,YaRN 扩展后的模型展现出了强大的泛化能力。
实验结果表明,即使在显著扩展上下文窗口的情况下,模型在各类下游任务上的性能仍能与原始模型保持相当。
以 ARCChallenge 为例,YaRN 扩展的 LLaMA 7B 模型达到了 52.1% 的准确率,与原始模型的 53.1% 相差无几。
这一结果有力地证明了 YaRN 方法在扩展上下文窗口的同时,能够很好地保持模型的基础能力。
4、总结
YaRN 方法通过创新性地结合频率域插值和预 softmax 缩放机制,为大语言模型的上下文窗口扩展提供了一个优雅而高效的解决方案。
其主要贡献可以总结为以下几点:
- 提出了基于频率的自适应插值策略,能够智能地区分和处理不同频率的位置信息
- 引入了与扩展因子相关的温度参数,有效调节注意力分布,提升长距离建模能力
- 实现了快速收敛的训练过程,显著降低了计算资源需求
- 在保持模型基础能力的同时,成功将上下文窗口扩展至 128k,并在多个长文本任务上取得了优异成绩
相比其他位置编码扩展方法,YaRN 不仅在理论基础上更加扎实,在实际应用中也展现出了更好的性能和更高的实用性。
这一方法为大语言模型处理超长文本提供了新的可能,有望在文档分析、长文本理解等领域发挥重要作用。
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。
与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

更多推荐
所有评论(0)