Bert重大创新,RAG突破512长度限制

发布于 2024-12-31 13:03
浏览
0收藏

当前RAG的检索、召回模块,受到了传统BERT模型只支持512长度的极大限制。导致文档切分后的chunksize,极大影响RAG的性能。

本文介绍的ModernBERT,在BERT的基础上进行了重大改进,以提高下游任务的性能和效率,尤其是在更长序列长度上的表现。

ModernBERT在2万亿个token上进行训练,原生支持8192序列长度,展现了在多样化分类任务和单向、多向检索任务上的卓越性能。

ModernBERT解决的问题 

  • 问题1:传统Bert序列长度512的限制

ModernBERT通过增加序列长度到8192个token,显著提高了模型处理长文本的能力。

  • 问题2:传统BERT注意力机制效率低下

为了提高模型的运行速度和内存效率,ModernBERT引入了一系列现代模型优化技术,包括交替的全局和局部注意力机制、无填充(unpadding)策略以及Flash Attention技术。

  • 问题3:传统Bert架构陈旧

ModernBERT采用了最新的模型架构改进,例如GeGLU激活函数、RoPE位置编码和预标准化(pre-normalization)技术

突破性能的关键技术 

  • 在相同的参数数量下,具有更多窄层的模型(深而窄)与具有较少宽层的模型(浅而宽)具有不同的学习模式。
  • 深而窄的语言模型比其较浅的对应模型具有更好的下游性能,但代价是推理速度较慢。
  • 为了获得更好的下游性能,ModernBERT设计的目标是尽可能深而窄。
  • ModernBERT的基础模型和大型模型分别具有22层和28层,参数总数分别为1.49亿和3.95亿,在后续性能和硬件效率之间取得了平衡。
  • ModernBERT基础模型的隐藏层大小为768,GLU扩展为2304;大型模型的隐藏层大小为1024a,GLU扩展为5248。 这些比例允许跨张量核心的最佳平铺。

transformer架构的改进

  1. GeGLU激活函数:替代原有的GeLU激活函数,提供更好的非线性表达能力。
  2. RoPE位置编码:使用旋转位置编码(RoPE)代替绝对位置编码,以提高模型对序列顺序的理解能力。
  3. 预标准化(pre-normalization):在每个Transfaormer块中使用预标准化技术,有助于稳定训练过程。
  • 在嵌入层之后添加了一个层归一化。 为避免重复,去除了第一个注意力层中的第一个层归一化。
  1. 交替注意力机制:在模型中交替使用全局和局部注意力,以平衡计算效率和性能。
  • 全局注意力:序列中的每个token都关注其他每个token
  • 局部注意力:token仅关注一个小滑动窗口内的token。
  • 在ModernBERT中,每三层使用RoPE theta为160,000的全局注意力,其余层使用具有128个token、RoPE theta为10,000的局部滑动窗口注意力。

模型训练的改进

  1. 在2万亿个token上进行训练,数据来源包括网页文档、代码和科学文献。模型采用了现代的BPE分词器,并设置了50,368的词汇量,以优化GPU利用率。
  2. 训练采用了Masked Language Modeling(MLM),并去除了Next-Sentence Prediction(NSP)目标,因为后者并未带来性能上的提升。
  3. 模型使用了StableAdamW优化器,并采用了改进的梯形学习率计划
  4. 采用去除填充策略,去除填充token,减少计算资源的浪费
  • encoder-only语言模型通常使用填充符元来确保批次中统一的序列长度,从而浪费在语义上为空的符元上的计算资源。
  • 去除填充通过移除填充token、将小批量中的所有序列连接成单个序列并将其作为单个批次进行处理来避免这种低效。
  • 之前的去除填充实现会在不同的模型层内部去除填充并重新填充序列,从而浪费计算资源和内存带宽。
  • 使用Flash Attention的可变长度注意力和RoPE实现,允许在单个未填充序列上使用不规则的注意力掩码和RoPE应用。
  • ModernBERT在嵌入层之前去除输入的填充,并可以选择性地重新填充模型输出,这使得其性能比其他去除填充方法提高了10%到20%。
  1. 使用Flash Attention技术,提高了注意力计算的内存和计算效率。
  • ModernBERT结合使用Flash Attention 3进行全局注意力层
  • 使用Flash Attention 2进行局部注意力
  1. 利用PyTorch的torch.compile编译功能,提高了训练的吞吐量10%。
  2. 通过增加全局注意力层的RoPE theta值,将原生上下文长度512扩展到8192个token,并在额外的3000亿个token上进行训练,以优化长文本处理能力。

训练参数的配置 

  • MLM:

a.使用30%的掩码率,原始的15%掩码率再次被证明是次优的

  • StableAdamW优化器:

a.StableAdamW的学习率裁剪在下游任务中优于标准梯度裁剪,并导致更稳定的训练。

  • 梯形学习率 (LR) :

a.在预训练期间,我们使用改进的梯形学习率 (LR) schedule,也称为预热-稳定-衰减 (WSD)。

b.在短暂的LR预热之后,梯形schedule在大部分训练中保持LR不变,然后进行短暂的LR衰减。

c.此schedule已被证明可以匹配余弦schedule的性能。

d.并且可以对任何检查点进行持续训练而不会出现冷启动问题。

e.使用1-sqrt的LR衰减,要优于线性衰减和余弦衰减

f.ModernBERT-base 以8e-4的恒定LR训练了1.7万亿个token,预热了30亿个token

g.预热20亿个token后,以5e-4的LR训练了ModernBERT-large,训练了9000亿个符元。

h.在large的损失在5e-4下保持稳定了几百亿个token后,将学习率回滚到5e-5,并重新训练剩余的8000亿个token。

  • 批量大小调度:

a.批量大小调度从较小的梯度累积批量开始,随着时间的推移逐渐增加到完整的批量大小,能加快训练进度

b.ModernBERT-base和-large的批量大小分别在500亿个token内从768增加到4608,在100亿个token内从448增加到4928,采用不均匀的token调度,以便每个批量大小具有相同数量的更新步骤。

  • 权重初始化和平铺:

a.使用中心平铺和Gopher层缩放,直接从ModernBERT-base的预训练权重初始化ModernBERT-large

b.由于Base的权重矩阵小于Large的权重矩阵,对Base的权重进行了中心化处理,考虑了每个token嵌入和注意力头,然后使用环绕填充其余权重。

  • 上下文长度扩展:

a.以1024个序列长度和10,000的RoPE theta对1.7万亿个token进行训练后,通过将全局注意力层的RoPE theta增加到160,000并将额外训练3000亿个token来扩展ModernBERT的原生上下文长度到8192个token。

b.首先,以3e-4的恒定较低学习率对8192个token的原始预训练数据集混合体进行2500亿个token的训练

c.接下来,对更高质量的来源进行上采样,并在500亿个token上进行具有1-sqrt学习率调度的衰减阶段。

​https://github.com/AnswerDotAI/ModernBERT​

​https://arxiv.org/pdf/2412.13663​

本文转载自​CourseAI​,作者: CourseAI 

已于2024-12-31 14:27:13修改
收藏
回复
举报
回复
相关推荐