ONNX 模型库
返回模型

说明文档

ModernBERT

目录

  1. 分词器修复
  2. 模型概述
  3. 使用方法
  4. 评估
  5. 局限性
  6. 训练
  7. 许可证
  8. 引用

分词器修复

本仓库是原始 ModernBERT Large 的一个分支。

由于在词元分类任务上性能不佳——如此处所报告——对分词器进行了以下修复:

  • add_prefix_space 设置为 True
  • tokenizer_class 设置为 RobertaTokenizerFast

更多关于词元分类任务的实验可以在我的 ModernBERT NER 仓库中找到。

模型概述

ModernBERT 是一个现代化的双向仅编码器 Transformer 模型(BERT 风格),在 2 万亿个英文和代码数据词元上进行了预训练,原生上下文长度可达 8,192 个词元。ModernBERT 采用了以下最新的架构改进:

  • 旋转位置编码 用于长上下文支持。
  • 局部-全局交替注意力 用于提高长输入的效率。
  • 去填充和 Flash Attention 用于高效推理。

ModernBERT 的原生长上下文长度使其非常适合需要处理长文档的任务,例如大型语料库中的检索、分类和语义搜索。该模型在大型文本和代码语料库上进行了训练,适用于广泛的下游任务,包括代码检索和混合(文本+代码)语义搜索。

它提供以下尺寸:

有关 ModernBERT 的更多信息,我们推荐阅读我们的发布博客文章以获取高层次概述,以及我们的 arXiv 预印本以获取深入信息。

ModernBERT 是 Answer.AILightOn 和朋友们合作的成果。

使用方法

您可以从 v4.48.0 版本开始直接使用 transformers 库来使用这些模型:

pip install -U transformers>=4.48.0

由于 ModernBERT 是一个掩码语言模型(MLM),您可以使用 fill-mask 流水线或通过 AutoModelForMaskedLM 加载它。要将 ModernBERT 用于分类、检索或问答等下游任务,请按照标准的 BERT 微调方法进行微调。

⚠️ 如果您的 GPU 支持,我们建议将 ModernBERT 与 Flash Attention 2 一起使用以达到最高效率。为此,请按如下方式安装 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 ."
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 ."
results = pipe(input_text)
pprint(results)

注意: 与一些早期的 BERT 模型不同,ModernBERT 不使用词元类型 ID。大多数下游用法与 Hugging Face Hub 上的标准 BERT 模型相同,只是您可以省略 token_type_ids 参数。

评估

我们在一系列任务上评估了 ModernBERT,包括自然语言理解(GLUE)、通用检索(BEIR)、长上下文检索(MLDR)和代码检索(CodeSearchNet 和 StackQA)。

主要亮点:

  • 在 GLUE 上,ModernBERT-base 超过了其他类似规模的编码器模型,而 ModernBERT-large 仅次于 Deberta-v3-large。
  • 对于通用检索任务,ModernBERT 在 BEIR 上的单向量(DPR 风格)和多向量(ColBERT 风格)设置中都表现良好。
  • 由于训练数据中包含了代码数据,以 ModernBERT 为主干在 CodeSearchNet 和 StackQA 上取得了新的最先进代码检索结果。

基础模型

模型 IR (DPR) IR (DPR) IR (DPR) IR (ColBERT) IR (ColBERT) NLU 代码 代码
BEIR MLDR_OOD MLDR_ID BEIR MLDR_OOD GLUE CSN SQA
BERT 38.9 23.9 32.2 49.0 28.1 84.7 41.2 59.5
RoBERTa 37.7 22.9 32.8 48.7 28.2 86.4 44.3 59.6
DeBERTaV3 20.2 5.4 13.4 47.1 21.9 88.1 17.5 18.6
NomicBERT 41.0 26.7 30.3 49.9 61.3 84.0 41.6 61.4
GTE-en-MLM 41.4 34.3 44.4 48.2 69.3 85.6 44.9 71.4
ModernBERT 41.6 27.4 44.0 51.3 80.2 88.4 56.4 73.6

大型模型

模型 IR (DPR) IR (DPR) IR (DPR) IR (ColBERT) IR (ColBERT) NLU 代码 代码
BEIR MLDR_OOD MLDR_ID BEIR MLDR_OOD GLUE CSN SQA
BERT 38.9 23.3 31.7 49.5 28.5 85.2 41.6 60.8
RoBERTa 41.4 22.6 36.1 49.8 28.8 88.9 47.3 68.1
DeBERTaV3 25.6 7.1 19.2 46.7 23.0 91.4 21.2 19.7
GTE-en-MLM 42.5 36.4 48.9 50.7 71.3 87.6 40.5 66.9
ModernBERT 44.0 34.3 48.6 52.4 80.4 90.4 59.5 83.9

表 1:所有模型在各项任务上的结果概览。CSN 指 CodeSearchNet,SQA 指 StackQA。MLDRID 指域内(在训练集上微调)评估,MLDR_OOD 指域外评估。

ModernBERT 的强劲结果,加上其在长上下文输入上的高效运行时,表明通过现代架构选择和在多样化数据源上进行广泛预训练,仅编码器模型可以得到显著改进。

局限性

ModernBERT 的训练数据主要是英文和代码,因此其他语言的性能可能较低。虽然它可以高效处理长序列,但使用完整的 8,192 个词元窗口可能比短上下文推理更慢。与任何大型语言模型一样,ModernBERT 可能会产生反映其训练数据中存在的偏见的表示。在依赖关键或敏感输出之前,请先进行验证。

训练

  • 架构:仅编码器,带 GeGLU 激活函数的 Pre-Norm Transformer。
  • 序列长度:预训练至 1,024 个词元,然后扩展到 8,192 个词元。
  • 数据:2 万亿个英文文本和代码词元。
  • 优化器:StableAdamW,采用梯形学习率调度和 1-sqrt 衰减。
  • 硬件:在 8x H100 GPU 上训练。

更多详情请参阅论文。

许可证

我们在 Apache 2.0 许可证下发布 ModernBERT 模型架构、模型权重和训练代码库。

引用

如果您在研究中使用 ModernBERT,请引用:

@misc{modernbert,
      title={Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference}, 
      author={Benjamin Warner and Antoine Chaffin and Benjamin Clavié and Orion Weller and Oskar Hallström and Said Taghadouini and Alexis Gallagher and Raja Biswas and Faisal Ladhak and Tom Aarsen and Nathan Cooper and Griffin Adams and Jeremy Howard and Iacopo Poli},
      year={2024},
      eprint={2412.13663},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2412.13663}, 
}

stefan-it/ModernBERT-large-tokenizer-fix

作者 stefan-it

fill-mask transformers
↓ 1 ♥ 2

创建时间: 2025-05-08 09:07:08+00:00

更新时间: 2025-07-16 16:20:57+00:00

在 Hugging Face 上查看

文件 (16)

.gitattributes
README.md
config.json
model.safetensors
onnx/model.onnx ONNX
onnx/model_bnb4.onnx ONNX
onnx/model_fp16.onnx ONNX
onnx/model_int8.onnx ONNX
onnx/model_q4.onnx ONNX
onnx/model_q4f16.onnx ONNX
onnx/model_quantized.onnx ONNX
onnx/model_uint8.onnx ONNX
pytorch_model.bin
special_tokens_map.json
tokenizer.json
tokenizer_config.json