C'est le référentiel où vous pouvez trouver Modernbert, nos expériences pour amener Bert dans la modernité via les changements d'architecture et la mise à l'échelle.
Ce référentiel introduit sensiblement Flexbert, notre approche modulaire des blocs de construction de l'encodeur, et s'appuie fortement sur les fichiers de configuration .yaml pour créer des modèles. La base de code s'appuie sur Mosaicbert, et spécifiquement la fourchette non fusionnée lui portant l'attention du flash 2, en vertu de sa licence Apache 2.0. Nous remercions Mosaicml pour avoir commencé le travail sur la modernisation des encodeurs!
Cette lecture est très nue et est toujours en construction. Il s'améliorera avec plus de reproductibilité et de documentation au cours de la nouvelle année, alors que nous nous préparons pour plus de subtilités d'encodeur après la sortie pré-Holidays de Modernbert. Pour l'instant, nous avons surtout hâte de voir ce que les gens construisent avec le? Points de contrôle du modèle).
Pour plus de détails sur ce que ce référentiel apporte, nous vous recommandons de lire notre article de blog pour un aperçu de haut niveau et de notre préimpression ArXIV pour plus de détails techniques.
Tout le code utilisé dans ce référentiel est le code utilisé dans le cadre de nos expériences pour les évaluations de pré-formation et de colle, il n'y a pas de sauce de formation secrète non engagée.
Il s'agit du référentiel de recherche pour Modernbert, axé sur la pré-formation et les évaluations. Si vous cherchez la version HuggingFace, conçue pour vous intégrer à n'importe quel pipeline commun, veuillez vous rendre à la collection Modernbert sur HuggingFace
Modernbert est une collaboration entre Answer.ai, Lighton et Friends.
Nous avons entièrement documenté l'environnement utilisé pour former Modernbert, qui peut être installé sur une machine équipée de GPU avec les commandes suivantes:
conda env create -f environment.yaml
# if the conda environment errors out set channel priority to flexible:
# conda config --set channel_priority flexible
conda activate bert24
# if using H100s clone and build flash attention 3
# git clone https://github.com/Dao-AILab/flash-attention.git
# cd flash-attention/hopper
# python setup.py install
# install flash attention 2 (model uses FA3+FA2 or just FA2 if FA3 isn't supported)
pip install " flash_attn==2.6.3 " --no-build-isolation
# or download a precompiled wheel from https://github.com/Dao-AILab/flash-attention/releases/tag/v2.6.3
# or limit the number of parallel compilation jobs
# MAX_JOBS=8 pip install "flash_attn==2.6.3" --no-build-isolation La formation fortement exploite le cadre du compositeur. Toutes les formation sont configurées via des fichiers YAML, dont vous pouvez trouver des exemples dans le dossier yamls . Nous vous encourageons fortement à consulter l'un des exemples YAMLS, tels que yamls/main/flex-bert-rope-base.yaml , pour explorer les options de configuration.
Les évaluations de colle pour un modèle Modernbert formé avec ce référentiel peuvent être exécutées avec via run_evals.py , en lui fournissant un point de contrôle et une configuration de formation. Pour évaluer les modèles non modernbert, vous devez utiliser glue.py en conjonction avec un YAML de formation légèrement différent, dont vous pouvez trouver des exemples dans le dossier yamls/finetuning .
Le sous-dossier examples contient des scripts pour des modèles de récupération de formation, à la fois des modèles denses basés sur des transformateurs de phrases et des modèles Colbert via la bibliothèque de pylate:
examples/train_pylate.py : Le code du chaudière pour former un modèle Colbert basé sur Modernbert avec Pylate.examples/train_st.py : le code du chaudron pour former un modèle de récupération dense basé sur Modernbert avec des transformateurs de phrase.examples/evaluate_pylate.py : Le code du chaudron pour évaluer un modèle Colbert basé sur Modernbert avec un pylate.examples/evaluate_st.py : le code du chauffeur pour évaluer un modèle de récupération dense basé sur Modernbert avec des transformateurs de phrase. Si vous utilisez Modernbert dans votre travail, que ce soit les modèles publiés, les points de contrôle intermédiaires (version en attente) ou ce référentiel de formation, veuillez citer:
@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 } ,
}