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

【学习笔记】大模型架构设计与长上下文能力的实现

大模型架构

Encoder-Decoder

继承自传统的Transformer架构,包含一个编码器encoder,以及一个解码器decoder,这个在之前介绍过
其中,编码器采用的是双向注意力,即每一个元素的attention可以关注所有元素;而解码器采用的是单项注意力,即每一个元素只能关注之前元素以及自己,这一点通过对参数矩阵进行mask可以快速实现
代表模型:Transformer,flan-T5

Casual Decoder

目前的LLM大部分采用Decoder Only架构,而Decoder架构又可以分为Casual Decoder以及Prefix Decoder,两者的主要区别就在于前后文的注意力差别。
Casual Decoder ,也称为因果编码器,输入和输出均为单向注意力,即每个token只能看到并依赖其之前的token
适合文本续写、问答系统、创意写作等需要保持文本连贯性的任务
代表模型: GPT系列,LLamA

Prefix Decoder

Prefix Decoder,也称为前缀编码器,输入部分使用双向注意力,输出部分使用单向注意力。在生成新的输出时,会考虑到所有之前生成的输出。
适合机器翻译、文本摘要等需要同时理解全文上下文并生成相关文本的任务
代表模型: GLM,ChatGLM

可以通过下图对三种架构有一个直观了解

长上下文能力的实现

在实际应用中,大语言模型对于长文本数据的处理需求日益凸显,尤其在长 文档分析、多轮对话、故事创作等场景下,这些文本的长度往往大于训练时数据的最大长度 m x K mxK mxK,事实上预训练时就使用超长文本也是不划算的,因为attention的平方复杂度,这会导致巨大开销。
而上下文长度超过训练时分布限制时,模型的位置编码往往无法得到充分训练,自然会导致处理能力下降。
因此,给定一个预训练后的大语言模型,如何有效拓展其上下文窗口以应对更长的文本数据?
目前的解决方法包括:扩展位置编码,调整上下文窗口

扩展位置编码

目前位置编码常用的是RoPE,也就是对参数矩阵施加旋转变换。过长的上下文长度,在RoPE中就反映为旋转角度的范围超过训练时的上限。所以一种措施就是对旋转角度加以限制
考虑RoPE中的旋转角度主要由token的位置索引 t t t以及子空间序号 i i i决定
f ( t , i ) = t ⋅ θ i f(t, i) = t\cdot \theta_{i} f(t,i)=tθi
现在将其扩展为
f ( t , i ) = g ( t ) h ( i ) f(t, i) = g(t)h(i) f(t,i)=g(t)h(i)
此时对角度的限制就有两个方向,限制 g ( t ) g(t) g(t)或者 h ( i ) h(i) h(i)

位置索引修改

一个非常直接的思路就是让 g ( t ) g(t) g(t) t t t进行放缩,上限为 T m a x ′ T_{max}' Tmax代表扩展后的上下文窗口长度即可。此时就有
g ( t ) = T m a x T m a x ′ t g(t) = \frac{T_{max}}{T_{max}'}t g(t)=TmaxTmaxt
通过线性变换对距离信息进行放缩,就实现了角度的限制。但是这种做法在处理较短的文本时,由于位置索引的缩放,可能会对模型的性 能产生一定的负面影响
另一种做法为了兼顾短文本的性能,对放缩区域进行限制:对模型中近距离敏感的位置索引进行保 留,同时截断或插值处理远距离的位置索引,确保其不超出预设的最大旋转角度。得到
g ( t ) = { t t ≤ w , w t > w ( ReRoPE ) w + ( T m a x − w ) ( t − w ) T m a x ′ − w t > w ( LeakyReRoPE ) g(t) = \left\{\begin{matrix} t &t\leq w, \\ w & t>w(\text{ReRoPE})\\ w + \frac{(T_{max}-w)(t-w)}{T_{max}'-w} &t>w(\text{LeakyReRoPE}) \end{matrix}\right. g(t)= tww+Tmaxw(Tmaxw)(tw)tw,t>w(ReRoPE)t>w(LeakyReRoPE)

基修改

与上述修改的思路类似,我们希望上下文窗口达到 T m a x ′ T_{max}' Tmax的时候,旋转角度依然在训练时的上限内,即
f ( T m a x ′ , i ) = T m a x ′ h ( i ) ≤ T m a x θ i f(T_{max}',i) = T_{max}'h(i)\leq T_{max}\theta_{i} f(Tmax,i)=Tmaxh(i)Tmaxθi
注意到 θ i = b − 2 ( i − 1 ) / H ( b = 1e4 ) \theta_{i} = b^{-2(i-1)/H}(b=\text{1e4}) θi=b2(i1)/H(b=1e4),一种做法就是对底数 b b b进行缩小,从而缩小旋转的角度,得到
h ( i ) = θ i = ( α ⋅ b ) − 2 ( i − 1 ) / H h(i) = \theta_{i} = (\alpha \cdot b)^{-2(i-1)/H} h(i)=θi=(αb)2(i1)/H
α \alpha α可以取 ( T m a x ′ T m a x ) H / ( H − 2 ) (\frac{T_{max}'}{T_{max}})^{H/(H-2)} (TmaxTmax)H/(H2)
还有一种做法是直接对 h ( i ) = θ i h(i) = \theta_{i} h(i)=θi进行截断,类似上文中 g ( t ) g(t) g(t)的操作 link

调整上下文窗口

上述方法是对位置编码进行修改,使得旋转角度能够落在训练时上限内。另一种方法是采用受限的注意力机制来调整原始的上下文窗口,从而实现对更长文本的有效建模。方法包括并行上下文窗口, Λ \Lambda Λ形上下文窗口,词元选择

相关文章:

  • jmeter 工具安装及并发压测详解
  • PostgreSQL学习之一次一密口令认证(TOTP)
  • 【Git】git cherry-pick(将某个分支的 commit 改动复制到当前分支)
  • 诠视科技MR眼镜如何安装apk应用
  • 《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》
  • Linux Shell 脚本使用YAD工具实现Shell图形化界面
  • CodeBrick笔记,一种支持低功耗的嵌入式操作系统
  • 【TCP/IP、HTTP等网络协议】
  • Android开发: Java文件中操作基础UI组件
  • spring security设置多个数据源和登录验证码
  • 第二届计算机网络和云计算国际会议(CNCC 2025)
  • 如何让AI套用现有ppt模板,并通过改文字批量生成新的ppt?【翻车版】
  • AI如何实际应用到自动化测试-实战篇
  • [python]基于yolov12实现热力图可视化支持图像视频和摄像头检测
  • scala基础学习-类(1.定义类)
  • 【身份安全】OAuth 2.0工作原理(一)
  • 企业搭建AI大模型平台,存储难题如何破?Infortrend普安存储GSx并行文件存储系统
  • 质量工程师的2025:从“找bug“到“造质量“的职业进化
  • 多省发布!第27届中国机器人及人工智能大赛各赛区比赛通知
  • 【VirtualBox 安装 Ubuntu 22.04】
  • 刘洪洁已任六安市委副书记、市政府党组书记
  • 中国空间站多项太空实验已取得成果,未来将陆续开展千余项研究
  • 八成盈利,2024年沪市主板公司实现净利润4.35万亿元
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 特朗普加征关税冲击波:美国零售、汽车、航空、科技企业纷纷预警业绩波动
  • 扎克伯格怕“错过风口”?Meta AI数字伴侣被允许与未成年人讨论不当话题