ModernBERT 开发者指南
bert24 项目地址: https://gitcode.com/gh_mirrors/be/bert24
1. 项目介绍
ModernBERT 是一个开源项目,旨在通过架构改进和规模扩展将 BERT 模型现代化。该项目引入了 FlexBERT,这是一种模块化的编码器构建块方法,并大量使用 .yaml 配置文件来构建模型。ModernBERT 的代码库基于 MosaicBERT,并对其进行了扩展,以支持 Flash Attention 2。该项目由 Answer.AI、LightOn 和其他合作伙伴共同开发。
2. 项目快速启动
环境搭建
在 GPU 配置的机器上,使用以下命令创建和激活环境:
conda env create -f environment.yaml
conda config --set channel_priority flexible
conda activate bert24
如果使用 H100s,需要克隆并构建 Flash Attention 3:
git clone https://github.com/Dao-AILab/flash-attention.git
cd flash-attention/hopper
python setup.py install
安装 Flash Attention 2:
pip install "flash_attn==2.6.3" --no-build-isolation
模型训练
训练过程依赖于 composer
框架,并通过 YAML 文件进行配置。以下是一个启动训练的例子:
composer main.py yamls/main/modernbert-base.yaml
数据准备
项目提供了两种数据集类:
StreamingTextDataset
:继承自StreamingDataset
,支持 MDS、CSV/TSV 或 JSONL 格式,适用于本地数据。NoStreamingDataset
:需要解压缩的 MDS 格式数据,可以通过src/data/mds_conversion.py
进行解压缩。
根据数据访问方式选择合适的类,并在数据加载器中设置 streaming
参数。
模型评估
GLUE 评估可以通过 run_evals.py
脚本进行,需要提供模型检查点和训练配置。
3. 应用案例和最佳实践
检索模型训练
项目中的 examples
文件夹包含了训练检索模型的脚本,包括基于 Sentence Transformers 的密集模型和基于 PyLate 的 ColBERT 模型。
- 训练 ModernBERT-based ColBERT 模型:
# train_pylate.py
- 训练 ModernBERT-based 密集检索模型:
# train_st.py
模型评估
评估 ModernBERT-based ColBERT 模型:
# evaluate_pylate.py
评估 ModernBERT-based 密集检索模型:
# evaluate_st.py
4. 典型生态项目
ModernBERT 可以与多种开源项目集成,例如 HuggingFace Transformers,以支持更广泛的应用场景。开发者可以参考以下项目来构建自己的应用:
- HuggingFace Transformers:用于集成 ModernBERT 模型到各种 NLP 管道中。
- Sentence Transformers:用于训练和评估密集检索模型。
- PyLate:用于训练和评估 ColBERT 模型。
通过以上指南,开发者可以快速上手 ModernBERT,并在实际项目中应用这些先进的模型。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考