说明文档
ModernBERT
目录
模型概述
ModernBERT 是一个现代化的仅编码器双向 Transformer 模型(BERT 风格),在 2 万亿个英文和代码 tokens 上进行预训练,原生上下文长度最高可达 8,192 个 tokens。ModernBERT 采用最新的架构改进,包括:
- 旋转位置编码(RoPE),支持长上下文。
- 局部-全局交替注意力,提高长输入的处理效率。
- 去填充和 Flash Attention,实现高效推理。
ModernBERT 的原生长上下文长度使其非常适合处理需要处理长文档的任务,例如大型语料库中的检索、分类和语义搜索。该模型在大量文本和代码语料库上训练,适用于广泛的下游任务,包括代码检索和混合(文本 + 代码)语义搜索。
该模型提供以下规格:
- ModernBERT-base - 22 层,1.49 亿参数
- ModernBERT-large - 28 层,3.95 亿参数
有关 ModernBERT 的更多信息,我们推荐阅读我们的发布博客文章获取高层概述,以及我们的 arXiv 预印本获取深入信息。
ModernBERT 是 Answer.AI、LightOn 以及朋友们的合作成果。
使用
您可以直接使用 transformers 库(从 v4.48.0 开始)调用这些模型:
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 [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)
注意: 与某些早期 BERT 模型不同,ModernBERT 不使用 token 类型 ID。大多数下游用法与 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 tokens 上下文窗口可能比短上下文推理更慢。与任何大型语言模型一样,ModernBERT 产生的表示可能反映其训练数据中存在的偏见。在依赖关键或敏感输出之前,请务必进行验证。
训练
- 架构:仅编码器、Pre-Norm Transformer,使用 GeGLU 激活函数。
- 序列长度:预训练至 1,024 tokens,然后扩展至 8,192 tokens。
- 数据:2 万亿个英文文本和代码 tokens。
- 优化器: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-base
作者 answerdotai
创建时间: 2024-12-11 11:38:06+00:00
更新时间: 2025-01-15 20:11:48+00:00
在 Hugging Face 上查看