易云巢做网站公司,网站会员收费怎么做,高端品牌网站建设有哪些,项目外包网站定义#xff1a;
长度外推#xff0c;即免训练长度外推#xff0c;就是不需要用长序列数据进行额外的训练#xff0c;只用短序列语料对模型进行训练#xff0c;就可以得到一个能够处理和预测长序列的模型#xff0c;即“Train Short, Test Long”。
判断方法#xff1…定义
长度外推即免训练长度外推就是不需要用长序列数据进行额外的训练只用短序列语料对模型进行训练就可以得到一个能够处理和预测长序列的模型即“Train Short, Test Long”。
判断方法
1.模型在处理长序列时其损失和困惑度PPL)是否保持在一个合理的范围。如果这些指标在处理长文本时显著增加或“爆炸”则表明模型可能在处理长序列时遇到困难这在实际应用中可能导致性能下降或结果不稳定。相反如果这些指标平稳甚至优化那么模型就表现出了良好的长序列处理能力。
2.通过实际的性能测试。即输入足够长的上下文Context让模型生成或预测接下来的文本然后将模型的输出与真实的答案进行比较。这种评测方式通常涉及使用一些标准化的指标如BLEU、ROUGE等来定量衡量模型输出的质量。
在长度外推的同时有没有损失远程依赖的判断方法
测试不同长度的输入但专注于相同长度输出部分的性能如最后一段。这种方法可以帮助我们理解模型在处理更长的上下文时是否仍能保持对早期输入部分的语义捕捉从而不失去对全文意义的控制。
长度外推方法
1.RoPE旋转位置编码
paper
RoPE 是一种在自注意力机制中引入位置信息的方法。它的核心思想是通过旋转变换保留了相对位置信息同时使用绝对位置编码。
RoPE 具体工作流程 1 对于输入的词嵌入序列计算其对应的查询Query, Q和键Key, K向量。 2 对每个词的位置计算一个旋转矩阵这个旋转矩阵是基于词的绝对位置编码和一个常数旋转角度生成的。 3 使用这个旋转矩阵对Q和K向量进行变换这个变换是元素级的每两个元素作为一个二维向量进行一次旋转。 4 然后进行常规的自注意力内积操作计算Q和K之间的点积这个过程自然地考虑了词之间的相对位置。 优势 1、RoPE不带有显式的远程衰减这对于旨在Long Context的模型至关重要 2、RoPE是一种真正的位置编码通过不同频率的三角函数有效区分了长程和短程达到了类似层次位置编码的效果这也是Long Context中比较关键的一环 3、RoPE直接作用于Q、K不改变Attention的形式与Flash Attention更契合更容易Scale Up。 代码实现 1.https://blog.csdn.net/BIT_666/article/details/133696553 2.https://github.com/JunnYu/RoFormer_pytorch
2.窗口截断
窗口截断是一种常用于处理长序列数据的技术特别是在训练和推理大型语言模型时。其基本思想是通过限制模型在每个时间步只关注输入序列的一个子集从而降低计算复杂度和内存需求。这种方法可以在一定程度上帮助模型处理比训练时使用的序列更长的文本。
引入Sliding Window的Attention Mask 但是强行截断窗口外的注意力并不满足“不牺牲远程依赖的能力”的原则。因此必须要加上开头的几个token。Λ -Mask。 原因 1.开头的几个Token是绝对位置的“锚点” 2.开头的几个Token是注意力的“回收站” 3.位置内插PI
paper 这种方法基于一个假设模型对于位置信息的学习可以通过线性变换平滑地从训练区间外推到更长的序列。 对于模型仅在较短序列上进行训练的情况线性插值通过将超出训练长度的位置索引等比例缩小映射到模型已经学习的位置范围内。例如如果模型在长度为2048的序列上进行过训练当需要处理长度为4096的序列时位置索引将被缩放使得原先位置0至4096的区间映射到0至2048内。
4.保近压远 Leaky ReRoPE
文章 paper 实现免训练长度外推的要领是“保近压远”即“保证局部不失真”和“压缩远处不越界”。
实现思路先设定一个窗口大小w将相对位置分为两部分在窗口不改变相对位置实现“局部不失真”在窗口外使用位置内插实现“远处不越界”。 优势Leaky ReRoPE和ReRoPE的表现确实都非常好从Loss来看它们能做到几乎不损失训练长度内的效果并且实现了长度外推且Context越长Loss越低说明它们在外推的同时还确实保证了远程依赖。
代码实现 1.https://github.com/bojone/rerope 2.Self-Extend增加四舍五入。https://github.com/datamllab/LongLM
5.YaRN
paper 介绍文章
YaRN NTK-aware NTK-by-parts Dynamic NTK 1.“NTK-aware”插值是YaRN方法发展过程中的一个步骤它解决了RoPE插值过程中可能丢失的高频信息问题通过不同程度地缩放RoPE的不同频率维度。 2.“NTK-by-parts”插值是YaRN方法中的核心组成部分它进一步细化了插值策略特别是在处理不同频率或波长的RoPE维度时以避免丢失相对局部距离信息。 3.“Dynamic NTK”插值是一个与YaRN相关的概念它通过在模型的不同推理步骤中动态调整插值策略提供了一种在处理不同长度序列时动态适应的方法。 代码实现 1.https://github.com/jquesnelle/yarn
长度外推主要面向的需求场景: 资源限制型需求 场景这类需求的用户通常没有足够的资源进行长文本的微调训练。他们需要的是从短文本训练的模型直接得到一个可以有效处理长文本的模型。特点这种情况下的长度外推效果要求较高因为用户希望模型能够在没有额外训练数据或计算资源的情况下直接处理更长的文本序列。方法适合于此类需求的技术可能需要采用更高级的模型架构或策略例如使用没有显式远程依赖损失的长度外推方法如RoPE以保证在不进行额外训练的情况下模型仍能维持对长距离内容的理解和处理能力。 效率优化型需求 场景这类需求的用户拥有足够的资源进行长文本的微调但他们的目标是获得一个更好的初始模型以此为基础进行进一步的优化和训练从而快速达到理想的性能水平。特点这种情况对模型修改带来的初始性能损失具有较高的容忍度关键在于能否通过后续的微调迅速恢复并超越原始性能。方法位置内插Position Interpolation, PI等技术在这里非常适用因为它们可以提供一个较好的起点通过相对较短的训练周期即可调整和优化模型以处理长文本。
参考文献 1.https://kexue.fm/archives/9948 2.https://blog.csdn.net/v_JULY_v/article/details/135072211 3.https://blog.csdn.net/qq_43814415/article/details/136976843