LLM面面观之LLM上下文扩展方案
1. 背景
本qiang~这段时间调研了LLM上下文扩展的问题,并且实打实的运行了几个开源的项目,所谓实践与理论相结合嘛!
此文是本qiang~针对上下文扩展问题的总结,包括解决方案的整理概括,文中参考了多篇有意义的文章,他山之石可以攻玉。
大语言模型的扩展有诸多意义,如进行更长的会话、总结更长的文档等。
2. 上下文扩展方案
2.1 位置插值
位置插值(Position Interpolation)是Meta研究人员在去年发布的论文《EXTENDING CONTEXT WINDOW OF LARGE LANGUAGE MODELS VIA POSITION INTERPOLATION》提出的方案,基线模型为LLAMA,LLAMA采用的位置编码是苏神提出的ROPE(如果苏神的文章理论不清楚,推荐拜读下FireFly作者的《图解RoPE旋转位置编码及其特性》,连接在文末),但ROPE的外推性效果不佳,位置插值则做了进一步的改进优化。
位置插值的原理图如下:

原理其实很简单,通过线性降低输入位置索引以匹配原始上下文窗口大小,然后通过少量微调工作,然后将LLaMA 7B和65B模型初始的2048扩展到32768,效率和效果均有保障。
位置插值的代码可以参考transformers中LlamaLinearScalingRotaryEmbedding方法,该防范继承了ROPE的基础类LlamaRotaryEmbedding,改动之处仅在于图中标红之处。

2.2 LongLoRA
LongLoRA是港中文大学和MIT联合发出的论文《LONGLORA:EFFICIENT FINE-TUNING OF LONGCONTEXT LARGE LANGUAGE MODELS》提出的方法,本论文的主要改进之处在于:
1. 基于位置插值方法,在上下文扩展任务中引入LoRA方法,降低对硬件资源的专需。
2. 提出了shift short attention,将attention的直接计算改进为分组计算,且保障相邻组间信息共享。
3. 将norm层及embed层也加入到微调训练中,该部分的参数占比相对较少。
LoRA大家应该很熟悉,下面将重点介绍shift short attention。原理图如下:

(1) 首先将head维度的特征拆分为2块
(2) 然后将其中一组的特征被移动,移动大小为group size的一半
(3) 将tokens拆分成组,且reshape为batch维,然后attention计算
(4) 最后将计算后的结果进行还原。
shift short attention的伪代码如下,具体代码可以参考LongLoRA的github仓库:

2.3 LongQLoRA
LongQLoRA的论文是《LONGQLORA: EFFICIENT AND EFFECTIVE METHOD TO EXTEND CONTEXT LENGTH OF LARGE LANGUAGE MODELS》,主要的思想就是在LongLoRA的基础上引入了量化操作,进一步降低了显卡需求。(Ps: 其实LongLoRA项目本身也集成了量化微调)
LongQLoRA仅在一张32G的V100上,可以将LLaMA2的7B和13B从4096扩展到8192甚至12K,仅需要1000步微调即可。
LongQLoRA本身也是基于transformers架构,因此引入量化配置仅需要些许改动即可,具体如下:

3. 总结
一句话足矣~
本文主要展示了LLM长文本扩展的方法,包括位置插值、LongLoRA、LongQLoRA等论文的简单概述。
此外,所有的论文最好能够结合源码进行开展,目前本qiang~就在践行这一条路线,欢迎大家一块交流。
4. 参考
(1) ROPE原理: https://spaces.ac.cn/archives/8265
(2) 图解ROPE: https://mp.weixin.qq.com/s/-1xVXjoM0imXMC7DKqo-Gw
(3) 位置插值论文: https://arxiv.org/pdf/2306.15595v2.pdf
(4) LongLoRA论文: https://arxiv.org/pdf/2309.12307v2.pdf
(5) LongLoRA代码:https://github.com/dvlab-research/longlora
(6) LongQLoRA论文:https://arxiv.org/pdf/2311.04879v2.pdf
(7) LongQLoRA代码:https://github.com/yangjianxin1/longqlora

LLM面面观之LLM上下文扩展方案的更多相关文章
- MinIO分布式集群的扩展方案及实现
目录 一.命令行方式扩展 1. MinIO扩展集群支持的命令语法 2. 扩容示例 二.etcd扩展方案 1. 环境变量 2. 运行多个集群 3. 示例 相关链接 MinIO 支持两种扩展方式: 通过修 ...
- Web操作摄像头、高拍仪、指纹仪等设备的功能扩展方案
摘要:信息系统开发中难免会有要操作摄像头.高拍仪.指纹仪等硬件外设,异或诸如获取机器签名.硬件授权保护(加密锁)检测等情况.受限于Web本身运行机制,就不得不使用Active.浏览器插件进行能力扩展了 ...
- [编织消息框架][JAVA核心技术]动态代理应用10-水平扩展方案
服务分为系统服务同用户服务两种 水平扩展是基于系统服务,而拆分方式又有几种方案,按数据跟业务情况来做决策 1.每个服务独立存储(图1):每个服务只负责一个或多个领域实体存储,A服务不能直接修改B服务的 ...
- Type-C扩展芯片|Type-C扩展方案|CSCapstone|扩展坞方案选型
一.关于Capstone Capstone科技于2018年8月在台湾成立.团队成员的多样性将硅谷和台湾的才华横溢的人联系在一起,以进行协作和取得优越成就. Capstone科技是由一个经验丰富的研发团 ...
- [转]Dcloud App离线本地存储方案
原文地址:http://ask.dcloud.net.cn/article/166 HTML5+的离线本地存储有如下多种方案:HTML5标准方案:cookie.localstorage.session ...
- FITS 基本格式及其扩展
一.FITS 一般介绍二.FITS 的一般结构三.FITS 基本格式四.FITS 的随机组扩展五.FITS 的表扩展 (ASCII 表扩展)六.FITS 的一般扩展和块因子参考文献 FITS 基本格式 ...
- 分布式存储Memcache替代Session方案
PHP自带的Session实际是在服务器中为每个客户建立独立的文件存放各自的信息. 在不做处理的情况下,很容易被客户端伪造.并且由于采用文件形式,所以存在着IO 读写的瓶颈.一般当用户在线达到1000 ...
- kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器
前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...
- 资金平台交易明细扩展开发-DEP
前言 支持农垦项目中,需要增加抓取银行接口传输数据,需求有两点:一是银企平台前置机需要增加扩展中行.农行数据字段.(代理账号.代理账户名称.代理银行) 二是EAS资金模块中的交易明细查询列表界面能够显 ...
- [翻译].NET Shell Extensions - Shell Context Menus---.net 外壳扩展-右键菜单
我自己的前言说明: 本文原作者为 Dave Kerr,原文链接为.NET Shell Extensions - Shell Context Menus:,我是在为了完成最新需求的时候查询资料的时 ...
随机推荐
- LIS和LCS算法分析
LIS(最长上升子序列) 常规的解法就是动态规划. mx[ j ]表示长度为j的上升子序列最小的值a[i]; dp[ i ]表示前i个数的最长上升子序列长度多少. 1 for(int i=1;i< ...
- StingBuilder与StringBuffer包含的常见方法(图示)
StingBuilder与StringBuffer包含的常见方法
- 从零玩转设计模式之原型模式-yuanxingmoshi
title: 从零玩转设计模式之原型模式 date: 2022-12-11 20:05:35.488 updated: 2022-12-23 15:35:44.159 url: https://www ...
- kafka源码阅读之MacBook Pro M1搭建Kafka2.7版本源码运行环境
原创/朱季谦 最近在阅读Kafka的源码,想可以在阅读过程当中,在代码写一些注释,便决定将源码部署到本地运行. 日常开发过程中,用得比较多一个版本是Kafka2.7版本,故而在MacBook Pro笔 ...
- java中final关键字的使用
1 :在java中final可以修饰类,方法,变量(包括成员变量和局部变量) 第一点:修饰类 特点:修饰的类不能被继承而且成员变量也是可以根据自己需要设置fianl 但final类 ...
- rime中州韵 输入效果一览 100+增强功能效果
rime是一个定制化程度很高的输入法框架, 我们可以在该框架上搭建适合自己的输入法程序.我们将在专栏 小狼毫 Rime 保姆教程 中完成以下近百种定制化效果的配置与演示.欢迎订阅. 以下为个性化定制的 ...
- php +libcurl+nghttp2 实现高性能微服务架构
1.server端nginx编译时增加参数configure --with-http_v2_module server { listen 80 http2; ...
- 统一元数据,数据湖Catalog让大数据存算分离不再是问题
摘要:为了解决现阶段大数据存算分离痛点问题,华为云大数据推出重量级数据湖Catalog服务. 1 背景 随着5G.IoT等技术的发展,企业积累了越来越多的数据,需要激发更多的数据价值变现.传统大数据平 ...
- Sechunter移动应用隐私合规检测详解
摘要:本文简要介绍Sechunter移动应用隐私合规检测的方法步骤,以及目标检测技术在其中的应用. 本文分享自华为云社区<移动应用隐私合规检测简介及目标检测技术的应用>,作者:wolfre ...
- 实用教程|手把手带你离线部署Walrus
Walrus 0.4 已于近日发布,新版本中采用的应用模型可以让运维团队仅需配置1次,即可在多模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的全套应用系统.这极大减少了运维人员的工作量,同时 ...