首页 > 其他分享 >LLM面面观之LLM上下文扩展方案

LLM面面观之LLM上下文扩展方案

时间:2024-01-22 13:55:41浏览次数:21  
标签:LongLoRA https 插值 LongQLoRA 面面观 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

 

标签:LongLoRA,https,插值,LongQLoRA,面面观,LLM,上下文
From: https://www.cnblogs.com/mengrennwpu/p/17979888

相关文章

  • C++U6-03-最短路算法2-bellmon-ford算法
    学习目标贝尔曼福特算法、SPFA 可以用来复习的B站视频:1、https://www.bilibili.com/video/BV1RK4y1d7ct?p=3&vd_source=5c960e1ede940bc5cab8ed42c8bdc9372、https://www.bilibili.com/video/BV18a4y1A7gv/?spm_id_from=333.999.0.0 SPFA算法是 Bellman-Ford算法 的队......
  • 国产AI新篇章:书生·浦语2.0带来200K超长上下文解决方案
    总览:大模型技术的快速演进自2023年7月6日“书生·浦语”(InternLM)在世界人工智能大会上正式开源以来,其在社区和业界的影响力日益扩大。在过去半年中,大模型技术体系经历了快速的演进,特别是100K级别的长上下文、代码解释、智能体等新技术的不断迭代。伴随技术水平的不断提升,大模型在应......
  • 深入理解JavaScript堆栈、事件循环、执行上下文、作用域以及闭包
    合集-JavaScript进阶系列(5) 1.JavaScriptthis绑定详解01-092.JavaScriptapply、call、bind函数详解01-093.JavaScriptforEach方法跳出循环01-024.深入理解JavaScript堆栈、事件循环、执行上下文和作用域以及闭包01-105.JavaScript到底应不应该加分号?JavaScript自......
  • 4种通过LLM进行文本知识图谱的构建方法对比介绍
    我们在以前的文章中已经介绍了使用大语言模型将非结构化文本转换为知识图谱。但是对于知识图谱的创建是一个很复杂的过程,比如需要对属性增加限制,创建符合特定主题/模式的图谱,并且有时文档非常大,无法作为单个提示处理,所以在切分后的提示中创建的图谱需要前后一致。所以本文将介绍......
  • 不常见或难以被LLM捕捉的数据
    LLM(LargeLanguageModels)稀缺的数据主要包括以下几类,这些也是微调(Fine-tuning)专业领域模型或RAG(Retrieval-AugmentedGeneration检索增强生成)的机遇:公司内部流程和政策这些资料通常作为内部文档存在,涉及特定组织的运作机制。图:公司内部流程和政策,独一无二、专用、私有主观......
  • 不常见或难以被LLM捕捉的数据
    LLM(LargeLanguageModels)稀缺的数据主要包括以下几类,这些也是微调(Fine-tuning)专业领域模型或RAG(Retrieval-AugmentedGeneration检索增强生成)的机遇:公司内部流程和政策这些资料通常作为内部文档存在,涉及特定组织的运作机制。图:公司内部流程和政策,独一无二、专用、私有主观......
  • 不常见或难以被LLM捕捉的数据
    LLM(LargeLanguageModels)稀缺的数据主要包括以下几类,这些也是微调(Fine-tuning)专业领域模型或RAG(Retrieval-AugmentedGeneration检索增强生成)的机遇:公司内部流程和政策这些资料通常作为内部文档存在,涉及特定组织的运作机制。图:公司内部流程和政策,独一无二、专用、私有主观......
  • 【langchain】在单个文档知识源的上下文中使用langchain对GPT4All运行查询
    Inthepreviouspost, RunningGPT4AllOnaMacUsingPythonlangchaininaJupyter Notebook,我发布了一个简单的演练,让GPT4All使用langchain在2015年年中的16GBMacbookPro上本地运行。在这篇文章中,我将提供一个简单的食谱,展示我们如何运行一个查询,该查询通过从单个基于......
  • 使用SPIN技术对LLM进行自我博弈微调训练
    2024年是大型语言模型(llm)的快速发展的一年,对于大语言模型的训练一个重要的方法是对齐方法,它包括使用人类样本的监督微调(SFT)和依赖人类偏好的人类反馈强化学习(RLHF)。这些方法在llm中发挥了至关重要的作用,但是对齐方法对人工注释数据有的大量需求。这一挑战使得微调成为一个充......
  • Mygin实现上下文
    本篇是Mygin的第三篇目的将路由独立出来,方便后续扩展修改上下文Context,对http.ResponseWriter和http.Request进行封装,实现对JSON、HTML等的支持路由新建一个router文件,将Mygin实现简单的路由中将路由部分复制出来新建Mygin/router.gopackagemyginimport( "log"......