Answer.AI 与 LightOn 发布 ModernBERT 编码器模型,支持 8192 序列长度并全面超越 BERT
Finally, a Replacement for BERT: Introducing ModernBERT
Answer.AI 与 LightOn 发布 ModernBERT 编码器模型系列,提供 base(149M 参数)和 large(395M 参数)两个规格,可作为 BERT 类模型的直接替代。
原文详细披露了架构改进、训练数据和实测效率数字,读者可据此评估它在现有 BERT 类工作流中能否直接替换。
终于,BERT 的替代品来了
发布于 2024 年 12 月 19 日
嘉宾
Alexis Gallagher alexisgallagher 关注
嘉宾
嘉宾
嘉宾
Jonathan Whitaker johnowhitaker 关注
* TL;DR
TL;DR
本博客文章介绍了 ModernBERT,这是一个最先进的仅编码器模型系列,在各方面都超越了老一代编码器,具有 8192 的序列长度、更好的下游性能和更快的处理速度。
ModernBERT 可作为任何类 BERT 模型的即插即用替代品,提供 base(149M 参数)和 large(395M 参数)两种模型规模。
点击查看如何配合 transformers 使用这些模型
ModernBERT 将包含在 transformers 的 v4.48.0 版本中。在此之前,需要从 main 分支安装 transformers:
pip install git+https://github.com/huggingface/transformers.git
由于 ModernBERT 是掩码语言模型(MLM),你可以使用 fill-mask pipeline 或通过 AutoModelForMaskedLM 加载它。要将 ModernBERT 用于分类、检索或问答等下游任务,请按照标准的 BERT 微调方法对其进行微调。
⚠️ 如果你的 GPU 支持,我们建议使用带有 Flash Attention 2 的 ModernBERT 以达到最高效率。为此,请按如下方式安装 Flash Attention,然后照常使用模型:
pip install flash-attn
使用 AutoModelForMaskedLM:
from transformers import AutoTokenizer, AutoModelForMaskedLM
model_id = "answerdotai/ModernBERT-base"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForMaskedLM.from_pretrained(model_id)
text = "The capital of France is [MASK]."
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
# To get predictions for the mask:
masked_index = inputs["input_ids"][0].tolist().index(tokenizer.mask_token_id)
predicted_token_id = outputs.logits[0, masked_index].argmax(axis=-1)
predicted_token = tokenizer.decode(predicted_token_id)
print("Predicted token:", predicted_token)
# Predicted token: Paris
使用 pipeline:
import torch
from transformers import pipeline
from pprint import pprint
pipe = pipeline(
"fill-mask",
model="answerdotai/ModernBERT-base",
torch_dtype=torch.bfloat16,
)
input_text = "He walked to the [MASK]."
results = pipe(input_text)
pprint(results)
注意:与一些早期的 BERT 模型不同,ModernBERT 不使用 token type IDs。除了可以省略 token_type_ids 参数外,大多数下游用法与 Hugging Face Hub 上的标准 BERT 模型相同。
引言
BERT 于 2018 年发布(在 AI 领域已是千年之前!),但至今仍被广泛使用:事实上,它目前是 HuggingFace hub 上第二多下载量的模型,每月下载量超过 6800 万次,仅次于另一个为检索而微调的编码器模型。这是因为其仅编码器架构使其非常适合日常出现的各类现实问题,例如检索(如用于 RAG)、分类(如内容审核)和实体抽取(如用于隐私和监管合规)。
终于,6 年之后,我们有了替代品!今天,我们 Answer.AI 和 LightOn(以及朋友们!)发布了 ModernBERT。ModernBERT 是一个新的模型系列,在速度和准确率两方面都对 BERT 及其后辈实现了帕累托改进。该模型借鉴了近年来大语言模型(LLM)研究中的数十项进展,并将其应用于 BERT 风格的模型,包括对架构和训练过程的更新。
我们预计 ModernBERT 将成为当前部署仅编码器模型的众多应用中的新标准,例如 RAG 流水线(检索增强生成)和推荐系统。
除了更快、更准确之外,ModernBERT 还将上下文长度增加到 8k tokens(相比大多数编码器的仅 512),并且是首个在训练数据中包含大量代码的仅编码器模型。这些特性开辟了此前通过开放模型无法触及的新应用领域,例如大规模代码搜索、新的 IDE 功能,以及基于整篇文档检索而非小块检索的新型检索流水线。
但为了解释我们究竟做了什么,让我们先退一步,回顾一下我们走过了怎样的路。
仅解码器模型
近期 LLM 领域备受瞩目的进展出现在 GPT、Llama 和 Claude 等模型中。这些是仅解码器模型,或称生成式模型。它们生成类人内容的能力催生了令人惊叹的新 GenAI 应用领域,如生成艺术和交互式聊天。这些引人注目的应用吸引了大量投资,资助了蓬勃发展的研究,并带来了快速的技术进步。我们所做的,本质上就是把这些进展移植回仅编码器模型。
为什么?因为许多实际应用需要的是一个精简且强悍的模型!而且它不需要是生成式模型。
更直白地说,仅解码器模型对于许多任务来说太大、太慢、太私密且太昂贵。想想最初的GPT-1是一个拥有1.17亿参数的模型。相比之下,Llama 3.1模型拥有4050亿参数,其技术报告描述的数据合成与整理方法过于复杂和昂贵,大多数企业难以复现。因此,要使用这样的模型(如ChatGPT),你需要支付几分钱并等待几秒钟,才能从你无法控制的重量级服务器获得API回复。
当然,这些巨型生成模型的开放式能力意味着,在紧急情况下,你可以将它们用于非生成性或判别性任务,例如分类。这是因为你可以用简单的英语描述一个分类任务,然后……直接让模型进行分类。但是,虽然这种工作流程非常适合原型设计,一旦进入大规模生产,你就不想再支付原型设计的价格了。
围绕GenAI的热门炒作掩盖了仅编码器模型的作用。这些才是实用语言处理的主力军,是目前在许多科学和商业应用中实际用于此类工作负载的模型。
仅编码器模型
仅编码器模型的输出是一系列数值(一个嵌入向量)。可以说,编码器模型不是用文本回答,而是将其“答案”字面编码成这种压缩的数值形式。该向量是模型输入的压缩表示,这就是为什么仅编码器模型有时被称为表示模型。
虽然仅解码器模型(如GPT)可以完成仅编码器模型(如BERT)的工作,但它们受到一个关键约束的阻碍:由于它们是生成模型,在数学上“不允许”“偷看”后面的词元。它们只能向后看。这与仅编码器模型形成对比,后者经过训练,每个词元可以向前和向后(双向)看。它们就是为此而构建的,这使它们在所做的事情上非常高效。
基本上,像OpenAI的O1这样的前沿模型就像法拉利SF-23。它是工程学的明显胜利,为赢得比赛而设计,这就是我们谈论它的原因。但它需要一支专门的维修团队来更换轮胎,而且你无法为自己购买一辆。相比之下,BERT模型就像本田思域。它也是工程学的胜利,但更为微妙,因为它的设计目标是价格实惠、省油、可靠且极其有用。这就是为什么它们无处不在。
你可以通过多种方式看到这一点。
支持生成模型:理解表示模型(仅编码器)普遍性的一种方法是注意它们与仅解码器模型一起使用的频率,以构建安全高效的系统。
最明显的例子是 RAG。系统不再依赖 LLM 训练到模型参数中的知识,而是使用文档存储为 LLM 提供与查询相关的信息。但当然,这只是把问题推迟了。如果 LLM 不知道哪些文档与查询相关,那么系统就需要某种其他流程来选择这些文档?它将需要一个足够快速且廉价的模型,以便能够用来编码使 LLM 有用所需的大量信息。这个模型通常是类似 BERT 的仅编码器模型。
另一个例子是监督架构,其中可能会使用一个廉价的分类器来确保生成的文本不违反内容安全要求。
简而言之,每当你在部署中看到仅解码器模型时,系统中也很有可能同时包含一个仅编码器模型。但反过来则不成立。
基于编码器的系统:在 GPT 出现之前,社交媒体以及 Netflix 等平台上就已经有内容推荐。这些场所、搜索和其他地方也有广告定向。还有用于垃圾邮件检测、滥用检测等的内容分类。这些系统并非构建在生成式模型之上,而是构建在表示模型(如仅编码器模型)之上。而所有这些系统仍然存在,并且仍以巨大规模运行。想象一下,全世界每秒有多少广告被定向投放!
下载量:在 HuggingFace 上,RoBERTa 作为领先的基于 BERT 的模型之一,其下载量超过了 HuggingFace 上 10 个最受欢迎的 LLM 的总和。事实上,目前仅编码器模型的月下载量合计超过 10 亿次,几乎是仅解码器模型 3.97 亿次月下载量的三倍。事实上,由 ModernBERT 等编码器“基础模型”组成、可供针对其他下游应用进行微调的 fill-mask 模型类别,是总体下载量最高的模型类别。
推理成本:上述情况表明,按每次推理计算,仅编码器模型每年执行的推理次数比仅解码器或生成式模型多很多倍。一个有趣的例子是 FineWeb-Edu,其中必须对超过 15 万亿个 token 执行基于模型的质量过滤。FineWeb-Edu 团队选择使用仅解码器模型 Llama-3-70b-Instruct 生成标注,并使用 一个微调过的基于 BERT 的模型 执行大部分过滤。这次过滤耗时 6,000 个 H100 小时,按 HuggingFace Inference Endpoints 每小时 10 美元的价格计算,总计 60,000 美元。另一方面,将 15 万亿个 token 输入流行的仅解码器模型,即使采用成本最低的选项,即使用 Google 的 Gemini Flash 及其每百万 token 0.075 美元的低推理成本,也将花费超过一百万美元!
性能
概览
以下是 ModernBERT 和其他模型在一系列任务上的准确率快照,依据标准学术基准衡量——如你所见,ModernBERT 是唯一一个在每个类别中都是最高分的模型,这使它成为可用于你所有基于编码器任务的唯一模型:
如果你曾在 Kaggle 上参加过 NLP 竞赛,那么你就会知道 DeBERTaV3 多年来一直是冠军之选。但如今不再如此:ModernBERT 不仅是在 GLUE 上击败 DeBERTaV3 的首个 base 规模模型,其内存占用还不到 DeBERTa 的 1/5。
当然,ModernBERT 速度很快。它的速度是 DeBERTa 的 两倍——事实上,在输入长度混合的更常见情况下,速度最高可快 4 倍。其长上下文推理速度比其他高质量模型(如 NomicBERT 和 GTE-en-MLM)快近 3 倍。
ModernBERT 的上下文长度为 8,192 个 token,比大多数现有编码器大 16 倍以上。这一点至关重要,例如在 RAG 流水线中,较小的上下文往往会使分块过小,无法进行语义理解。ModernBERT 也是结合 ColBERT 的最先进长上下文检索器,比其他长上下文模型高出 9 个百分点。更令人印象深刻的是:这个训练速度极快的模型,仅经过简单调优以与其他骨干模型对比,就在长上下文任务上超越了广泛使用的检索模型!
对于代码检索,ModernBERT 独树一帜。实际上没有什么可以与之相比,因为此前从未有过像这样在大量代码数据上训练的编码器模型。例如,在 StackOverflow-QA 数据集(SQA)这个混合了代码和自然语言的混合数据集上,ModernBERT 专门的代码理解能力和长上下文能力使其成为唯一在该任务上得分超过 80 的骨干模型。
这意味着很可能会有全新的应用建立在这一能力之上。例如,想象一个与 AI 连接的 IDE,整个企业代码库都用 ModernBERT 嵌入进行了索引,能够在所有仓库中快速长上下文检索相关代码。或者一个代码聊天服务,能够描述一个集成了数十个独立项目的应用功能是如何工作的。
与主流模型相比,ModernBERT 在检索、自然语言理解和代码检索这三大任务类别中几乎都表现更好。虽然它在一个领域(自然语言理解)略微落后于 DeBERTaV3,但速度快了许多倍。请注意,ModernBERT 与任何其他 base 模型一样,开箱即用只能进行掩码词预测。要执行其他任务,需要像这些 模板中那样对 base 模型进行微调。
与专用模型相比,ModernBERT 在大多数任务上表现相当或更优。此外,ModernBERT 在大多数任务上都比大多数模型更快,并且可以处理多达 8,192 个 token 的输入,比主流模型长 16 倍。
效率
以下是 ModernBERT 和其他解码器模型在 NVIDIA RTX 4090 上的内存(最大批大小,BS)和推理(以每秒千 token 计)效率结果:
你可能首先注意到的是,我们是在一款价格亲民的消费级 GPU 上分析效率,而不是在最新、难以获得的炒作硬件上。首先也是最重要的,ModernBERT 注重的是实用性,而非炒作。
作为这一重点的一部分,这也意味着我们确保 ModernBERT 在实际应用中表现良好,而不仅仅是在基准测试中。这类模型通常只在其最擅长的确切大小——即最大上下文长度——上进行测试。这就是表格中“固定”列所显示的内容。但现实世界中的输入大小各不相同,因此我们努力优化的是这种性能——“可变”列。如您所见,对于可变长度输入,ModernBERT 比所有其他模型都快得多。
对于长上下文输入,我们相信这将成为未来最有价值和最重要应用的基础,ModernBERT 比第二快的模型快 2-3 倍。而且,再次从“实用性”维度来看:ModernBERT 不需要额外沉重的“xformers”依赖,而只需要如今已很常见的 Flash Attention 作为依赖。
此外,得益于 ModernBERT 的高效性,它可以使用比几乎所有其他模型都更大的批量大小,并且可以在更小、更便宜的 GPU 上有效使用。尤其是基础大小的效率,可能使直接在浏览器、手机等上运行的新应用成为可能。
为什么 ModernBERT 是,嗯,现代的?
现在,我们已经说明了为什么我们应该给予编码器模型更多关爱。作为值得信赖、被低估的主力军,自 2018 年的 BERT 以来,它们的更新少得惊人!
更令人惊讶的是:自 RoBERTa 以来,还没有任何编码器能在没有权衡的情况下提供整体改进(花哨的说法是“帕累托改进”):DeBERTaV3 具有更好的 GLUE 和分类性能,但牺牲了效率和检索能力。其他模型,如 AlBERT,或更新的模型,如 GTE-en-MLM,都在某些方面比原始 BERT 和 RoBERTa 有所改进,但在其他方面却退步了。
然而,自这对组合最初发布以来,我们已经学到了大量关于如何构建更好语言模型的知识。如果您使用过 LLM,您会非常清楚:虽然在编码器世界中很少见,但帕累托改进在解码器领域是常态,模型在所有方面都在不断变得更好。而且正如我们现在都学到的:模型改进只有部分是魔法,大部分是工程。
因此,(希望命名恰当的)ModernBERT 项目的目标相当简单:将这种现代工程带入编码器模型。我们通过三个核心方式做到了这一点:
- 现代化的 Transformer 架构
- 特别注重效率
- 现代数据规模与来源
认识新 Transformer,与旧 Transformer 相同
Transformer 架构已占据主导地位,如今绝大多数模型都在使用它。然而,重要的是要记住,Transformer 不止一个,而是有很多个。它们的主要共同点是深信注意力确实是你所需要的一切,因此围绕注意力机制构建了各种改进。
ModernBERT 从 Transformer++(由 Mamba 创造)中获得了巨大灵感,后者首次被 Llama2 系列模型使用。也就是说,我们用改进后的等效模块替换了旧的类 BERT 构建块,即我们:
- 用“旋转位置嵌入”(RoPE)替换旧的位置编码:这让模型在理解词与词之间的相对位置关系方面表现更好,并使我们能够扩展到更长的序列长度。
- 将旧的 MLP 层替换为 GeGLU 层,改进了原始 BERT 的 GeLU 激活函数。
- 通过移除不必要的偏置项来精简架构,让我们能更有效地利用参数预算。
- 在嵌入之后增加一个额外的归一化层,有助于稳定训练。
为赛道升级一辆本田思域
我们已经讨论过这一点:编码器不是法拉利,ModernBERT 也不例外。然而,这并不意味着它不能快。当你上了高速公路,你通常不会去把自己的车换成赛车,而是希望你那辆日常可靠的座驾能轻松达到限速。
事实上,对于我们上面提到的所有应用场景,速度都至关重要。编码器在那些要么必须处理海量数据(使得即使微小的速度提升也能迅速累积)、要么延迟非常重要的用途中非常受欢迎,RAG 就是这种情况。在很多情况下,编码器甚至运行在 CPU 上,如果我们想在合理的时间内得到结果,效率就更加重要。
与研究中的大多数事情一样,我们站在巨人的肩膀上构建,并大量利用 Flash Attention 2 的速度改进。我们的效率提升依赖于三个关键组成部分:交替注意力,以提高处理效率;去填充与序列打包,以减少计算浪费;以及硬件感知的模型设计,以最大化硬件利用率。
全局注意力与局部注意力
ModernBERT 最具影响力的特性之一是交替注意力,而非完全的全局注意力。从技术上讲,这意味着我们的注意力机制每 3 层才关注完整输入(全局注意力),而所有其他层使用滑动窗口,其中每个 token 只关注与自身最近的 128 个 token(局部注意力)。
由于注意力的计算复杂度会随着每增加一个 token 而急剧膨胀,这意味着 ModernBERT 处理长输入序列的速度比其他任何模型都要快得多。
从概念上讲,这之所以有效的原因很简单:想象你在读一本书。对于你读的每一个句子,你都需要完全了解整个情节才能理解其中大部分内容吗(完全的全局注意力)?还是说,只要偶尔回想一下它对主线情节的意义(全局注意力),了解当前章节就足够了(局部注意力)?在绝大多数情况下,是后者。
去填充与序列打包
另一个为 ModernBERT 的效率做出贡献的核心机制是它用于去填充和序列打包。
为了能够在同一批次中处理多个序列,编码器模型要求它们具有相同的长度,以便执行并行计算。传统上,我们依赖填充来实现这一点:找出哪个句子最长,然后添加无意义的 token(填充 token)来填满其他每个序列。
虽然填充解决了问题,但方式并不优雅:大量计算最终被花费和浪费在填充标记上,而这些标记不贡献任何语义信息。

比较填充与序列打包。序列打包(‘去填充’)避免在填充标记上浪费计算,并且每个批次中非填充标记的数量更加一致。样本仍然通过仔细的掩码单独处理。
去填充解决了这个问题:不是保留这些填充标记,而是将它们全部移除,并将它们拼接成批次大小为1的小批次,从而避免所有不必要的计算。如果你使用Flash Attention,我们的去填充实现甚至比之前的方法更快,之前的方法严重依赖于在序列通过模型时进行去填充和重新填充:我们更进一步,引入了自己的去填充实现,严重依赖于Flash Attention的RoPE支持的最新进展。这使得ModernBERT只需去填充一次,并可选地在处理后重新填充序列,从而比之前的方法提速10-20%。
为了进一步加速预训练,去填充在我们的模型中并不孤单,因为我们将其与序列打包结合使用。这里的序列打包是逻辑上的下一步:由于我们将输入拼接成单个序列,而GPU非常擅长并行化,我们希望最大化单次前向模型传递所能挤出的计算效率。为此,我们使用贪心算法将单个序列分组为尽可能接近模型最大输入长度的拼接序列。
关注硬件
最后,ModernBERT效率的第三个方面是硬件设计。
我们试图平衡先前研究强调的两个见解:
- 深而窄 vs 宽而浅:研究表明,具有较窄层的更深模型通常比具有较少、较宽层的浅模型表现更好。然而,这是一把双刃剑:模型越深,其可并行性越低,因此在相同参数数量下运行速度越慢。
- 硬件效率:模型维度需要与GPU硬件良好对齐以实现最大性能,而不同的目标GPU会导致不同的约束。
遗憾的是,没有神奇的配方能让模型在广泛的GPU上运行得同样好,但有一本优秀的指南:The Case for Co-Designing Model Architectures with Hardware,其中详细列出了为给定GPU优化模型架构的方法。我们提出了一种启发式方法,将其方法扩展到一组GPU,同时遵守给定的约束集。逻辑上,第一步是定义上述约束,在我们的案例中:
- 将我们的目标GPU定义为常见的推理GPU(RTX 3090/4090、A10、T4、L4)
- 大致将我们的目标模型大小定义为ModernBERT-Base的1.3亿到1.5亿参数,ModernBERT-Large的3.5亿到4.2亿参数。
- 最终嵌入大小必须匹配原始BERT的维度,base为768,large为1024,以最大化向后兼容性
- 设置在一组GPU中常见的性能约束
随后,我们通过受限网格搜索尝试了多种模型设计,改变层数和层宽。一旦确定了看起来最高效的形状,我们便确认我们的启发式方法与真实世界的 GPU 性能相符,并最终确定了模型设计。
训练
def data(): return ['text', 'bad_text', 'math', 'code']
编码器落后的另一个重要方面是训练数据。这通常被理解为仅指训练数据的规模,但实际情况并非如此:以前的编码器,如 DeBERTaV3,训练时间足够长,甚至可能已经突破了万亿 token 规模!
问题实际上在于训练数据的多样性:许多较旧的模型在有限的语料库上训练,通常由 Wikipedia 和 Wikibooks 组成。这些数据混合非常明显地是单一文本模态:它们只包含高质量的自然文本。
相比之下,ModernBERT 在来自各种英语来源的数据上进行训练,包括网络文档、代码和科学文章。它在2 万亿 token 上进行训练,其中大部分是唯一的,而不是以前编码器中常见的标准 20 到 40 次重复。
其影响立竿见影:在所有现有的开源编码器中,ModernBERT 在编程相关任务上独树一帜。我们特别感兴趣的是,这将带来哪些下游应用,以改进编程助手。
过程
我们坚持原始 BERT 的训练配方,并根据后续工作做了一些轻微升级:我们移除了下一句预测目标,因为后来证明它增加了开销却没有明显收益,并将掩码率从 15% 提高到 30%。
两个模型都采用三阶段过程进行训练。首先,我们在序列长度为 1024 的情况下训练 1.7T token。然后,我们采用长上下文适应阶段,在序列长度为 8192 的情况下训练 250B token,同时通过降低批量大小来保持每批看到的总 token 数基本一致。最后,我们对 500 亿 token 进行退火,这些 token 的采样方式不同,遵循 ProLong 强调的长上下文扩展理想混合。
分三阶段训练是我们确保模型全面优秀的方式,这反映在其结果中:它在长上下文任务上具有竞争力,同时不影响其处理短上下文的能力……
……但它还有另一个好处:在前两个阶段,我们在预热阶段完成后使用恒定学习率进行训练,仅在最后 500 亿 token 上执行学习率衰减,遵循梯形(或预热-稳定-衰减)学习率。更重要的是:受 Pythia 启发,我们将发布这些稳定阶段的每一个中间检查点。我们这样做的主要原因是支持未来的研究和应用:任何人都可以自由地从我们的任何预衰减检查点重新开始训练,并针对其预期用途在适合领域的数据上进行退火!
技巧,一切都关乎技巧!
如果你已经读到这里,你可能已经习惯了:当然,我们在这里也使用技巧来加快速度。确切地说,我们有两个主要技巧。
让我们从第一个非常常见的技巧开始:由于初始训练步骤是在更新随机权重,我们采用批量大小预热:我们从较小的批量大小开始,这样相同数量的令牌会更频繁地更新模型权重,然后逐渐将批量大小增加到最终的训练大小。这显著加快了模型训练的初始阶段,在这个阶段模型学习对语言的最基本理解。
第二个技巧则远不那么常见:通过平铺进行权重初始化以适应更大的模型尺寸,灵感来自微软的Phi系列模型。这个技巧基于以下认识:既然我们有一套现成的(如果我们敢这么说的话)ModernBERT-base权重就在那里,为什么还要用随机数初始化ModernBERT-large的初始权重呢?
事实上,将ModernBERT-base的权重平铺到ModernBERT-large上比从随机权重初始化效果更好。它还有一个额外的好处,即与批量大小预热完美叠加,从而进一步加快初始训练速度。
结论
在这篇博客文章中,我们介绍了ModernBERT模型,这是一个新的最先进的小型高效仅编码器模型系列,终于给BERT进行了一次急需的改造。
ModernBERT表明,仅编码器模型可以通过现代方法得到改进。它们在一些任务上继续提供非常强大的性能,提供了极具吸引力的尺寸/性能比。
最重要的是,我们非常期待看到社区会想出哪些创造性的方式来使用这些模型!为了鼓励这一点,我们开放了一个演示征集活动,截止日期为2025年1月10日:最好的5个演示将被添加到本文的展示部分,并获得100美元(或等值当地货币)的亚马逊礼品卡,以及6个月的HuggingFace Pro订阅!如果你需要一些起步提示,这里有一个我们想到的演示:代码相似度HF空间!记住,这是一个编码器模型,所以所有最酷的下游应用可能都需要某种形式的微调(在真实数据上,或者也许是解码器模型的合成数据上?)。幸运的是,有很多很酷的框架支持微调编码器:🤗Transformers本身用于各种任务,包括分类,GliNER用于零样本命名实体识别,或者Sentence-Transformers用于检索和相似性任务!
链接
使用Sentence Transformers微调ModernBERT
ModernBERT与Sentence Transformers在检索和相似性任务上配合得很好。以下博客文章介绍了如何将ModernBERT(或任何编码器)微调为嵌入、重排序器或稀疏模型:
- 使用Sentence Transformers训练和微调嵌入模型:将ModernBERT微调为密集嵌入模型。
- 使用Sentence Transformers训练和微调重排序器模型:将ModernBERT微调为交叉编码器(重排序器);该文章展示了一个ModernBERT-base重排序器,其性能超过了更大的基线模型。
- 使用Sentence Transformers训练和微调稀疏嵌入模型:将ModernBERT微调为SPLADE稀疏编码器。
LightOn赞助了该项目在Orange Business Cloud Avenue上的计算资源。
本文提到的模型 10
#### Alibaba-NLP/gte-en-mlm-base 填充掩码 • 0.1B•更新于 2024年8月6日• 1.25k• 8
#### FacebookAI/roberta-base 填充掩码 • 0.1B•更新于 2024年2月19日• 7.83M• 667
#### HuggingFaceFW/fineweb-edu-classifier 文本分类 • 0.1B•更新于 2024年11月17日• 27.2k• 228 #### colbert-ir/colbertv2.0 0.1B•更新于 2024年4月5日• 1.73M• 366
#### meta-llama/Llama-3.1-405B 文本生成 • 406B•更新于 2024年9月25日• 89.4k• 991
#### meta-llama/Meta-Llama-3-70B-Instruct 文本生成 • 71B•更新于 2025年6月18日• 120k• 1.53k
#### microsoft/deberta-v3-base 填充掩码 •更新于 2022年9月22日• 2.73M• 447
#### nomic-ai/nomic-bert-2048 填充掩码 • 0.1B•更新于 2025年4月29日• 2.58k• 54
#### openai-community/openai-gpt 文本生成 • 0.1B•更新于 2024年2月19日• 226k• 317
#### sentence-transformers/all-MiniLM-L6-v2 句子相似度 • 22.7M•更新于 6月1日• 240M• 6.17k
本文提到的 Spaces 1
运行中 精选 1.45k #### FineWeb:大规模提炼网络以获取最优质的文本数据 🍷 1.45k 探索并下载 FineWeb 网络规模文本数据集
本文提到的论文 1
BERT:用于语言理解的深度双向 Transformer 预训练 论文 • 1810.04805 •发表于 2018年10月11日• 33
本文提到的合集 1
ModernBERT 合集 通过架构变更和扩展将 BERT 带入现代•3 个项目•更新于 2024年12月19日• 163
更多来自我们博客的文章
llm nlp community ## mmBERT:ModernBERT 走向多语言 *
*
* *
* +2 156 2025年9月9日
llm nlp community ## Ettin Suite:SoTA 配对编码器和解码器 *
* *
*
* +2 83 2025年7月16日
社区
很喜欢,感谢你完成了这项工作、对其进行了说明并提供了新的 BERT 模型。
我想知道,通过将 ModernBERT-Large 蒸馏回 ModernBERT-Base 大小的模型,相比 ModernBERT-Base 能获得多少提升。你觉得这值得做吗?
回复
那可真是一次了不起的蒸馏! @cbonnett
回复
这看起来很棒,这些优化对任何使用微调编码器的人来说都非常受欢迎。
然而,令人失望的是,它只使用英文文本进行了训练,没有提到多语言基准测试,也没有提到计划推出多语言版本。
·
![]()
@erickrf 那可能违背了他们最初创建最高效 BERT 的意图。已经基于 base 训练了一个多语言版本 https://huggingface.co/answerdotai/ModernBERT-base/discussions/60,但它可能并不针对你想要的语言。
![]()
•
做得好!只是分享一下 PangolinGuard,这是一个基于 ModernBERT-large 微调的模型,旨在实现 AI 护栏。尽管体积较小,但该模型在混合基准测试(基于 BIPIA、NotInject、Wildguard-Benign 和 PINT)上的表现已接近 Claude 3.7 和 Gemini Flash 2.0。我相信这可以提供一种轻量、低成本的方法,用于 (i) 添加自定义、自托管的安全检查,(ii) 将对话引导至合规话题,以及 (iii) 在将 AI 流水线连接到外部服务时降低风险。
如果有人想探索使用 ModernBERT 进行 AI 安全,欢迎联系:
📝 文章 | 🤗 hf-space | 代码库
🔥
2
2
回复
![]()
我很高兴看到 vLLM 最近添加了对 ModernBERT 的支持!我写了一篇关于使用它的简短博客指南,见此处。
希望更多推理引擎添加对 ModernBERT 的支持,从而带来更多优秀的微调模型分享!
回复
![]()
很棒的博客文章。
回复
有人尝试过将 ModernBERT 用作 LayoutLM 的基础吗?那会是一个很酷的举动 :-)
回复
ModernBERT 的成功令人欣喜,其在下游任务中的表现令人惊叹。然而,它目前仅适配了英语;我们希望很快能看到它适配中文。
回复
编辑预览
通过拖入文本输入框、粘贴或点击此处来上传图片、音频和视频。
点击或粘贴此处以上传图片
本文提到的模型 10
#### Alibaba-NLP/gte-en-mlm-base 填充掩码 • 0.1B•更新于2024年8月6日• 1.25k• 8
#### FacebookAI/roberta-base 填充掩码 • 0.1B•更新于2024年2月19日• 7.83M• 667
#### HuggingFaceFW/fineweb-edu-classifier 文本分类 • 0.1B•更新于2024年11月17日• 27.2k• 228 #### colbert-ir/colbertv2.0 0.1B•更新于2024年4月5日• 1.73M• 366
#### meta-llama/Llama-3.1-405B 文本生成 • 406B•更新于2024年9月25日• 89.4k• 991
#### meta-llama/Meta-Llama-3-70B-Instruct 文本生成 • 71B•更新于2025年6月18日• 120k• 1.53k
#### microsoft/deberta-v3-base 填充掩码 •更新于2022年9月22日• 2.73M• 447
#### nomic-ai/nomic-bert-2048 填充掩码 • 0.1B•更新于2025年4月29日• 2.58k• 54
#### openai-community/openai-gpt 文本生成 • 0.1B•更新于2024年2月19日• 226k• 317
#### sentence-transformers/all-MiniLM-L6-v2 句子相似度 • 22.7M•更新于6月1日• 240M• 6.17k
本文提到的 Spaces 1
运行中 精选 1.45k #### FineWeb:为大规模提取最优质文本数据而精炼网络 🍷 1.45k 探索并下载 FineWeb 网络规模文本数据集
本文提到的论文 1
BERT:用于语言理解的深度双向 Transformer 预训练 论文 • 1810.04805 •发表于2018年10月11日• 33
本文提到的合集 1
ModernBERT 合集 通过架构变更和扩展将 BERT 带入现代•3 个项目•更新于2024年12月19日• 163
系统主题
公司
网站
来源:Hugging Face:Blog · huggingface.co




