跳到正文
北京时间
原文
Answer.AI 官方研发博客(RSS)· Benjamin Warner, Antoine Chaffin, Benjamin Clavié, Orion Weller, Oskar Hallström, Said Taghadouini, Alexis Gallagher, Raja Biswas, Faisal Ladhak, Tom Aarsen, Nathan Cooper, Griffin Adams, Johno Whitaker, Jeremy Howard, Iacopo Poli·· 2024-12-19精选AI 评分82

Answer.AI 发布 ModernBERT:替代 BERT 的新一代编码器模型

Finally, a Replacement for BERT: Introducing ModernBERT

AI 导读

Answer.AI 与 LightOn 联合发布 ModernBERT,这是一系列旨在取代 BERT 的 SOTA 编码器模型。该模型将 LLM 的最新架构改进(如 Flash Attention、RoPE)应用于编码器,支持 8192 token 上下文长度(远超传统 BERT 的 512),并在速度和下游任务性能上全面超越旧一代模型。提供 base (149M) 和 large (395M) 两种参数规模,已集成至 Hugging Face Transformers v4.48.0,可直接作为 BERT 类模型的即插即用替代品,适用于 RAG、分类及代码检索等场景。

推荐理由

这是六年来首个真正意义上对 BERT 架构的重大升级,解决了长上下文限制并提升了效率,对依赖编码器的 RAG 和搜索系统开发者具有直接的生产力价值。

正文 · AI 翻译

注意

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 管道或通过 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

使用管道:

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。在 Hugging Face Hub 上,大多数下游用法与标准 BERT 模型相同,只是可以省略 token_type_ids 参数。

引言

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)的工作,但它们受到一个关键约束的制约:由于它们是生成模型,从数学上讲,它们“不被允许”“窥视”后面的 token。它们只能向后看。这与仅编码器模型形成对比,后者经过训练,使每个 token 都可以向前和向后(双向)查看。它们就是为此而构建的,这使得它们在做自己擅长的事情时非常高效。

基本上,像 OpenAI 的 O1 这样的前沿模型就像一辆 Ferrari SF-23。它显然是工程上的胜利,为赢得比赛而设计,这也是我们谈论它的原因。但仅仅为了换轮胎就需要一支专门的维修团队,而且你也没法给自己买一辆。相比之下,BERT 模型就像一辆 Honda Civic。它同样是工程上的胜利,但更微妙,因为它被设计得价格可负担、省油、可靠且极其有用。这就是为什么它们无处不在。

你可以通过多种方式来看出这一点。

支持生成模型:理解表征模型(仅编码器)普遍性的一种方式,是注意它们多么频繁地与仅解码器模型协同使用,以构建一个安全且高效的系统。

最明显的例子是 RAG。系统不依赖训练进模型参数中的 LLM 知识,而是使用文档存储为 LLM 提供与查询相关的信息。但当然,这只是把问题推迟了。如果 LLM 不知道哪些文档与查询相关,那么系统就需要某种其他流程来选择这些文档?它将需要一个足够快且足够便宜的模型,以便能够用于编码大量信息,从而使 LLM 有用。这个模型通常就是类似 BERT 的仅编码器模型。关于像 ModernBERT 这样的编码器在 RAG 流程中为何至关重要的更多细节,请参见Benjamin Clavié 的这次演讲。

另一个例子是监督架构,其中可能会使用一个廉价分类器来确保生成的文本不违反内容安全要求。

简而言之,每当你在部署中看到仅解码器模型时,系统中也很有可能同时有一个仅编码器模型。但反过来并不成立。

基于编码器的系统:在 GPT 出现之前,社交媒体以及 Netflix 等平台中就已经有内容推荐。那些场所、搜索以及其他地方中已经有广告定向。已经有用于垃圾邮件检测、滥用检测等的内容分类。这些系统并不是建立在生成模型之上,而是建立在像仅编码器模型这样的表征模型之上。而所有这些系统仍然存在,并且仍以巨大的规模运行。想象一下,全世界每秒有多少广告被定向投放!

下载量:在 HuggingFace 上,RoBERTa 作为领先的基于 BERT 的模型之一,其下载量超过了 HuggingFace 上最受欢迎的 10 个 LLM 的总和。事实上,目前仅编码器模型每月的下载量就超过十亿次,几乎是仅解码器模型每月 3.97 亿次下载量的三倍。实际上,由编码器“基础模型”(如 ModernBERT)组成的 `fill-mask` 模型类别,可供针对其他下游应用进行微调,是整体下载量最高的模型类别。

推理成本:上述情况表明,就每次推理而言,仅编码器模型每年执行的推理次数远多于仅解码器或生成式模型。一个有趣的例子是 FineWeb-Edu,其中需要对超过 15 万亿个 token 执行基于模型的质量过滤。FineWeb-Edu 团队选择使用仅解码器模型 Llama-3-70b-Instruct 生成标注,并使用一个微调过的基于 BERT 的模型执行大部分过滤工作。此过滤过程耗时 6,000 H100 小时,按 HuggingFace Inference Points 每小时 10 美元的价格计算,总计 60,000 美元。另一方面,将 15 万亿个 token 输入流行的仅解码器模型,即使采用成本最低的选项——使用 Google 的 Gemini Flash 及其每百万 token 0.075 美元的低推理成本,也将花费超过一百万美元!

性能

概述

以下是 ModernBERT 和其他模型在一系列任务上的准确率快照,依据标准学术基准衡量——如您所见,ModernBERT 是唯一一个在所有类别中均位列最高分的模型,这使其成为可用于所有基于编码器任务的唯一模型:

如果您曾在 Kaggle 上参加过 NLP 竞赛,那么您会知道 DeBERTaV3 多年来一直是冠军之选。但如今不再如此:ModernBERT 不仅是首个在 GLUE 上击败 DeBERTaV3 的基础规模模型,其内存占用还不到 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 与任何其他基础模型一样,开箱即用只能进行掩码词预测。要执行其他任务,基础模型应像这些样板代码中那样进行微调。

与专用模型相比,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 项目的目标相当简单:将这种现代工程带入编码器模型。我们通过三个核心方式做到了这一点:

  1. 现代化的 Transformer 架构
  2. 特别关注效率
  3. 现代的数据规模与来源

认识新 Transformer,与旧 Transformer 相同

Transformer 架构已占据主导地位,如今绝大多数模型都在使用它。然而,重要的是要记住,Transformer 并非只有一种,而是有很多种。它们的主要共同点是深信注意力确实是你所需要的一切,因此围绕注意力机制构建了各种改进。

ModernBERT 从 Transformer++(由 Mamba 提出)中获得了巨大灵感,后者首次被 Llama2 系列模型使用。也就是说,我们用改进后的等效组件替换了旧的类 BERT 构建块,具体来说,我们:

  • Replace the old positional encoding with “rotary positional embeddings” (RoPE): this makes the model much better at understanding where words are in relation to each other, and allows us to scale to longer sequence lengths.
    • 将旧的 MLP 层替换为 GeGLU 层,改进了原始 BERT 的 GeLU 激活函数。
    • 通过移除不必要的偏置项来简化架构,让我们能更有效地使用参数预算
    • 在嵌入之后添加一个额外的归一化层,有助于稳定训练

为赛道升级一辆本田思域

我们已经讨论过这一点:编码器不是法拉利,ModernBERT 也不例外。然而,这并不意味着它不能快。当你上高速公路时,你通常不会去把你的车换成赛车,而是希望你的日常可靠座驾能够舒适地达到限速。

事实上,对于我们上面提到的所有应用场景,速度都至关重要。编码器在需要处理大量数据(即使微小的速度提升也能迅速累积)或延迟非常重要(如 RAG 中)的用途中非常受欢迎。在许多情况下,编码器甚至在 CPU 上运行,如果我们想在合理的时间内获得结果,效率就更加重要。

与研究中的大多数事情一样,我们站在巨人的肩膀上构建,并大量利用 Flash Attention 2 的速度改进。我们的效率提升依赖于三个关键组件:交替注意力,以提高处理效率;去填充和序列打包,以减少计算浪费;以及硬件感知模型设计,以最大化硬件利用率。

全局和局部注意力

ModernBERT 最具影响力的特性之一是交替注意力,而非完全全局注意力。从技术上讲,这意味着我们的注意力机制每 3 层才关注完整输入(全局注意力),而所有其他层使用滑动窗口,其中每个 token 只关注离自己最近的 128 个 token(局部注意力)。
由于注意力的计算复杂度随着每个额外 token 而急剧增加,这意味着 ModernBERT 可以比其他任何模型更快地处理长输入序列。

在实践中,它看起来像这样:

从概念上讲,这之所以有效的原因很简单:想象你在读一本书。对于你读的每一句话,你需要完全了解整个情节才能理解大部分内容吗(完全全局注意力)?或者,只要偶尔回想一下它对主要情节的意义(全局注意力),了解当前章节就足够了(局部注意力)?在绝大多数情况下,是后者。

去填充和序列打包

另一个有助于 ModernBERT 效率的核心机制是它用于去填充和序列打包。

为了能够在同一批次中处理多个序列,编码器模型要求它们具有相同长度,以便进行并行计算。传统上,我们依赖填充来实现这一点:找出最长的句子,然后添加无意义的 token(填充 token)来填充其他所有序列。

虽然填充解决了问题,但解决得并不优雅:大量计算最终花费和浪费在填充 token 上,这些 token 不贡献任何语义信息。

比较填充与序列打包。序列打包(‘去填充’)避免了在填充 token 上浪费计算,并且每批次的非填充 token 数量更一致。样本仍然通过仔细的掩码单独处理。

去填充(Unpadding)解决了这个问题:我们不再保留这些填充 token,而是将它们全部移除,并以批大小为 1 的方式拼接成小批次,从而避免所有不必要的计算。如果你使用 Flash Attention,我们的去填充实现甚至比之前的方法更快——之前的方法在序列通过模型时严重依赖去填充和重新填充:我们更进一步,引入了自己的去填充实现,大量依赖 Flash Attention 的 RoPE 支持方面的最新进展。这使得 ModernBERT 只需进行一次去填充,并可在处理完成后选择性地重新填充序列,相比之前的方法实现了 10-20% 的加速。

为了进一步加速预训练,去填充在我们的模型中并不孤单,我们将其与序列打包(sequence packing)结合使用。这里的序列打包是合乎逻辑的下一步:由于我们将输入拼接成单个序列,而 GPU 非常擅长并行化,我们希望最大化单次前向模型传递所能榨取的计算效率。为此,我们使用贪心算法将各个序列分组为拼接序列,使其尽可能接近模型的最大输入长度。

关注硬件

最后,ModernBERT 效率的第三个方面是硬件设计。

我们试图平衡先前研究强调的两个洞见:

  1. 深而窄 vs 宽而浅:研究表明,层数更多、层更窄的更深模型,往往比层数更少、层更宽的浅层模型表现更好。然而,这是一把双刃剑:模型越深,可并行性越低,因此在相同参数量下运行越慢。
  2. 硬件效率:模型维度需要与 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’]

想象这个确切的场景,但把 Developers 替换为 Data

编码器一直落后的另一个重要方面是训练数据。这通常被理解为仅仅是训练数据的规模,但实际上并非如此:以前的编码器,如 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 启发,我们将发布这些稳定阶段的每一个中间检查点。我们这样做的主要原因是支持未来的研究和应用:任何人都可以自由地从我们的任何衰减前检查点重新开始训练,并针对其预期用途在适合领域的数据上进行退火!

技巧,一切都是技巧!

如果你已经读到这里,你可能已经习惯了:当然,我们也使用技巧来让事情更快。确切地说,我们有两个主要技巧。

让我们从第一个非常常见的技巧开始:由于初始训练步骤是在更新随机权重,我们采用批量大小预热:我们从较小的批量大小开始,这样相同数量的 token 会更频繁地更新模型权重,然后逐渐增加批量大小到最终训练大小。这显著加快了模型训练的初始阶段,在这个阶段模型学习对语言的最基本理解。

第二个技巧则远不那么常见:通过平铺为更大模型尺寸进行权重初始化,灵感来自微软的 Phi 系列模型。这个技巧基于以下认识:既然我们有一套现成的(如果我们敢这么说的话)ModernBERT-base 权重就在那里,为什么还要用随机数初始化 ModernBERT-large 的初始权重呢?

而事实上,将 ModernBERT-base 的权重平铺到 ModernBERT-large 上比从随机权重初始化效果更好。它还有一个额外的好处,就是能与批量大小预热很好地叠加,从而进一步加快初始训练速度。

结论

在这篇博客文章中,我们介绍了 ModernBERT 模型,这是一个新的最先进的小型高效仅编码器模型系列,终于让 BERT 得到了急需的重做。

ModernBERT 表明,仅编码器模型可以通过现代方法得到改进。它们在某些任务上继续提供非常强大的性能,提供了极具吸引力的尺寸/性能比。

最重要的是,我们非常期待看到社区会想出哪些创造性的方式来使用这些模型!为了鼓励这一点,我们开放了一个演示征集活动,截止日期为 2025 年 1 月 10 日:最好的 5 个演示将被添加到本文的展示部分,并赢得一张 100 美元(或等值当地货币)的 Amazon 礼品卡,以及 6 个月的 HuggingFace Pro 订阅!如果你需要一些入门提示,这里有一个我们想到的演示:代码相似性 HF space!请记住,这是一个编码器模型,所以所有最酷的下游应用很可能都需要某种形式的微调(在真实数据上,或者也许是在解码器模型合成数据上?)。幸运的是,有很多很酷的框架支持微调编码器:🤗Transformers 本身可用于各种任务,包括分类,GliNER 用于零样本命名实体识别,或者 Sentence-Transformers 用于检索和相似性任务!

链接

LightOn 赞助了该项目在 Orange Business Cloud Avenue 上的计算资源。

来源:Answer.AI 官方研发博客(RSS) · answer.ai