ModernBERT-large:为现代化双向编码器赋能 🚀
模型概述
ModernBERT-large 是一种现代化的双向编码器模型,采用了改进的变换器架构,专为处理长上下文任务而设计。该模型在2万亿个标记的英语和代码数据上进行了预训练,具有高达8192的原生上下文长度。这使得ModernBERT-large在需要处理长文档的任务中表现出色,如检索、分类和大规模语义搜索。
主要特点
- 旋转位置嵌入(RoPE):支持长上下文的处理,增强了模型对词序关系的理解。
- 局部-全局交替注意力:提高了长输入的处理效率,通过在每三层中使用全局注意力,其余层使用局部注意力来优化计算。
- 去填充和闪存注意力:提升了推理效率,减少了计算资源的浪费。
使用方法
您可以通过以下方式直接使用ModernBERT-large模型:
pip install -U transformers>=4.48.0
由于ModernBERT是一个掩码语言模型(MLM),您可以使用fill-mask
管道或通过AutoModelForMaskedLM
加载它。以下是一个使用示例:
from transformers import AutoTokenizer, AutoModelForMaskedLM
model_id = "answerdotai/ModernBERT-large"
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)
注意事项
- 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在BEIR的单向向量(DPR风格)和多向量(ColBERT风格)设置中均表现良好。
- 由于训练数据中包含代码,ModernBERT在CodeSearchNet和StackQA上也取得了新的最先进的代码检索结果。
限制
- ModernBERT的训练数据主要为英语和代码,因此在其他语言上的性能可能较低。
- 尽管能够高效处理长序列,但使用全长8192个标记的窗口可能会比短上下文推理慢。
- 与任何大型语言模型一样,ModernBERT可能会产生反映其训练数据中存在的偏见的表示。在依赖其输出之前,请验证关键或敏感的结果。
训练细节
- 架构:编码器-仅,预归一化变换器,采用GeGLU激活。
- 序列长度:预训练最长为1024个标记,然后扩展到8192个标记。
- 数据: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},
}
结论
ModernBERT-large通过现代化的架构设计和高效的训练过程,为自然语言处理领域带来了新的可能性。它不仅在性能上超越了传统的BERT和RoBERTa模型,还在推理效率和内存使用上实现了显著提升。期待社区利用这一强大的工具,创造出更多创新的应用。