当前位置: 首页 > news >正文

【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE

NTK-Aware Scaled RoPE

  • 正弦编码(Sinusoidal)
  • 旋转位置编码RoPE
    • 编码步骤:
    • 旋转位置编码的优势
  • NTK-Aware Scaled RoPE
    • 直接外推
    • 线性内插
    • 进制转换
    • 高频外推、低频内插的理解
    • 位置编码
  • 总结
  • 参考:

长度外推技术是自然语言处理(NLP)领域中,特别是在处理长文本数据时,一个重要的研究方向。这项技术旨在使模型能够在较短的上下文窗口上进行训练,并在较长的上下文窗口上进行推理,即处理超出其训练时所见文本长度的序列。

正弦编码(Sinusoidal)

详细介绍:正弦编码(Sinusoidal)
我们知道正弦编码有以下特点:

  • 具有相对位置表达能力:Sinusoidal可以学习到相对位置,对于固定位置距离的k,PE(i+k)可以表示成PE(i)的线性函数。
  • 两个位置向量的内积只和相对位置 k 有关
  • Sinusoidal编码具有对称性
  • 随着k的增加,内积的结果会直接减少,即会存在远程衰减
  • 正弦编码不具备外推性

虽然Sinusoidal只和相对位置有关。但是实际的Attention计算中还需要与attention的权重 W W W相乘,即 P E t T W q T W k P E t + k PE^T_tW^T_qW_kPE_{t+k} PEtTWqTWkPEt+k,这时候内积的结果就不能反映相对位置

假设位置 m m m的位置编码为 p m p_m pm,位置n的位置编码为 p n p_n pn,如果使用正弦编码,那两个位置之间的 a t t e n t i o n attention attention可以表达为:
< f q ( x m , m ) , f k ( x n , n ) > = q m k m T = ( x m + p m ) W q W k T ( x n + p n ) T = x m W q W k T x n T + x m W q W k T p n T + p m W q W k T x n T + p m W q W k T p n T (1) <f_q(x_m,m), f_k(x_n, n)> = q_mk^T_m=(x_m+p_m)W_qW^T_k(x_n+p_n)^T=\\x_mW_qW^T_kx^T_n+x_mW_qW^T_kp^T_n+p_mW_qW^T_kx^T_n+p_mW_qW^T_kp^T_n \tag{1} <fq(xm,m),fk(xn,n)>=qmkmT=(xm+pm)WqWkT(xn+pn)T=xmWqWkTxnT+xmWqWkTpnT+pmWqWkTxnT+pmWqWkTpnT(1)
后面三项都是和绝对位置 m , n m,n m,n有关,无法表达成 m − n m-n mn的形式,因此需要找到一种位置编码,使得下式成立:
< f q ( x m , m ) , f k ( x n , n ) > = g ( x m , x n , m − n ) (2) <f_q(x_m,m), f_k(x_n, n)> = g(x_m, x_n, m-n) \tag{2} <fq(xm,m),fk(xn,n)>=g(xm,xn,mn)(2)
即接下来要介绍的旋转位置编码。

旋转位置编码RoPE

(详细证明:参考此文),即证明上式(2),以下是二维情况下的一个例子:

在这里插入图片描述
在这里插入图片描述

编码步骤:

  • 对于 token 序列中的每个词嵌入向量,首先计算其对应的 query 和 key 向量
  • 然后对每个 token 位置都计算对应的旋转位置编码,旋转参考
  • 接着对每个 token 位置的 query 和 key 向量的元素按照 两两一组 应用旋转变换
  • 最后再计算 query 和 key 之间的内积得到 self-attention 的计算结果

在这里插入图片描述

旋转位置编码的优势

  • 除了具备标准位置编码的优点外,还具备一定的长度外推能力。

但是实验发现RoPE仍然存在外推问题,即测试长度超过训练长度之后,模型的效果会有显著的崩坏,具体表现为困惑度(Perplexity,PPL)等指标显著上升。

NTK-Aware Scaled RoPE

详细参考:Transformer升级之路:10、RoPE是一种β进制编码

直接外推

直接外推就是在高位扩展,然后通过微调,使模型适应新的位置编码。比如训练长度只有0-999,则需要三维向量(十进制),推理时最大输入长度为0-1999,那就需要在高位增加一维,由于训练时模型没有见过第四维的编码,因此需要经过微调。

线性内插

线性内插是指维数不变,将2000压缩到1000以内,比如通过除以二1601就会变成800.5,个位变成了0.5,就可以用三维表示。原本相邻数字的差距为1,现在是0.5,最后一个维度更加“拥挤”。所以,做了内插修改后,通常都需要微调训练,以便模型重新适应拥挤的映射关系。

进制转换

有没有不用新增维度,又能保持相邻差距的方案呢?有,我们也许很熟悉,那就是进制转换!三个数字的10进制编码可以表示0~999,如果是16进制呢?它最大可以表示 1 6 3 − 1 = 4095 > 1999 16^3-1=4095>1999 1631=4095>1999所以,只需要转到16进制,如1749变为 [ 6 , 13 , 5 ] [6,13,5] [6,13,5],那么三维向量就可以覆盖目标范围,代价是每个维度的数字从0~9变为0~15。

我们关心的场景主要利用序信息,原来训练好的模型已经学会了 875 > 874 875>874 875>874,而在16进制下同样有 875 > 874 875>874 875>874,比较规则是一模一样的(模型根本不知道你输入的是多少进制)。唯一担心的是每个维度超过9之后(10~15)模型还能不能正常比较,但事实上一般模型也有一定的泛化能力,所以每个维度稍微往外推一些是没问题的。所以,这个转换进制的思路,甚至可能不微调原来模型也有效!另外,为了进一步缩窄外推范围,我们还可以换用更小的 ⌈ x 2000 ⌉ \lceil \sqrt[2000]{x} \rceil 2000x =13进制而不是16进制。

高频外推、低频内插的理解

外推:在数学和统计学中,外推(Extrapolation)指的是利用已有的数据或模型来预测超出已知数据范围的值。在机器学习模型中,外推通常指的是模型在处理其训练时未见过的输入时的能力。
高频外推:高频外推指的是在模型处理新的、更长的上下文时,对于捕捉快速变化的位置(低位)信息的高频分量,我们希望它们能够继续以原有的变化速率(即频率不变)向外扩展,以保持对短距离依赖关系的捕捉能力。这种外推是必要的,因为在长文本中,短距离的依赖关系仍然需要被准确捕捉,而高频分量正是负责这一任务的。
内插:在数学和统计学中,内插(Interpolation)指的是利用已知数据点之间的值来估计未知数据点的值。在机器学习模型中,内插通常指的是模型在其训练数据范围内处理输入时的能力
低频内插:指的是在模型处理训练数据范围内的位置时,对于捕捉缓慢变化的位置信息的低频分量(高位),通过调整其频率或缩放(频率变小),使其能够平滑过渡并适应不同的位置。这种内插是必要的,因为在长文本中,长距离的依赖关系可能不像短距离那样频繁或显著,但仍需要被模型所理解和捕捉。

位置编码

截图来自:Transformer升级之路:10、RoPE是一种β进制编码

在这里插入图片描述

上图(2)式的最低频是 n β d / 2 − 1 \frac{n}{\beta^{d/2-1}} βd/21n,引入参数 λ \lambda λ,变为 n ( β λ ) d / 2 − 1 \frac{n}{(\beta\lambda)^{d/2-1}} βλd/21n,让它跟内插一样,则:
n ( β λ ) d 2 − 1 = n / k β d 2 − 1 \frac{n}{(\beta\lambda)^{\frac{d}{2-1}}}=\frac{n/k}{\beta^{\frac{d}{2-1}}} βλ21dn=β21dn/k
解得 λ = k 2 / ( d − 2 ) \lambda=k^{2/(d-2)} λ=k2/(d2)。最高频是 n β \frac{n}{\beta} βn,引入\lambda后变为 n β λ \frac{n}{\beta\lambda} βλn,由于 d d d通常很大, λ \lambda λ很接近1,所以它还是接近 n β \frac{n}{\beta} βn,即等价于外推。

总结

直接外推会将外推压力集中在“高位(m较大)”上,而位置内插则会将“低位(m较小)”的表示变得更加稠密,不利于区分相对距离。而NTK-aware Scaled RoPE其实就是进制转换,它将外推压力平摊到每一位上,并且保持相邻间隔不变,这些特性对明显更倾向于依赖相对位置的LLM来说是非常友好和关键的,所以它可以不微调也能实现一定的效果。简单点就是通过进制转换的思想,实现高频外推,低频内插。

(声明:文章主要目的是记录学习,内容大多为各路大神的总结)

参考:

  1. Transformer升级之路:10、RoPE是一种β进制编码
  2. 再论大模型位置编码及其外推性(万字长文)
  3. 一文通透位置编码:从标准位置编码、旋转位置编码RoPE到ALiBi、LLaMA 2 Long(含NTK-aware简介)
  4. 【笔记】复数基础&&复数相乘的物理意义:旋转+缩放
  5. 【笔记】LLM位置编码之标准位置编码

相关文章:

【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE

NTK-Aware Scaled RoPE 正弦编码(Sinusoidal)旋转位置编码RoPE编码步骤&#xff1a;旋转位置编码的优势 NTK-Aware Scaled RoPE直接外推线性内插进制转换高频外推、低频内插的理解位置编码 总结参考&#xff1a; 长度外推技术是自然语言处理&#xff08;NLP&#xff09;领域中&…...

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知&#xff0c;前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护&#xff0c;这里提供我的规范&#xff0c…...

2024.10.9华为留学生笔试题解

第一题无线基站名字相似度 动态规划 考虑用动态规划解决 char1=input().strip() char2=input().strip() n,m=len(char1),len(char2) dp=[[0]*(m+1) for _ in range(n+1)] #dp[i][j]定义为以i-1为结尾的char1 和以 j-1为结尾的char2 的最短编辑距离 setA = set(wirel@com) set…...

利用ADPF性能提示优化Android应用体验

Android Dynamic Performance Framework(ADPF)是google推广的一套用于优化散热以及CPU性能的动态性能框架。本文主要介绍其中的performance hint的部分。 1、为何引入ADPF 我们都知道&#xff0c;在大多数设备上&#xff0c;Android 会动态调整CPU的频率和核心类型。如果work l…...

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…...

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…...

虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213

用虚拟机安装WIN7&#xff0c;再开始安装PADS V24出现脚本故障IPW213 有去.NetFramework3.5 仍然没有效果 Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center 最终用360驱动大师检测了下 发现有些必备组件没有安装&#xff0c;安装之后重启。 …...

Java正则表达式详解万字笔记内容丰富

正则表达式 1.1 正则表达式的概念及演示 在Java中&#xff0c;我们经常需要验证一些字符串&#xff0c;例如&#xff1a;年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则&#xff0c…...

文件属性与目录

⚫ Linux 系统的文件类型&#xff1b; 普通文件&#xff1a;存储数据&#xff0c;如文本文件、可执行文件等。 目录&#xff1a;用于组织文件和其他目录的特殊文件。 符号链接&#xff1a;指向另一个文件或目录的引用&#xff0c;类似于 Windows 中的快捷方式。 硬链接&#x…...

5G 基站SCTP

如何实现SCTP多归属链路对接 文章目录 ​​前言​​​​一、SCTP是什么&#xff1f;​​​​二、lksctp​​​​三.sctp初始化​​​​四.绑定本端两个IP​​​​ 五.与对端建链​​​​六.设置主要路径​​​​七.设置是否启用心跳​​​​八.关于防火墙的配置​ ​总结​​ …...

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…...

学习虚幻C++开发日志——基础案例(持续更新中)

官方文档&#xff1a;虚幻引擎C编程教程 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 1.物体上下起伏并旋转 1.1第一种写法 创建一个继承于Actor的类&#xff0c;并为新的Actor命名为FloatingActor&#xff0c;然后点击Create Class 重新…...

【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引

文章目录 一、数据存储方式二、二维网格二维线程块三、二维网格一维线程块四、一维网格一维线程块 为了方便下次找到文章&#xff0c;也方便联系我给大家提供帮助&#xff0c;欢迎大家点赞&#x1f44d;、收藏&#x1f4c2;和关注&#x1f514;&#xff01;一起讨论技术问题&am…...

VSCode Qt6安装OpenSSL

报错 Could NOT find OpenSSL, try to set the path to OpenSSL root folder in thesystem variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARYOPENSSL_INCLUDE_DIR SSL Crypto) (Required is at least version "3.0")问题确认 这个错误显示在Windows环境…...

JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”

问题&#xff1a; 定义一个用户类&#xff08;User&#xff09;&#xff0c;包含用户名&#xff08;username&#xff09;和密码&#xff08;password&#xff09;属性&#xff0c;提供静态方法验证密码是否有效&#xff08;长度至少为6&#xff09;&#xff0c;并提供getter和…...

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP&#xff08;Virtual IP&#xff0c;虚拟IP&#xff09;负载均衡是一种在计算机网络中常用的技术&#xff0c;用于将网络请求流量均匀地分散到多个服务器上&#xff0c;以提高系统的可扩展性、可靠性和性能。以下是对VIP负载均衡的详细解释&#xff1a; 一、VIP负载均衡的基…...

鸿蒙网络编程系列38-Web组件文件下载示例

1. web组件文件下载能力简介 在本系列的第22篇文章&#xff0c;介绍了web组件的文件上传能力&#xff0c;同样的&#xff0c;web组件也具备文件下载能力&#xff0c;鸿蒙API提供了处理web组件下载事件的委托类型WebDownloadDelegate&#xff0c;该类型包括四个下载事件的回调接…...

Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置

文章目录 构建拓扑图配置IP地址配置路由器命令说明测试效果 构建拓扑图 1&#xff0c;添加2811路由器。 2&#xff0c;添加pc0。 3&#xff0c;使用交叉线连接路由器和pc&#xff08;注意线路端口&#xff09;。 4&#xff0c;使用配置线连接路由器和pc&#xff08;注意线路…...

Flink系列之:学习理解通过状态快照实现容错

Flink系列之&#xff1a;学习理解通过状态快照实现容错 状态后端检查点存储状态快照状态快照如何工作&#xff1f;确保精确一次&#xff08;exactly once&#xff09;端到端精确一次 状态后端 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state…...

Linux 读者写者模型

1.背景概念 在编写多线程的时候&#xff0c;有一种情况是十分常见的。那就是&#xff0c;有些公共数据修改的机会比较少。相比较改写&#xff0c;它们读的机会反而高的多。这样就衍生出了读者写者模型&#xff0c;在这个模型中&#xff0c;有两类线程&#xff1a;读者和写者。读…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...