ONNX 模型库
返回模型

说明文档

ModernBERT

目录

  1. 模型概述
  2. 使用
  3. 评估
  4. 局限性
  5. 训练
  6. 许可证
  7. 引用

模型概述

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

  • 旋转位置嵌入(RoPE),支持长上下文。
  • 局部-全局交替注意力,提高长输入的效率。
  • 填充去除和 Flash Attention,实现高效推理。

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

提供以下尺寸:

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

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

使用

你可以直接从 transformers 库 4.48.0 版本开始使用这些模型:

pip install -U transformers>=4.48.0

由于 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)

# 获取掩码的预测:
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)

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

评估

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

关键亮点:

  • 在 GLUE 上,ModernBERT-base 超越其他同尺寸编码器模型,ModernBERT-large 仅次于 Deberta-v3-large。
  • 对于通用检索任务,ModernBERT 在单向量(DPR 风格)和多向量(ColBERT 风格)设置的 BEIR 上表现良好。
  • 由于训练数据中包含代码数据,ModernBERT 作为骨干网络在 CodeSearchNet 和 StackQA 上取得了新的代码检索最优结果。

Base 模型

模型 IR (DPR) IR (DPR) IR (DPR) IR (ColBERT) IR (ColBERT) NLU Code Code
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

Large 模型

模型 IR (DPR) IR (DPR) IR (DPR) IR (ColBERT) IR (ColBERT) NLU Code Code
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。MLDR_ID 指域内(在训练集上微调后)评估,MLDR_OOD 指域外。

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

局限性

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

训练

  • 架构:纯编码器、Pre-Norm Transformer,使用 GeGLU 激活函数。
  • 序列长度:预训练时最长 1,024 个标记,然后扩展到 8,192 个标记。
  • 数据:2 万亿个英文文本和代码标记。
  • 优化器:StableAdamW,使用梯形学习率调度和 1-sqrt 衰减。
  • 硬件:在 8 块 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}, 
}

answerdotai/ModernBERT-large

作者 answerdotai

fill-mask transformers
↓ 294.3K ♥ 461

创建时间: 2024-12-11 15:55:21+00:00

更新时间: 2025-01-15 20:11:27+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