【大模型上下文长度扩展】YaRN:以文匹意,精细化衔接长篇

news2024/11/17 23:50:27

YaRN

    • 核心问题
      • 上下文窗口限制
      • 位置编码的限制
      • YaRN的原理
    • YaRN方法 = NTK-aware + NTK-by-parts + Dynamic NTK
      • 子问题1: 高频信息丢失
      • 子解决1: “NTK-aware”插值
      • 子问题2: 相对局部距离的丢失
      • 子解决2: “NTK-by-parts”插值
      • 子问题3: 动态缩放
      • 子解决3: “Dynamic NTK”插值
      • 分析不足

 


核心问题

论文:https://arxiv.org/pdf/2309.00071.pdf

代码:https://github.com/jquesnelle/yarn

 

YaRN(Yet another RoPE extensioN)是一种针对语言模型的位置编码方法,它旨在解决一个特定的问题:如何让一个训练好的模型能够理解和处理比它原本训练时见过的还要长的文本序列。

在大型语言模型中,位置编码是帮助模型理解单词顺序的重要组件。

YaRN的出现就是为了提升这种位置编码的能力。

在这里插入图片描述

随着上下文窗口大小的增加,所有模型的困惑度都在下降,这表明考虑更多的上下文能够帮助模型做出更准确的预测。

一些曲线(如Yarn-Llama的曲线)在较大的上下文窗口大小时有更低的困惑度,表明YaRN方法在处理大上下文窗口时可能更有效。

上下文窗口限制

  • 背景: 大型语言模型(LLMs)在NLP任务中表现突出,但其性能受到预训练时设定的上下文窗口大小的限制。
  • 结论: 扩展上下文窗口对于提升大型语言模型处理长序列任务的能力至关重要。

位置编码的限制

  • 背景: 位置编码是Transformer架构的核心组成部分,用于处理序列中元素的顺序信息。
  • 然而,现有的位置编码方法难以泛化到比训练时更长的序列。
  • 结论: 改进位置编码方法是解决上下文窗口限制问题的关键。

YaRN的原理

基本概念:

  • RoPE(Rotary Position Embedding)是一种用于编码位置信息的方法,它通过一种特殊的数学变换(类似于旋转),将单词的位置信息嵌入到模型能够理解的形式中。这种方法能让模型知道哪些单词是相邻的,哪些单词距离较远。
  • 波长:在RoPE中,波长是指在嵌入空间中一个完整周期的长度,可以理解为模型处理的序列在位置编码上走一个完整循环所需的长度。

类似钟表,用时针和分针来告诉时间。

时针和分针的位置是周期性的(每12小时或60分钟循环一次)。

如果你想要一个新的钟表,可以告诉你一天中的每一分钟(而不仅仅是12小时),你需要一种方法来扩展钟表的面,同时保持时针和分针的周期性不变。

YaRN就是在数学上完成这种扩展的方法,它确保即使是新的、更大的钟表面,时针和分针的相对位置仍然能够准确地告诉你现在的时间。

扩展方法:

  • YaRN利用了RoPE的原理,但在此基础上进行了改进,使模型不仅能处理训练时的序列长度,还能处理更长的序列。
  • 它通过一种特殊的计算方法,确保了即使在更长的序列中,位置信息也能保持一致,这样模型就不会因为序列太长而“迷失”单词的位置。

如何工作:

  • YaRN首先计算原始模型的波长,然后用这个波长来指导如何为更长的序列生成新的位置编码。
  • 这个过程保证了新的位置编码与原来的编码在数学特性上是一致的,就像是在原有的位置编码上“拉伸”出了新的空间来适应更长的文本。

YaRN方法 = NTK-aware + NTK-by-parts + Dynamic NTK

通俗解释: YaRN就像是一个聪明的阅读助手,它结合了以上所有的技术,确保即使在阅读非常长的文章时,也能记得文章的每个部分,并且理解每个细节。

就像一个熟练的读者可以快速浏览一本书并记住所有重要的信息一样,YaRN使语言模型能够处理大量的信息,同时保持对细节的敏感性。

YaRN方法包含了“NTK-by-parts”插值和注意力机制的调整,但不是简单地将“NTK-aware”、"NTK-by-parts"和“Dynamic NTK”插值三者相加。

  1. “NTK-aware”插值是YaRN方法发展过程中的一个步骤,它解决了RoPE插值过程中可能丢失的高频信息问题,通过不同程度地缩放RoPE的不同频率维度。

  2. “NTK-by-parts”插值是YaRN方法中的核心组成部分,它进一步细化了插值策略,特别是在处理不同频率(或波长)的RoPE维度时,以避免丢失相对局部距离信息。

  3. “Dynamic NTK”插值是一个与YaRN相关的概念,它通过在模型的不同推理步骤中动态调整插值策略,提供了一种在处理不同长度序列时动态适应的方法。

YaRN方法是基于上述的理论和技术,结合了“NTK-by-parts”插值和对注意力机制的特定调整(通过温度参数)来优化模型对长序列的处理能力。

在YaRN中,还引入了一种在注意力计算中使用的温度调节,以及一种长度缩放技巧,这些都是在不修改模型代码的情况下,对模型的注意力机制进行微调。

子问题1: 高频信息丢失

通俗解释: 想象你在阅读一篇文章,其中有些单词或者细节特别微小,比如一些细微的情感变化或者语气差别。

如果这些细节在阅读过程中丢失了,整个故事或论点的理解可能就会受影响。在语言模型中,高频信息指的就是这些细微的差别。

子解决1: “NTK-aware”插值

通俗解释: 为了不丢失这些细节,我们需要给模型戴上一副“高清眼镜”,让它即使在阅读更长的文章时也能注意到这些细微的差别。

这就是“NTK-aware”插值做的事情,它调整模型的内部设置,让它在处理长文本时,仍然能够捕捉到关键的细节信息。

子问题2: 相对局部距离的丢失

通俗解释: 现在,想象文章中的每个单词都是故事中的一个角色,它们之间的关系和距离很重要。

如果我们在拉长文章时把所有单词间的距离都均匀拉开,角色间的关系就会变得模糊,我们可能会弄不清楚谁对谁说了什么。

子解决2: “NTK-by-parts”插值

通俗解释: 这个方法就像是我们仔细考虑每个角色间的关系,确保在扩展故事时,这些关系不会被扭曲。

在模型里,这就是“NTK-by-parts”插值所做的,它精心调整模型处理单词位置信息的方式,确保即使在更长的文本中,单词间的相对位置和关系也能被正确理解。

子问题3: 动态缩放

通俗解释: 如果你在读一本书,但是你每次能记住的内容长度不一样,有时候你可能只需要记住一句话,有时候可能是一整页。你的大脑需要能够灵活调整记忆的长度,以适应不同的阅读需求。

子解决3: “Dynamic NTK”插值

通俗解释: 这就是“Dynamic NTK”插值所做的,它让模型能够根据当前正在处理的文本长度动态调整其“记忆范围”。

就像你的大脑在阅读不同长度的内容时自然做的调整一样,模型也能够在处理不同长度的文本时自然过渡,保持高效和准确。

分析不足

  • 分析: YaRN方法通过在RoPE基础上进行创新,解决了传统位置编码方法难以扩展上下文窗口的问题。
  • 通过动态YaRN的应用,模型能够在不需要额外训练的情况下处理更长的文本,这在提高效率和性能方面是一个重大突破。
  • 不足: 尽管YaRN在上下文窗口扩展方面取得了显著进展,但可能仍有一些挑战未被充分解决,比如在极端长序列的处理上的效率和准确性,以及在不同语言或领域中的泛化能力。

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1438174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…

STM32TIM定时器(4)

文章目录 前言一、介绍部分编码器简介正交编码器编码器接口基本结构工作模式均不反向实例均反向实例 二、代码部分编码器接口测速连接线路 代码实现 前言 这部分主要介绍定时器编码器接口,了解使用编码器对计数器的控制,理解正交编码器的工作模式&#…

【JavaScript 漫游】【010】属性描述对象

本文为【JavaScript 漫游】专栏的第 010 篇文章,记录了属性描述对象的重要知识点。 什么是属性描述对象Object.getOwnPropertyDescriptorObject.getOwnPropertyNamesObject.defineProperty、Object.definePropertiesObject.prototype.propertyIsEnumerable元属性存…

win7如何录屏?高性价比工具,轻松录制精彩内容

在数字时代的今天,Windows 7仍然在很多企业和个人用户中占据着重要的地位。尽管微软已经推出了更新的操作系统,但win7因其稳定性和兼容性仍被广泛使用。然而,随着技术的进步,许多用户发现他们需要一种简单而有效的方式来录制电脑屏…

Linux安全技术与iptables防火墙

一.安全技术: 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,…

【开源】JAVA+Vue.js实现开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

redis源码之:cluster集群故障处理

在redis源码之:集群创建与节点通信(1)分析clusterCron定时任务及在redis源码之:集群创建与节点通信(2)分析**clusterReadHandler处理ping请求与pong响应时(clusterProcessPacket)**时…

idea设置terminal为git

要在IntelliJ IDEA中设置终端为Git Bash,请按照以下步骤操作: 打开 Settings(设置)。点击 Tools(工具)选项卡。进入 Terminal(终端)界面。在 Shell Path 下选择 Browse(…

MCU+SFU视频会议一体化,视频监控,指挥调度(AR远程协助)媒体中心解决方案。

视频互动应用已经是政务和协同办公必备系统,早期的分模块,分散的视频应该不能满足业务需要,需要把视频监控,会议,录存一体把视频资源整合起来,根据客户需求,需要能够多方视频互动,直…

机器学习-线性回归法

线性回归算法 解决回归问题思想简单,实现容易许多强大的非线性模型的基础结果具有很好的可解释性蕴含机器学习中的很多重要思想 样本特征只有一个,称为:简单线性回归 通过分析问题,确定问题的损失函数或者效用函数 通过最优化…

相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

【漏洞复现】电信网关配置管理系统SQL注入漏洞

Nx01 产品简介 电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远程监控、配置、升级和故障排除等功能,从而确保网络的正常运行和高效性能。 Nx02 漏洞描述 电信网关配置管理系统存在SQL注入漏洞,攻…

Android CMakeLists.txt语法详解

一.CMake简介 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的…

CV | Medical-SAM-Adapter论文详解及项目实现

******************************* 👩‍⚕️ 医学影像相关直达👨‍⚕️******************************* CV | SAM在医学影像上的模型调研【20240207更新版】-CSDN博客 CV | Segment Anything论文详解及代码实现 本文主要讲解Medical-SAM-Adapter论文及项…

兼容ARM 32位架构的edgeConnector产品为用户提供新的部署选项

Softing工业将ARM 32位兼容性集成到了edgeConnector产品中,以满足用户对ARM处理器的边缘设备日益增长的使用需求。 (兼容ARM 32位架构的edgeConnector产品扩展了其应用部署范围) 用户对采用ARM处理器的紧凑型边缘设备的需求正在大幅增长&…

LC 2641. 二叉树的堂兄弟节点 II

2641. 二叉树的堂兄弟节点 II 难度 : 中等 题目: 给你一棵二叉树的根 root ,请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。 如果两个节点在树中有相同的深度且它们的父节点不同,那么它们互为 堂兄弟 。 请你返回修改值之后,…

【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode1987:不同的好子序列数目 给你一个二进制字符串 binary 。 binary 的一个 子序列 如果是 非空 的且没有 前导 0 (除非数字是 “0” 本身&…

Hgame week1 web

1.Bypass it 不准注册,禁用一下js成功注册登录拿到flag 2.ezHTTP 跟着提示走就行 jwt解析一下 3.点击选课发包时候显示已满 一直发包就会选上 每个都一直发包最后就可以全选课成功 后来得知是后天每隔一段时间会放出一些课,一直发包就能在放课的时候选到…

【网站项目】035家居商城系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息

项目场景: 背景: 使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息 问题描述 问题: $ git pull origin print --allow-unrelated-histories error: Pulling is not possible because you hav…