在自然语言处理领域,BERT 的发布无疑是一个重要的里程碑。自那以后,基于仅编码器的 Transformer 模型便在信息检索与文本分类等任务中牢牢占据主导地位。近年来,大语言模型发展迅猛,但在应对大规模文档检索和判别式任务时,仅编码器模型因其推理成本相对可控,依然拥有广阔的应用前景。不过,现实情况是,目前行业中使用最广泛的仍是老一代模型,例如最初的 BERT。这带来了不少挑战:序列长度受限、模型设计与词汇量不够理想、架构效率偏低,以及训练数据范围狭窄、领域覆盖不足等。可以说,这一领域确实亟需注入新鲜血液。
二、创新点
ModernBERT 的改进可谓全面而系统,从架构设计到训练策略都进行了整体升级。我们来看看它具体在哪些方面做出了突破。
(一)架构改进
1. Transformer 特性集成
ModernBERT 在基础架构上实施了几项关键调整,这些调整看似细微,但组合在一起效果显著。
- 偏置项调整:除了最后的解码器线性层,所有其他线性层的偏置项均被移除,层归一化中的偏置项也同样被去掉。这样做很直接——将更多参数容量留给线性层本身,从而提升模型的表现力。
- 位置嵌入优化:它采用旋转位置嵌入(RoPE)替代原有的绝对位置嵌入。RoPE 在短上下文和长上下文语言模型中均已得到验证,尤其便于进行上下文长度扩展,并在主流框架中能够高效实现。
- 归一化策略改进:采用预归一化块和标准的层归一化,在嵌入层之后增加了一层归一化,注意力层的归一化也经过优化。这套组合拳对稳定训练过程十分有效。
- 激活函数升级:使用基于 Gated-Linear Units(GLU)的 GeGLU 激活函数。与原始 BERT 的 GeLU 相比,从经验上看改进效果明显。
2. 效率提升措施
除了提升性能,ModernBERT 在效率方面也投入了大量精力。
- 交替注意力机制:这是核心亮点之一。每三层使用一次全局注意力(theta 设为 160,000),其余层则采用局部注意力(128 token 的滑动窗口,theta 设为 10,000)。这种设计极大提高了计算效率——毕竟并非所有信息都需要全局视野。
- 无填充技术:在训练和推理中去除了填充令牌。通过 Flash Attention 的可变长度注意力与 RoPE 实现,减少了大量计算浪费,性能自然随之提升。
- 先进注意力算法:全局注意力层使用 Flash Attention 3,局部注意力层使用 Flash Attention 2。这些内核在内存和计算效率方面都表现出色。
- 编译优化:借助 PyTorch 的编译功能,训练效率得到明显提升,且编译开销几乎可以忽略不计。
(二)数据与训练优化
仅有好的架构还不够,数据与方法也必须跟上。在这方面,ModernBERT 同样做得十分细致。
1. 大规模数据训练
模型在海量数据上训练了 2 万亿令牌,数据来源非常多元,包括网络文档、代码和科学文献。通过实验确定了最优的数据混合策略,使模型能够学到更丰富的语言知识。
2. 分词器优化
大多数编码器都在复用原始 BERT 的分词器,而 ModernBERT 则更换为改进的 OLMo 分词器。在代码相关任务中,该分词器的令牌效率和性能都更高。词汇量设为 50,368(64 的倍数),并特意预留了 83 个未使用令牌以支持下游应用,同时优化了 GPU 利用率。
3. 序列打包技术
采用贪婪算法进行序列打包,保证训练批次内序列长度相对均匀。这主要是为了避免因无填充带来的批量大小方差问题,使训练更加稳定。
4. 训练设置精细调整
- 改进的 MLM 设置:遵循 MosaicBERT 的做法,去除了 Next-Sentence Prediction 目标以减少开销,同时将掩码率从 15% 提升至 30%。
- 优化器选择:使用 StableAdamW 优化器,通过 Adafactor 风格的更新裁剪实现自适应学习率调整。相比原始 AdamW,训练更稳定,下游表现也更优。
- 学习率调度:采用修改后的梯形学习率调度(Warmup-Stable-Decay),结合 1 - sqrt LR 衰减。效果优于线性和余弦衰减,且能避免冷启动问题,便于持续训练。
- 批量大小动态调整:从小梯度累积批量开始,随着训练进行逐渐增加到全批量大小。例如 ModernBERT-base 从 768 增加到 4,608,large 版本从 448 增加到 4,928。通过不均匀的令牌调度,确保每个批量大小拥有相同的更新步骤,加速训练。
- 权重初始化:ModernBERT-base 使用 Megatron 初始化,large 版本则从 base 的权重初始化,有助于加速大型模型的初始训练。
- 上下文长度扩展:先在 1024 序列长度上训练,然后通过调整 RoPE theta 扩展到 8192 序列长度,并进行额外训练。学习率策略也做了专门调整,以平衡不同任务的性能。
(三)高效模型设计
通过大量小规模实验,ModernBERT 的目标非常明确:在常见 GPU 上将推理效率做到极致。base 模型为 22 层,large 模型为 28 层,参数量分别为 1.49 亿和 3.95 亿。在隐藏层大小和 GLU 扩展比例上都做了精细调整,确保在不同 GPU 配置下(特别是目标 GPU 的张量核心和平铺效率),都能在下游性能和硬件利用率之间找到最佳平衡点。
三、模型训练
(一)数据处理
数据处理是训练的基石,ModernBERT 在这方面做得非常扎实。
1. 数据混合
模型在 2 万亿令牌的大规模数据上训练,数据来源涵盖网络文档、代码和科学文献。通过一系列实验确定了最终的数据混合策略,确保模型能够学到多样化的语言表达和知识。
2. 分词器
采用改进的 OLMo 分词器,与大多数重用原始 BERT 分词器的编码器不同,它在代码相关任务中展现出更高的令牌效率和性能。词汇量设定为 50,368(64 的倍数),其中包含 83 个未使用令牌用于支持下游应用,同时优化了 GPU 内存利用率。
3. 序列打包
为避免无填充操作导致训练批次内序列长度变化过大,采用贪婪算法进行序列打包,确保批量大小的一致性,稳定训练过程。
(二)训练设置
训练设置的具体细节,在前面“训练设置精细调整”部分已经做了详细介绍,这里不再赘述。
四、下游任务评估
(一)评估设置
评估体系设计得非常全面,覆盖了多个主流任务类型。
1. 自然语言理解(NLU)
使用 GLUE 基准测试,这是衡量模型在句子或句对理解任务上的标准测试,包括情感检测、语言蕴含等。在每个 GLUE 子集中进行超参数搜索,确保与其他模型可比。
2. 文本检索
- 单向量检索:在 DPR 设置下,模型用单个向量表示文档,通过对比学习微调,计算查询与文档的相似度(如余弦相似度)。在 MSMARCO 数据集上训练,并用挖掘的硬负例增强效果。
- 多向量检索:采用 ColBERT 模型,用文档的所有单个令牌向量来表示文档,通过 MaxSim 算子计算相似度。在 MS-Marco 上训练,并通过知识蒸馏从教师模型获取信息。
3. 长上下文检索
由于缺乏标准化长上下文基准,在 MLDR(包含 20 万以上长文档)的英语子集中评估,设置了单向量(域外和域内)和多向量(域外)三种方式。
4. 代码检索
使用 CodeSearchNet 和 StackOverflow-QA 基准评估代码相关任务性能,视为单向量检索任务,并重用之前的最优超参数。
(二)评估结果
评估结果令人振奋,ModernBERT 在各个维度上均有亮眼表现。
1. 总体表现
在 BASE 和 LARGE 两种规模上,ModernBERT 均全面超越原始 BERT 和 RoBERTa,在所有评估类别中都实现了性能提升。
2. 短上下文检索
在 BEIR 评估套件的 DPR 和 ColBERT 设置下,ModernBERT 优于现有编码器,包括专门为检索设计的 GTE-en-MLM 和 NomicBERT。ModernBERT-large 在参数更少的情况下,依然领先于 GTE-en-MLM-large。
3. 长上下文检索
- 单向量检索:在 DPR 设置下的 MLDR 任务中,ModernBERT 表现出色。在没有进行长上下文微调时,虽然优于短上下文模型和 NomicBERT,但落后于 GTE-en-MLM;域内评估时两者性能接近,说明 ModernBERT 能够处理长上下文,但可能需要更适配的调优。
- 多向量检索:在 ColBERT 设置下,长上下文模型(GTE-en-MLM、NomicBERT 和 ModernBERT)表现都很好,ModernBERT 则领先于其他长上下文模型。这可能得益于长预训练以及局部注意力与 ColBERT 式检索的协同作用。
4. 自然语言理解
在 GLUE 测试中,ModernBERT 展现了卓越的 NLU 能力。ModernBERT-base 超越所有现有基础模型,成为首个超越 DeBERTaV3-base 的 MLM 训练模型;ModernBERT-large 是第二好的大型编码器,参数更少但处理速度快,接近 DeBERTaV3-large 的性能。
5. 代码任务
在编程任务中,ModernBERT 在代码到文本(CodeSearchNet)和长上下文混合设置(StackQA)中表现出色。由于它是唯一在训练数据中包含编程数据的评估编码器,这表明其对代码的理解能力并未影响自然文本处理能力。

五、模型效率
(一)评估设置
为了衡量模型在不同序列长度下的推理效率,创建了 4 组合成文档集:固定短上下文(512 令牌)、固定长上下文(8192 令牌)、以及两种可变长度(分别以 256 和 4096 令牌为中心的正态分布)。在 NVIDIA RTX 4090 上评估每秒处理的令牌数,对 GTE-en-MLM 模型分别做了原生和使用 xformers 库增强的设置,所有测试重复十次取平均值。
(二)评估结果
效率方面,ModernBERT 同样表现卓越。
在短上下文处理上,虽然比原始 BERT 和 RoBERTa 稍慢,但比其他近期编码器快;在长上下文处理上,则显著快于所有竞争编码器。处理速度分别比同类模型中第二快的编码器快 2.65 倍(BASE)和 3 倍(LARGE)。
在可变长度输入方面,ModernBERT 比 GTE-en-MLM 更高效,尤其在长上下文时优势明显,这要归功于其局部注意力机制。
同时,ModernBERT 在内存利用上也表现出色。在两种模型尺寸下,它都是最内存高效的。例如,ModernBERT-base 在处理长上下文输入时,可处理的最大批量大小是其他模型的两倍;ModernBERT-large 在短上下文输入时虽略逊于原始 BERT-large,但在处理长上下文输入时,其可处理的批量大小比其他大型模型大至少 60%。

结论
ModernBERT 可以说是仅编码器模型领域的一次重大升级。它在广泛的分类和检索任务上超越了现有模型,同时实现了更快的处理速度和更高的内存效率。通过采用 GeGLU 层、RoPE 位置嵌入和交替局部-全局注意力等现代架构改进,结合大规模训练数据和优化的训练策略,模型在多个基准测试中取得了领先成绩。原生支持 8192 令牌的长序列处理,为长上下文应用提供了有力支撑。
当然,它也存在一些局限性:目前仅适用于英语、可能存在数据偏差、有潜在的有害内容生成风险、训练目标单一、以及模型参数缩放方面的探索还不够充分。但总体来看,ModernBERT 确实推动了编码器技术的显著发展,为自然语言处理任务提供了一个更强大、更高效的工具。
