位置内插 PI:基于Positional Interpolation扩大模型的上下文窗口

位置内插 PI:基于Positional Interpolation扩大模型的上下文窗口

      • 如何在不牺牲性能或从头训练的情况下,扩展大型语言模型的上下文窗口以处理长文档或长对话?

 


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

 

这篇论文介绍了一种名为位置插值(Position Interpolation, PI)的方法。

旨在扩展基于 RoPE 的预训练大型语言模型的上下文窗口大小,解决的核心问题是如何有效且高效地扩展模型的上下文理解能力,以便处理需要长上下文的任务。

比如长文档摘要、语言建模等,而不需要从头开始训练模型以支持更大的上下文窗口,这在资源和时间上都是非常昂贵的。

 

如何在不牺牲性能或从头训练的情况下,扩展大型语言模型的上下文窗口以处理长文档或长对话?

流程顺序:

  1. 子问题:需要扩展模型上下文窗口的动机是什么?

    • 解法:识别长上下文任务的需求 - 如长文档摘要、语言建模等。
    • 例子:想象一篇科学论文的长篇摘要,这需要模型理解并生成超出其预训练上下文限制的内容。
  2. 子问题:直接外推位置编码在长上下文任务中存在哪些问题?

    • 解法:分析外推的局限性 - 直接外推导致性能不稳定。
    • 例子:在尝试生成论文的摘要时,直接外推位置编码会导致注意力分数异常升高,从而无法生成连贯的文本。
  3. 子问题:如何在不重新训练模型的情况下有效地扩展上下文窗口?

    • 解法:位置插值(PI)方法 - 通过线性下调位置索引,而不是外推。
    • 例子:采用PI,模型可以将原本的[0, 4096]位置范围内的位置信息“压缩”到[0, 2048]内,使得模型可以处理更长的文本,就像处理2048个令牌一样有效。

在这里插入图片描述

预训练的Llama模型在处理2048个上下文窗口长度时的旋转位置嵌入(RoPE)的正常使用情况。

蓝色点表示预训练范围内的位置索引,而红色点表示在4096范围内未见过的位置索引(超出预训练范围的位置)。

下方展示了位置插值的结果,其中位置索引被缩小了一半(f(x, m) = f(x, m/2)),即将原本的[0, 4096]范围的位置索引映射到[0, 2048]范围内,以适应模型的预训练范围。

这张图说明了位置插值如何通过对输入位置的缩放,使得模型能够处理超出其原始训练范围的输入,而不需要对模型架构进行改动,只通过重新调整位置索引来达成。

如果原始上下文窗口是2048,目标窗口是4096,那么所有位置索引都会被除以2。

位置2048在位置插值后会被处理为1024(即 2048 / 2 = 1024)。

这样处理之后,新的序列的每个位置(不论是原始的还是新增的)都有了一个唯一的、缩放后的位置索引。

一些位置编码方法,如三角函数位置编码或一些变体的旋转位置编码(RoPE),可以在非整数(除以二后变成小数)位置上计算。

这些方法可以将连续的位置信息映射到高维空间,以保持位置的相对关系,即使这些位置是通过插值得到的。

在位置插值中,我们不会直接在位置索引中引入小数点,而是通过调整位置编码函数来处理可能出现的小数位置,以便模型可以连续地处理位置信息,从而适应更长的输入序列。
 

在新的上下文窗口大小上对模型进行微调,以帮助模型适应位置插值所带来的变化。微调通常是在一个大型的文本语料库上进行,例如Pile数据集。

  1. 子问题:位置插值方法的效率和有效性如何验证?

    • 解法:经验验证和微调成本分析 - 使用少量的微调步骤。
    • 选择一个大型的文本数据集,如Pile数据集,用于微调模型。
    • 例子:LLaMA 7B模型使用PI扩展到32768上下文窗口后,在Pile数据集上仅需1000步微调,就能显著改善性能。
  2. 子问题:位置插值扩展后的模型在原始上下文窗口大小的基准任务上表现如何?

    • 解法:在原始上下文窗口大小进行基准评估 - 对比原始模型和扩展模型的性能。
    • 例子:经过PI扩展到8192的模型,在2048的原始上下文窗口的基准任务上只表现出最多2%的性能下降。
  3. 子问题:扩展后的模型在实际上下文中的有效性如何衡量?

    • 解法:通过通行密钥检索任务测试有效上下文窗口 - 检查模型是否能够恢复长文档中的隐含信息。
    • 例子:经过PI的模型能够在一篇长文档中成功恢复隐藏的随机通行密钥,表明其有效上下文窗口至少与通行密钥所在位置一致。

通过位置插值方法,可以有效地扩展预训练模型的上下文窗口,而无需进行资源密集型的重新训练。

通过微调来进一步优化模型,使其在长文档摘要等任务中具备更强的性能,即使在超出原始训练限制的上下文中也能保持稳定性和效率。

 

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

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

相关文章

详解Python3的垃圾回收机制

Python的垃圾回收机制主要包括两个部分:引用计数和循环引用检测。 引用计数法 内部采用 引用计数法,为每个对象维护引用次数,并据此回收不在需要的垃圾对象。 由于引用计数法存在重大缺陷,循环引用时由内存泄露风险&#xff0c…

自动驾驶TPM技术杂谈 ———— Unix常用命令行

文章目录 介绍常用命令 —— A常用命令 —— C常用命令 —— D常用命令 —— E常用命令 —— F常用命令 —— G常用命令 —— H常用命令 —— I常用命令 —— J常用命令 —— K常用命令 —— L常用命令 —— M常用命令 —— N常用命令 —— P常用命令 —— Q常用命令 —— R常用…

Vue3——创建一个应用

文章目录 创建应用实例挂载应用没有模板的组件的挂载 应用配置多个应用实例 其实使用脚手架创建的vue项目的main.js文件中已经为我们配置好 vue应用的创建。 import { createApp } from vue import App from ./App.vue const app createApp(App) app.mount(#app)创建应用实例…

C++ JSON解析

JSON解析 JSONCPPC实现JSON解析器 JSONCPP JSONCPP源码链接:https://github.com/open-source-parsers/jsoncpp JSOCPP源码下载以后,首先复制一份include文件夹下的json文件夹,头文件留着后续备用。 使用Cmake生成项目。在IDE中编译jsoncpp_…

【Nicn的刷题日常】之打印整数二进制的奇数位和偶数位

目录 1.题目描述 2.解题思路 3.解题 1.题目描述 获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列 2.解题思路 1. 提取所有的奇数位,如果该位是1,输出1,是0则输出0 2. 以同样的方式提取偶数位置检测n…

CGAL-3D 凸包算法

3D 凸包算法 一、概述二、静态凸包构造1. Traits 特征类2. 极端点3. 半空间相交4. 凸性检验 三、动态凸包构造四、性能 一、概述 一个点集 S∈R3 是凸的,如果对于任意两点 p 和 q 在集合中,具有端点的线段 p 和 q 包含在 S。集合的凸包 P 包含点集 S 的最…

GADM 4.1 全球国家行政区划下载

扫描文末二维码,关注微信公众号:ThsPool 后台回复g004,领取最新 GADM 4.1 全球国家行政区划 GADM概述 GADM,全称 Database of Global Administrative Areas,是一个开放获取的全球行政区划数据库,包含各国、…

APIfox编排自动化测试场景(一)

测试场景用于将多个接口请求与实际可能发生的一些特殊情况(如条件判断、循环)有序的组合在一起,来模拟一个真实业务流程,组成自动化测试单元。 新建目录 / 测试场景​ 打开 Apifox 后点击左侧菜单栏中的“自动化测试”&#xff…

基于Vue的移动端UI框架整理

一、Vant 官方地址:https://youzan.github.io/vant/#/zh-CN/ 简介:有赞公司开发。 特性:60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

机器学习---概率图模型(隐马尔可夫模型、马尔可夫随机场、条件随机场)

1. 隐马尔可夫模型 机器学习最重要的任务是根据已观察到的证据(例如训练样本)对感兴趣的未知变量(例如类别标 记)进行估计和推测。概率模型(probabilistic model)提供了一种描述框架,将描述任…

MySQL单主模式部署组复制集群

前言 本篇文章介绍MySQL8.0.27版本的组复制详细搭建过程,教你如何快速搭建一个三节点的单主模式组复制集群。 实际上,MySQL组复制是MySQL的一个插件 group_replication.so,组中的每个成员都需要配置并安装该插件,配置和安装过程…

R语言阈值效应函数cut.tab2.0版发布(支持线性回归、逻辑回归、cox回归,自定义拐点)

阈值效应和饱和效应是剂量-反应关系中常见的两种现象。阈值效应是指当某种物质的剂量达到一定高度时,才会对生物体产生影响,而低于这个剂量则不会产生影响。饱和效应是指当某种物质的剂量达到一定高度后,其影响不再随剂量的增加而增加&#x…

编译DuiLib库遇到的变量定义位置问题

C89 规定,所有局部变量都必须定义在函数开头,在定义好变量之前不能有其他的执行语句; C99 标准取消这这条限制,但是 VC/VS 对 C99 的支持不是很积极; C99 是 C89 的升级版; 如图是修改之后的代码&#xff1…

腾讯音乐面试题

Docker相关 Docker 是一个开源的应用容器平台,它允许开发者构建、打包、分发和运行任何应用——从简单的命令行工具到复杂的微服务架构。Docker 的核心概念主要包括: 容器 (Containers): Docker 容器是轻量级的、可执行的独立软件包,包含应用…

AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺

今天分享的是AI 系列深度研究报告:《AI专题:海外科技巨头指引,AI主线逻辑依旧坚挺》。 (报告出品方:华西证券) 报告共计:54页 本周热点:海外科技巨头指引,AI主线逻辑依旧坚挺 硬件…

介绍docker

一:介绍docker: Docker 并没有单独的图形界面,它主要通过命令行来进行管理和操作 1、 docker ps:显示正在运行的容器。 docker images:显示本地的镜像。 docker run:创建并启动一个新容器。 docker stop&a…

Redis面试题42

人工智能对工作岗位和就业市场会有什么影响? 答:人工智能对工作岗位和就业市场将带来深远的影响。虽然一些工作可能会被自动化取代,但同时也将出现新的工作机会。以下是人工智能对工作岗位和就业市场的一些影响: 自动化工作&…

6. 尚硅谷大数据111门技术+42个项目

文章目录 第 1 章尚硅谷大数据全套技术第 2 章尚硅谷大数据全套项目 资料来源于网络,仅用于个人学习。 仅用于个人搜索使用。 第 1 章尚硅谷大数据全套技术 1.Java从入门到精通JDK版 链接:https://pan.baidu.com/s/1GAc610SYSMmZBuOX4DJ-lg 提取码&…

C++ //练习 4.17 说明前置递增运算符和后置递增运算符的区别。

C Primer(第5版) 练习 4.17 练习 4.17 说明前置递增运算符和后置递增运算符的区别。 环境:Linux Ubuntu(云服务器) 工具:vim 解释 前置递增运算符先对对象进行递增,然后取递增后的值赋值给左…

使用Dubbo实现微服务之间的高效通信

目录 一、RPC与Dubbo 二、Springboot整合Dubbo 服务端实现 消费端实现 一、RPC与Dubbo RPC(Remote Procedure Call)是指远程过程调用。 常见的RPC框架有Dubbo(Alibaba )、gRPC(Google)、Thrift&#…