ModernBERT 为我们带来了哪些启示?

当谷歌在 2018 年推出 BERT 模型时,恐怕没有料到这个 3.4 亿参数的模型会成为自然语言处理领域的奠基之作。

六年后的今天,面对动辄千亿参数的大语言模型浪潮,Answer.AI、LightOn与 HuggingFace 联手打造的 ModernBERT 却选择了一条返璞归真的道路:通过架构创新,将大语言模型的先进经验移植到小型模型中,让 4 亿参数的小模型迸发出超越预期的性能。

为了深入了解 ModernBERT 的独特之处,本文将对其与两个经典模型:jina-XLM-RoBERTa (jina-embeddings-v3 背后的多语言基础模型) 和 RoBERTa-large 进行全面的对比分析。

三大模型概览

ModernBERT(2024 年 12 月)

由 Answer.AI、LightOn 与 HuggingFace 联合研发,这个新生代小模型融合了多项前沿技术:采用 RoPE 旋转位置编码,支持 8,192 token 的长上下文窗口;集成 GeGLU 激活层,在保持计算效率的同时提升模型表现。

jina-XLM-RoBERTa(2024 年 9 月)

基于 Meta 的 XLM-RoBERTa改进的多语言文本向量模型。原始 XLM-RoBERTa 使用 XLM 大型多语言数据集增强了 RoBERTa,而 jina-XLM-RoBERTa 引入了长上下文训练,整合 RoPE 编码和支持 FlashAttention-2 加速。这个模型是 jina-embeddings-v3 的基础。

RoBERTa-large(2019 年 7 月)

由 Meta 开发的 BERT 增强版本,3.55 亿参数。采用了动态掩码技术,训练数据量级显著提升,在 GLUE、SQuAD、RACE 等权威榜单保持优势,胜任文本分类、问答系统等 NLP 核心任务。

本文将从架构设计、效率优化和应用场景这三个维度,深入对比分析这三个模型,希望能帮助开发者们更好地理解 ModernBERT 的成功之道,并为 BERT 系列模型的未来发展提供一些启发。

我们还将分享 jina-embeddings-v3 的开发经验,并展望下一代 jina-embeddings-v4jina-reranker-v3 的优化方向。

ModernBERT 的参数效率

作为首个成功借鉴大模型技术经验的小型架构,ModernBERT 在参数利用效率上展现了 3 大创新策略:

策略一:深而窄的架构

虽然 ModernBERT 的模型层数有所增加,达到 28 层,但其参数量(约 4 亿)与 RoBERTa-large(约 3.55 亿)基本持平,而 jina-XLM-RoBERTa 由于需要支持 89 种语言,其参数量达到了 5.5 亿。

outside_default.png

这里暗藏着一个反直觉的设计策略:对于中小规模模型,深度(层数)比宽度(隐藏层维度)更能有效提升性能。深而窄的模型架构能在保持总参数量稳定的情况下,获得更强的抽象特征提取能力。

通过下表对比可以看到设计巧思,transformer 的大部分参数来自注意力层和全连接层。而 ModernBERT 将单层宽度从 4,096 压缩至 2,624,再通过增加 4 层深度补偿性能。

be88aeecc288f48b8942b07012ad0d5d.png

这种设计思路与 Meta 的 MobileLLM 研究结论高度一致:当模型尺寸较小时,深度带来的信息处理增益显著优于宽度扩展。 本质上,通过更多 transformer 层处理信息的能力比拥有更宽的层进行并行处理更有价值。

让我们看看这种深而窄架构的性能数据。

outside_default.png

实测数据显示,在保持参数量级相近的前提下,深而窄架构的 ModernBERT 在检索任务(MRR@10)和语义相似度计算(STS)等核心场景中,性能优于传统浅而宽架构的竞品模型。

f166b47e6ff473c6afc9c6d162f29146.png

jina-XLM-RoBERTa 为例,它在 RoBERTa-large 浅而宽的架构基础上,将词汇表从 5 万扩大到了 25 万个 token,并使用了更多的数据进行训练。尽管如此,ModernBERT 在性能上仍然略胜一筹,这有力地表明了架构上的改变确实能在效率方面带来显著的提升。

策略二:精准控制词汇表规模

在 Transformer 架构中,词表参数量由公式决定:词汇表参数量 = 词元数量 × 隐藏层维度,以 jina-XLM-RoBERTa 为例:25 万词元 × 1,024 维度 = 2.56 亿参数。光是词汇表编码就得用掉 2.56 亿个参数,这还没开始处理任何实际的语言任务呢!

outside_default.png
不同分词器对词汇表规模的影响

如上图所示,Transformer 模型的第一层,通过一个权重矩阵(即词汇权重)把词元映射为隐藏状态。如果直接使用全部 UTF-8 码点, 共 1112064 个,再乘上 1024 维的隐藏层,光是词元转换就得耗费 11.4 亿个参数。

虽说对于那种参数量上千亿的大型语言模型(LLM)来说,这点开销还能接受,但对于参数规模小于 100 亿的模型来说,相当于直接浪费了 90% 的算力资源。这也是 BPE(字节对编码)等分词算法成为行业标配的根本原因,它们能把常见的 UTF-8 码点合并成一个词元,节省不少参数。

但关键是:词汇表权重不参与注意力计算,本质上只是一个静态的查找表。对于参数量受限的小模型(SLM),过大的词表会严重挤占核心模块的资源。

测评结果也印证了这一点,只支持英语的 ModernBERT-large 模型规模虽小,却在性能上超越了支持多语言的 jina-XLM-RoBERTa。因为 jina-XLM-RoBERTa 为了支持 89 种语言,把 47% 的参数都分配到词汇表编码上了。而 ModernBERT 通过精简词汇表,在保证性能优势的同时,实现了更快的推理速度,特别适合那些资源敏感的场景。

因此,如果我们只考虑核心模型参数,不包括词汇权重,你会发现 ModernBERT 的实际计算能力远超它的竞争对手!在真正的语言建模上,ModernBERT 比 jina-XLM-RoBERTa 多了 19% 的参数,比 RoBERTa-large 也多了 15%。

55e8a4cdf32618972e3616d9b9d4cc58.png

策略三:渐进式参数空间扩展

在构建 jina-BERT-v2 过程时,我们发现从头训练小语言模型(SLM)代价实在太高了,随着模型参数增多,训练需要的计算资源快速增加。在计算资源有限的情况下,导致训练周期延长和试错迭代速度变慢。

ModernBERT 的解决方案很巧妙,提出了一种基于参数空间扩展(Weight Tiling)的渐进式初始化方案,利用已经训练好的模型权重来初始化更大规模的模型,目的是让未训练的模型参数保留部分理解能力。

这个思路借鉴了 DeepMind 的 Gopher 和微软的 Phi-2,但这是首次将其系统应用于 SLM 训练优化,并取得了显著效果。

097262d2bcec48abcb10acfff9ac511e.png

基于基础模型的参数拓展策略

深度维度扩展(层数扩展):

  • 以 22 层的 ModernBERT-base 作为基座模型。

  • 借鉴 Gopher 的深度初始化策略,将模型扩展到 28 层。

  • 新增的 6 层 (23-28 层) 直接继承了基座模型对应层的权重,实现深度的快速扩展。

宽度维度扩展(参数量扩展)

  • 每层的权重矩阵采用 Phi-2 的中心平铺方法。

  • 将基座模型的权重矩阵放置在 ModernBERT-large 权重矩阵的中心位置。

  • 边缘区域则通过循环填充基座模型的参数进行初始化。

这种初始化策略策略的核心优势在于:ModernBERT-large 无需从零训练,而是通过利用小版本模型已学习到的知识,从而实现模型的热启动(Warm Start)。实践证明,这种方法在扩展较大规模的语言模型时非常有效。

我们观察到,热启动模型能快速从参数激增导致的高初始损失中恢复,迅速逼近基座模型的损失水平。通过该方法,能够将 4.17 亿参数的模型扩展超 3 倍,且性能始终优于同规模的从头训练的模型。并且,这种优势不仅体现在训练初期,而是贯穿整个训练周期。 

——《Scaling Language Models: Methods, Analysis & Insights from Training Gopher

循环权重封装不仅是为了方便,更因为它完美契合了注意力矩阵天然具备的周期性特征。Gopher 团队的研究发现,对于参数在 90 亿以下的小型语言模型(SLMs),这种方案能真正发挥威力。但随着模型规模增大,其优势会逐渐减弱。

ModernBERT 的代码建模

ModernBERT 基于其代码优化的分词器和训练数据,在代码理解方面取得了显著进展。这种针对代码处理的微调,在理解和检索任务中均取得了显著性能提升。

我们基于 CodeSearchNet 数据集进行了对比实验,评估模型根据自然语言描述检索对应代码片段的能力。实验中,我们依然是选取了 3 个模型:ModernBERTjina-XLM-RoBERTaRoBERTa-large。结果表明,ModernBERT 在绝大多数子任务中均处于领先地位。

outside_default.png

从技术角度分析,jina-XLM-RoBERTaRoBERTa-large 在预训练阶段均未接触编程语言数据,而 ModernBERT-large 则训练了 2 万亿个 token,其中包含了大量代码。这种对编程语法和模式的接触,使其在代码相关任务中拥有明显优势。

而 jina-XLM-RoBERTa 相对 RoBERTa-large 的微弱优势,可能源于其多语言数据带来的隐式模式泛化能力。

80c37027384d12c87f19e40a0d59d976.png

分词器的优势

ModernBERT 在代码处理方面表现优秀,原因在于它采用了专门针对代码训练的 OLMo Tokenizer,而不是传统 BERT/RoBERTa Tokenizer。

作为模型处理文本的核心组件,分词器承担着将原始文本转化为向量表示的关键任务。其工作原理是通过学习常见字符组合模式,将文本切分为具有语义价值的词元(token),再映射成向量表示,这些词元向量才是模型实际处理的基本单元。

相较于传统分词器可能将代码标识符(如 init)错误切分为 in+it,导致语义完整性受损,ModernBERT 的分词器能完整保留编程语义单元,形成符合代码逻辑的词元切分边界。

在处理代码结构特征方面,ModernBERT 也表现出色,以空格处理为例:

017ff8d746c8fa86f49873463381449f.png

对于 Python 等依赖缩进的语言,它可以把前导空格编码为独立 token,能区分 4 空格与 8 空格的缩进层级。相比之下,jina-XLM-RoBERTa 会将连续空格压缩为 _ 符号,而 RoBERTa-large 每个空格都视为独立的 token。

这种差异直接影响了模型输入质量:ModernBERT 获得的是精准连贯的代码表征,而其他模型处理的则是碎片化、语义模糊的词元序列,最终导致代码理解效果存在显著差异。

ModernBERT 的长文本处理能力

ModernBERT 在长文本建模领域实现技术突破,其核心优势源于:① 基于 3000 亿 token 超大规模语料构建的长文档训练体系(8192 token 长样本占比超四成)② 融合全局-局部感知的混合注意力架构。

为验证模型性能,我们在 MLDR 多语言长文本建模基准测试集(涵盖 13 种语言)开展对比实验。受限于当前版本的语言支持,我们只选取英语子集,此外实验对象限定为同属 8K 长上下文处理能力的 ModernBERT 与 jina-XLM-RoBERTa(RoBERTa-large 因 512 token 长度限制未纳入对比)。

034b59f96cdea79d5d88198ef2f3023f.png

ModernBERT 的性能优势不仅源于大量的长文本训练数据,杀手锏在于其独创的注意力双轨机制。和 jina-XLM-RoBERTa 在每层都铺满计算成本高昂的全局注意力不同,ModernBERT 采用了更高效的交替策略:每 3 层部署全局注意力,RoPE 旋转基数 θ = 16 万,其余层则采用 128 token 滑动窗口的局部注意力,θ = 10 万。

这种混合交替的注意力架构在维持模型性能的同时,显著降低了计算复杂度。实验数据显示,其训练时间较全局注意力方案减少约 40%,为长文本模型的实用化提供了新范式。

完整实现参见论文:https://arxiv.org/pdf/2412.13663

苦涩的教训?

传统认知里,AI 的发展范式始终被「Scaling Law」和「Bitter Lesson」所主导 —— 人们坚信,模型性能的突破必须依赖参数规模与训练数据的同步扩张。

这一理念也深刻影响了我们的技术路径选择,从语料库的持续拓展到采用 LoRA 进行任务适配的策略,处处彰显着"大力出奇迹"的研发惯性。

但 ModernBERT 的横空出世打破了这一迷思,它证明了 SLM 可以凭借创新的架构设计实现卓越的结果,而不一定要扩大参数规模。

最新发布的 Stella Embeddings 技术报告进一步印证:通过提升数据利用效率,现有规模的嵌入模型仍有巨大优化空间,根本无需盲目扩张语料库或堆砌参数。

🔗: https://arxiv.org/pdf/2408.11868

837f254bc72912714a1d7f0bbd096070.png

向量模型的 Scaling Law, 数据来源于 MTEB 排行榜前 100 名模型,
已剔除闭源产品及异常数据。

图中展示了英语任务中 MTEB 评测指标与向量模型参数量的关系。每个点代表一个向量模型,其中多语言模型以青色标注。值得注意的是,jina-embeddings-v3 在同等规模模型中表现突出,相较于前代v2版本实现了超线性提升。

展望未来,随着数据使用效率的提升和 ModernBERT 技术的成熟,模型的计算成本和体积都有望继续降低。短期来看,我们可以直接引入论文中提到的轻量级改进方案:比如增加代码训练数据的比例,使用更适合编程语言的分词器。中期,考虑重构转向深而窄的架构,探索较小模型引导大模型的蒸馏技术。

当多模态嵌入模型逐渐成为基础设施之际,如何构建更智能、更快速、且具备多模态处理能力的搜索基座模型,已成为我们面临的长期挑战。这类应用不仅要求模型具备跨模态理解能力,还需要突破超长上下文窗口的效率瓶颈,这仍是亟待解决的技术难点。

结论

在本文中,我们探讨了 ModernBERT 推动 BERT 模型发展的 3 个关键创新:深而窄的架构设计、分词器的优化以及权重平铺的扩展策略。

该模型在仅 1.4 亿参数规模下,性能全面超越参数量达 3.55 亿的 RoBERTa-large 和跨语言标杆 jina-XLM-RoBERTa,揭示了模型架构优化可能比单纯扩大参数规模更具价值。

特别值得一提的是权重平铺技术的成功实践,这种渐进式扩展策略在降低 40% 训练成本的同时,竟还能提升模型性能。加之其紧凑型词汇表和精准优化的组合拳,为资源受限场景下的专用小型语言模型(SLMs)打开了新天地,当硬件红利期逐渐消退时,算法层面的创新正在成为新的破局点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/961092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IO进程寒假作业DAY6

请使用互斥锁 和 信号量分别实现5个线程之间的同步 使用互斥锁 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include &…

揭示Baklib企业内容管理系统CMS的核心功能与应用价值

内容概要 企业内容管理系统&#xff08;CMS&#xff09;是指通过一系列工具和技术&#xff0c;帮助企业高效地创建、存储、管理和分发数字内容的系统。这些系统在现代企业运作中发挥着至关重要的作用&#xff0c;尤其是在信息量大、业务流程复杂的环境中。Baklib作为一个突出的…

冯诺依曼系统及操作系统

目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一…

Vue5---

目录 一、学习目标 1.自定义指令 2.插槽 3.综合案例&#xff1a;商品列表 4.路由入门 二、自定义指令 1.指令介绍 2.自定义指令 3.自定义指令的语法 三、自定义指令-指令的值 1.需求 2.语法 3.代码示例 五、插槽-默认插槽 1.作用 2.需求 4.使用插槽的基本语法…

搭建Spring Boot开发环境

JDK&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…

Visio2021下载与安装教程

这里写目录标题 软件下载软件介绍安装步骤 软件下载 软件名称&#xff1a;Visio2021软件语言&#xff1a;简体中文软件大小&#xff1a;4.28G系统要求&#xff1a;Windows10或更高&#xff0c;64位操作系统硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高下载链接&#…

AI 浪潮席卷中国年,开启科技新春新纪元

在这博主提前祝大家蛇年快乐呀&#xff01;&#xff01;&#xff01; 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其影响力已经渗透到社会生活的方方面面。在中国传统节日 —— 春节期间&#xff0c;AI 技术也展现出了巨大的潜力&#xff0c;为中国年带…

【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试

本文目录 一、进程创建二、GDB多进程调试 一、进程创建 在Linux中输入man 2 fork可以查看man文档中的fork的相关函数信息。 fork的作用就是创建一个子进程。 通过fork我们可以知道&#xff0c;创建子进程的时候&#xff0c;复制父进程的信息。 我们看看翻译的man文档信息&am…

中科大:LLM检索偏好优化应对RAG知识冲突

&#x1f4d6;标题&#xff1a;RPO: Retrieval Preference Optimization for Robust Retrieval-Augmented Generation &#x1f310;来源&#xff1a;arXiv, 2501.13726 &#x1f31f;摘要 &#x1f538;虽然检索增强生成&#xff08;RAG&#xff09;在利用外部知识方面表现出…

Antd React Form使用Radio嵌套多个Select和Input的处理

使用Antd React Form使用Radio会遇到嵌套多个Select和Input的处理&#xff0c;需要多层嵌套和处理默认事件和冒泡&#xff0c;具体实现过程直接上代码。 实现效果布局如下图 代码 <Formname"basic"form{form}labelWrap{...formItemLayoutSpan(5, 19)}onFinish{on…

【deepseek】deepseek-r1本地部署-第一步:下载LM Studio

要下载LM Studio&#xff0c;可以按照以下步骤进行&#xff1a; 一、访问LM Studio官方网站 打开必应&#xff08;注意&#xff01;百度无法打开官网&#xff09;&#xff0c;输入LM Studio的官方网址&#xff1a;LM Studio - Discover, download, and run local LLMs。进入L…

爬虫基础之爬取某基金网站+数据分析

声明: 本案例仅供学习参考使用&#xff0c;任何不法的活动均与本作者无关 网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台! 本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 pip install 模块名 爬取步骤: …

Day27-【13003】短文,什么是栈?栈为何用在递归调用中?顺序栈和链式栈是什么?

文章目录 第三章栈和队列总览第一节栈概览栈的定义及其基本操作如何定义栈和栈的操作&#xff1f;合理的出栈序列个数如何计算&#xff1f;栈的两种存储方式及其实现&#xff1f;顺序栈及其实现&#xff0c;还有对应时间复杂度*、清空栈&#xff0c;初始化栈5、栈空&#xff0c…

Linux:多线程 [1]概念理解

char *str "hello bfr"; *str "H"; "hello bfr"这个字符串存储在虚拟地址空间的代码区中&#xff0c;令str指向它之后当要修改*str时&#xff0c;也就是修改代码区中"hello bfr"位置的值&#xff0c;再将它通过页表映射成物理内存时…

electron typescript运行并设置eslint检测

目录 一、初始化package.json 二、安装依赖 1、安装electron 2、安装typescript依赖 3、安装eslint 三、项目结构 四、配置启动项 一、初始化package.json 我的&#xff1a;这里的"main"没太大影响&#xff0c;看后面的步骤。 {"name": "xlo…

国内优秀的FPGA设计公司主要分布在哪些城市?

近年来&#xff0c;国内FPGA行业发展迅速&#xff0c;随着5G通信、人工智能、大数据等新兴技术的崛起&#xff0c;FPGA设计企业的需求也迎来了爆发式增长。很多技术人才在求职时都会考虑城市的行业分布和发展潜力。因此&#xff0c;国内优秀的FPGA设计公司主要分布在哪些城市&a…

基于微信小程序的电子竞技信息交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(下)

背景介绍 在2024年的亚马逊云科技re:Invent大会上提前预告发布的Stable Diffusion 3.5 Large&#xff0c;现在已经在Amazon Bedrock上线了&#xff01;各位开发者们现在可以使用该模型&#xff0c;根据文本提示词文生图生成高质量的图片&#xff0c;并且支持多种图片风格生成&…

【自学嵌入式(6)天气时钟:软硬件准备、串口模块开发】

天气时钟&#xff1a;软硬件准备、串口模块开发 软硬件准备接线及模块划分ESP8266开发板引脚图软件准备 串口模块编写串口介绍Serial库介绍 近期跟着网上一些教学视频&#xff0c;编写了一个天气时钟&#xff0c;本篇及往后数篇都将围绕天气时钟的制作过程展开。本文先解决硬件…

初始JavaEE篇 —— Spring Web MVC入门(上)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 RequestMappingg 注解介绍 Postman的介绍与使用 PostMapping 与 GetMapping 注解 构造并接收请求 接收简单参数 接收对象…