LLM 位置编码及外推
RoPE
https://zhuanlan.zhihu.com/p/629681325
PI
位置插值(POSITION INTERPOLATION)显著改善RoPE的外推能力。你只需要对PT(pretraining)模型fine-turing最多1000步就能实现。PI是通过将线性的缩小了输入位置的索引使其匹配原始上下文窗口大小,而不是外推超出训练的上下文长度(超出训练的上下文长度,会导致attention score的爆炸性高分,破坏了分数)。不用PI在PT模型上fine-turning长文本,即使训练1万步,能有效扩展的窗口长度也十分有限。
扩展后的模型在长文本任务中有较好的性能,困惑度没有上升,在原来长度的任务中困惑度略有下降(实验中下降了2%)。
考虑使用2048上下文窗口长度预训练的Llama模型。左上角是LLM模型的正常用法:输入位置指数(蓝点)在预训练范围内。右上方显示长度外推,其中模型需要操作未见位置(红点),最高可达4096。左下角展示了位置插值,我们将位置索引(蓝色和绿色点)本身从[0,4096]缩小到[0,2048],以迫使它们驻留在预训练的范围内。
RoPE的外推能力有限,理论上,使用2048长度训练的模型,如果输入3000的长度,它就无法使用0位置的信息,但可以使用2900位置的信息,但实际上,如果答案就在2900位置处,也无法得到。
左:一个拟合的注意力评分函数(红色),形式为公式(1), $d = d_{model}/n_{head} = \frac{4096}{32} = 128 $(LLaMA 7B设置)。圆点为待拟合的随机输入点,红色曲线为最小二乘法拟合的分数函数,其近似在[−1,1]内。右:虽然拟合函数在[0,L]内似乎有很好的边界,其中L = 2048,但在这个区域之外,它可能会超过8000,导致注意力计算出现灾难性问题。请注意,这里我们根本没有挑选:几乎每个从[0,L]内随机生成的输入点集合中学习的曲线都有外推问题。
a ( s ) = R e [ ∑ j = 0 d 2 − 1 h j e i s θ j ] (1) a(s)=Re[\sum^{\frac{d}{2} -1}_{j=0} h_j e^{is \theta_j}] \tag{1} a(s)=Re[j=0∑2d−1hjeisθj](1)
位置插值公式:
f ′ ( x , m ) = f ( x , m L L ′ ) f^{'}(x,m)=f(x, \frac{mL}{L^{'}}) f′(x,m)=f(x,L′mL)
f f f 是RoPE的位置函数, x x x是 m m m位置的embedding向量, L L L 是原来的上下文窗口长度, L ′ L^{'} L′是扩展的窗口长度
passkey retrieval
这是一种测试扩展后窗口的有效长度,即一个token可以注意多远。
12345可以被替换成任何其他的词。
PS: 为了将7B, 13B和33B模型扩展到8192上下文窗口大小,我们使用32个A100 gpu和64个全局批处理大小
对原始2048窗口的模型使用FT,发现训练10000步的时候,只有效扩展到了2560的长度,但是使用PI,训练200步的时候就能扩展到我们想要的窗口长度(实验中有抖动,步数多了有效窗口长度反而变短)。
ALiBi
ALiBi(Attention with Linear Biases)不为token嵌入添加位置嵌入(相比其他位置编码),而是用一个和query, key之间的距离成比例的一个“惩罚项”来偏置query-key的attention score。
效果:可以加快11%的训练速度,以及减少11%的内存使用。
使用ALiBi,LM可以在短序列上进行训练,在长序列上推理。
m叫做坡度(slope)
按照论文中的描述,其做法是:
例如,8个heads的时候,m的取值为:
1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256
如果是16个heads,则m的取值为:
1/sqrt(2), 1/2, 1/(2*sqrt(2)), 1/4, …, 1/256
相当于追加了一半的1/sqrt(2)到原来的8个head的每个m的取值。
扩展到一般情况就是:
对于n个head的话,m的取值就是 2 − 8 n 2^{\frac{-8}{n}} 2n−8:
2 − 8 1 , 2 − 8 2 , 2 − 8 3 . . . 2 − 8 n 2^{\frac{-8}{1}},2^{\frac{-8}{2}},2^{\frac{-8}{3}}... 2^{\frac{-8}{n}} 21−8,22−8,23−8...2n−8, 这样的m个坡度了。
NTK ALiBi
- 针对ALiBi位置编码在长文本中注意力视野有限的问题,提出了基于ALiBi编码的两种插值方法:内插值和NTK-ALiBi插值。
- 实验表明:无需微调情况下,插值方法能够有效扩大ALiBi编码的注意力视野,提高长文本上的任务效果
NTK-ALiBi插值
-
频域:RoPE编码或ALiBi编码其共同点,都是将位置空间编码为频域空间,其中三角函数(RoPE)或偏置项(ALiBi)的系数,即为频域值。
-
NTK-RoPE插值:NTK-RoPE位置编码的改进,在于保持分辨率的情况下(高频),实现了频域空间缩放(低频),从而实现位置空间的插值。
-
NTK-ALiBi插值:受NTK编码的启发,我们也可以对ALiBi的频域空间进行缩放,实现NTK-ALiBi的位置插值。改进后的偏置项系数为:
-
- m h = 1 2 8 h / H ∗ a ( h − 1 ) / ( H − 1 ) m_h = \frac{1 }{ 2^{8h/H} * a^{(h-1)/(H-1)}} mh=28h/H∗a(h−1)/(H−1)1
- 令 b = a 1 / ( H − 1 ) b = a^{1/(H-1)} b=a1/(H−1), 则有: m h = b / ( 2 8 / H ∗ b ) h m_h = b / (2^{8/H} * b)^h mh=b/(28/H∗b)h
- NTK改进后可以实现高频分辨率不变,低频视野放大的效果
- 注:通常可以将缩放系数a设为:a = 推理长度 / 训练长度
-
解释:NTK-ALiBi的公式看起来可能有些难懂,但核心思想与苏建林大佬所说的“高频外推,低频内插”相同。下面从两种情况考虑:
-
- h=1时,视野较小,为高频情况。m_h = 1 / 2^(8/H),与原始偏置系数相同,相当于直接外推,因此是高频外推。高频视野分辨率不变。
- h=H时,视野较大,为低频情况。m_h = 1 / {2^8 * a},在原始偏置基础上缩减了a倍,等价于对位置进行了内插值,因此是低频内插。低频视野变大a倍。
参考
https://zhuanlan.zhihu.com/p/632780188
NTK-ALiBi:通过插值实现大模型ALiBi位置编码的长文本外推
相关文章:
LLM 位置编码及外推
RoPE https://zhuanlan.zhihu.com/p/629681325 PI 位置插值(POSITION INTERPOLATION)显著改善RoPE的外推能力。你只需要对PT(pretraining)模型fine-turing最多1000步就能实现。PI是通过将线性的缩小了输入位置的索引使其匹配原始上下文窗口…...
第3章_瑞萨MCU零基础入门系列教程之开发环境搭建与体验
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
AI在医疗保健领域:突破界限,救治生命
文章目录 AI在医学影像分析中的应用AI在疾病预测和早期诊断中的作用个性化治疗和药物研发医疗数据管理和隐私保护未来展望 🎉欢迎来到AIGC人工智能专栏~AI在医疗保健领域:突破界限,救治生命 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博…...
centos7安装kubernets集群
一、准备工作 准备三台虚拟机,centos7系统 二、系统配置 1. 修改主机名 # 三台机器都需要执行 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node22. 修改hosts文件 # 三台机器都需要执行 [rootk8s-…...
【多线程】线程安全与线程同步
线程安全与线程同步 1.什么是线程安全问题? 多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题 取钱的线程安全问题场景: 两个人他们有一个共同的账户,余额是10万元,如果两个人同时来取钱,…...
指针权限,new与delete,类与对象,函数模板,类模板的用法
指针权限 用法 void Print(const char* SecretPointer) {cout << "绝密指令为:";cout << SecretPointer << endl; }void Change(int& number, int* const FixedPointer) {cout << "更换站台数字为:";c…...
Unity——脚本与序列化
在介绍序列化之前,我们先来了解一下为什么要对数据进行序列化 数据序列化有以下几个主要的应用场景和目的: 1. 持久化存储:序列化可以将对象或数据结构转换为字节序列,使得其可以被存储在磁盘上或数据库中。通过序列化ÿ…...
NJ求职盘点
电子显示 集成电路 地平线 后摩智能 芯启源 自动驾驶 地平线 栖霞区兴智科技园 泊车、SLAM/3D算法工程师 https://wecruit.hotjob.cn/SU64819a4f2f9d2433ba8b043a/pb/social.html?currentPage1 后摩智能 栖霞区兴智科技园 视觉感知算法资深工程师 可以做自动驾驶前瞻性…...
01卡特兰数
卡特兰数跟排列组合很有关系,所以在看此文章前请掌握: 加法原理乘法原理A(m,n)计算公式及其原理C(m,n)计算公式及其原理 前言 今天您将会学习到基本的卡特兰数及其应用。 一、卡特兰数是什么? 卡特兰数(Catalan number࿰…...
若依前端vue设置子路径
若依前端vue设置子路径 说明:本文档中以前后端分离版为例,版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…...
Vue中使用pdf.js实现在线预览pdf文件流
以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤: 1. 安装pdf.js npm install pdfjs-dist2. 引入pdf.js 在需要使用的组件中,使用以下代码引入pdf.js: import pdfjsLib from pdfjs-dist3. 加载pdf文件流 使用pdf.js的getDocument()方…...
态、势、感、知与时空、关系
态势感知是一种通过收集、整合、分析和解释大量的时空数据,以获取关于特定领域、地区或事件的全面理解的过程。时空和关系在态势感知中扮演着非常重要的角色。 态:态指的是物体或系统所处的状态或状况。在不同的态下,物体或系统的性质、行为和…...
D. Paths on the Tree
Problem - 1746D - Codeforces 思路:先分析一下题意,根据第一条性质,每次只能够从1开始,而第二条性质则表明对于每个节点来说,经过这个节点的子节点的路径条数应该尽量均衡,最大值与最小值相差不能超过1&am…...
CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解
相信很多朋友都想知道, Cocos Creator 资源的定义? Cocos Creator 常见的资源包含哪些?Cocos Creator 资源的管理机制是什么样的? Cocos Creator 中所有继承自 Asset 的类型都统称资源 ,例如:Texture2D、Sp…...
大数据课程L1——网站流量项目的概述整体架构
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解网站流量项目的案例概述; ⚪ 了解网站流量项目的数据埋点和采集; ⚪ 了解网站流量项目的整体架构; 一、网站流量项目概述 1. 背景说明 网站流量统计是改进网站服务的重要手段之一…...
提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库
title: 提升数据库安全小技巧,使用SSH配合开源DBeaver工具连接数据库 categories: 独立博客的方方面面 前段时间, 未来降低网址运行成本,搭了一套Mysql Docker 数据库, 包括外部链接,数据备份,数据导出,数据恢复一套解…...
信息安全技术概论-李剑-持续更新
图片和细节来源于 用户 xiejava1018 一.概述 随着计算机网络技术的发展,与时代的变化,计算机病毒也经历了从早期的破坏为主到勒索钱财敲诈经济为主,破坏方式也多种多样,由早期的破坏网络到破坏硬件设备等等 ,这也…...
java项目基于 SSM+JSP 的人事管理系统
java项目基于 SSMJSP 的人事管理系统 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好,今天和大家聊的是 Java 基于 SSM 的人事管理系统。…...
【Node.js】—基本知识点总结
【Node.js】—基本知识总结 一、命令行常用操作 二、Node.js注意点 Node.js中不能使用BOM和DOM操作 总结 三、Buffer buffer是一个类似于数组的对象,用于表示固定长度的字节序列buffer的本质是一段内存空间,专门用来处理二进制数据 特点:…...
Leetcode.174 地下城游戏
题目链接 Leetcode.174 地下城游戏 hard 题目描述 恶魔们抓住了公主并将她关在了地下城 d u n g e o n dungeon dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公…...
python实现adb辅助点击屏幕工具
#!/usr/bin/env python # -*- coding: utf-8 -*-import re import os import time import subprocess import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk# 设置ADB路径(根据你的系统和安装路径进行调整) ADB_PATH C…...
智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击
智能合约安全分析,针对 ERC777 任意调用合约 Hook 攻击 Safful发现了一个有趣的错误,有可能成为一些 DeFi 项目的攻击媒介。这个错误尤其与著名的 ERC777 代币标准有关。此外,它不仅仅是众所周知的黑客中常见的简单的重入问题。 这篇文章对 …...
nodejs 爬虫 axios 异步爬虫 教程 【一】
axios 自定义headers axios.defaults.headers.common["User-Agent"] "Googlebot/2.1 (http://www.google.com/bot.html)"; 运行环境: node :v18 const axios require("axios"); axios.defaults.headers.common["U…...
Swift学习笔记三(Dictionary 篇)
1 Dictionary 概念 字典储存无序的互相关联的同一类型的键和同一类型的值的集合。字典类型的全写方式 Dictionary<Key, Value>,简写方式 [Key: Value],建议使用简写方式。字典的 key 必须是可哈希的。 2 Dictionary创建 2.1 初始器创建方式 2.2 …...
javax.mail 遇到501 mail from address must be same as authorization user 的問題
使用不同的兩個帳戶发送email时,第一个账户可以发送成功,但到第二个账户的时候就报出了501 mail from address must be same as authorization user的错误。 具体代码如下: import java.util.Date; import java.util.List; import java.util.…...
【Python】网络编程
Socket Socket (简称 套接字)是进程之间通信一个工具,进程之间想要进行网络通信需要socket。Socket负责进程之间的网络数据传输,好比数据的搬运工。 客户端和服务端 2个进程之间通过Socket进行相互通讯,就必须有服务端和客户端 Socket服务…...
客户端开发常用框架
在Unity游戏开发中,客户端常用的框架包括以下几种: 1.Unity的网络框架:Unity自带了网络框架,包括Unity Networking、Unity Matchmaker和Unity Remote等。这些框架可以帮助我们进行游戏的联机对战、排行榜、跨平台等功能的设计和实…...
数据分析综述
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...
区块链技术与应用 - 学习笔记2【密码学基础】
大家好,我是比特桃。本系列笔记只专注于探讨研究区块链技术原理,不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划,在“加快数字发展 建设数字中国”篇章中,区块链被列为“十四五”七大数字经济重点产业之一&#…...
制作Linux发行版安装镜像:复刻centos镜像安装ISO
制作Linux发行版安装镜像:复刻centos镜像安装ISO 我们平时经常下载Linux各个发行版,下载ISO,安装使用。那么ISO到底是如何制作的?安装过程是什么原理? 近来打算讲镜像制作的过程、原理,通过一个专栏分享一…...
展览搭建公司/厦门百度整站优化服务
请参考 https://blog.csdn.net/guxiaonuan/article/details/73775519 在选择安装什么语言时,可以选择所有。...
企业局域网的组建与网站建设论文/营销方案案例范文
今天分享一份来自中国移动的《5G落地:应用融合与创新》。如需下载《5G落地:应用融合与创新》,请扫码前往我们公众号对话框回复“落地”。ps:链接有效期至3月5日,建议尽快下载保存哦!编辑:陈颖思…...
服务器放多个网站/信息流优化师简历模板
状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。…...
查找公司信息的网站/seo怎么读
使用 在startActivity()和finish()分别调用 overridePendingTransition(R.anim.fade_in, R.anim.fade_out);方法也可以设置成全局通用的主题fade_in.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.an…...
网站制作 公开课/广州营销型网站
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引&…...
html网页设计作业代码/sem与seo
题意:给你一条数轴和m条线段,第i条线段覆盖区间[Li,Ri],选择它需要代价Ci。请选出代价和最小的一组线段使得区间[L,R]中的每一段都被覆盖。 这个题目其实是数据结构优化DP的一道例题。。但是这里我们把它转化为一个图论问题。用简单一点的知识…...