Dies ist das Repository, in dem Sie Modernbert finden können, unsere Experimente, um Bert über Architekturänderungen und Skalierung in die Moderne zu bringen.
In diesem Repository wird Flexbert, unseren modularen Ansatz für Encoder -Bausteine, spürbar eingebracht und stützt sich stark auf .yaml -Konfigurationsdateien, um Modelle zu erstellen. Die Codebasis baut auf Mosaicbert auf, und insbesondere auf die unmerierigte Gabel, die die Aufmerksamkeit von Flash 2 unter den Bedingungen der Apache 2.0 -Lizenz auf sie lenkt. Wir bedanken uns bei Mosaicml für den Beginn der Arbeit zur Modernisierung von Encodern!
Diese Readme ist sehr Barebones und befindet sich noch im Bau. Es wird sich mit mehr Reproduzierbarkeit und Dokumentation im neuen Jahr verbessern, da wir uns nach der Veröffentlichung von Modernbert nach der Veröffentlichung von Modernbert auf weitere Entzugs vorbereiten. Im Moment freuen wir uns hauptsächlich darauf zu sehen, was die Leute mit dem bauen? Modellkontrollpunkte).
Weitere Informationen zu dem, was dieses Repository mit sich bringt, empfehlen, unseren Release-Blog-Beitrag für einen Überblick über hochrangige Ebene und unseren Arxiv-Präprint für weitere technische Details zu lesen.
Der in diesem Repository verwendete Code ist der Code, der im Rahmen unserer Experimente sowohl für die Bewertung vor dem Training als auch für Kleber verwendet wird. Es gibt keine nicht übereinstimmende geheime Trainingssauce.
Dies ist das Forschungsrepository für Modernbert, der sich auf die Vorausbildung und Bewertung konzentriert. Wenn Sie nach der Huggingface -Version suchen, die für eine gemeinsame Pipeline integriert ist, besuchen Sie bitte die Modernbert -Kollektion über Huggingface
Modernbert ist eine Zusammenarbeit zwischen Antwort.ai, Lighton und Freunden.
Wir haben die Umgebung, die zum Training von Modernbert verwendet wird, vollständig dokumentiert, die mit den folgenden Befehlen auf einer GPU-ausgestatteten Maschine installiert werden kann:
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 Das Training nutzt stark den Komponisten -Framework. Alle Schulungen werden über YAML -Dateien konfiguriert, von denen Sie Beispiele im yamls -Ordner finden können. Wir empfehlen Ihnen dringend, einen der Beispiele zu überprüfen, wie YAMLS wie yamls/main/flex-bert-rope-base.yaml , um die Konfigurationsoptionen zu untersuchen.
Kleberbewertungen für ein mit diesem Repository ausgebildeter Modernbert -Modell können über run_evals.py ausgeführt werden, indem es einen Checkpoint und eine Trainingskonfiguration zur Verfügung stellt. Um nicht-moderne Modelle zu bewerten, sollten Sie in Verbindung mit einem etwas yamls/finetuning Training YAML den glue.py verwenden.
Der examples -Unterordner enthält Skripte für Training -Abrufmodelle, beide dichte Modelle, die auf Satztransformatoren und Colbert -Modellen über die Pylate -Bibliothek basieren:
examples/train_pylate.py : Der Boilerplate-Code zum Training eines Colbert-Modells auf Modernbert mit Pylat.examples/train_st.py : Der Boilerplate-Code zum Training eines modernbert-basierten dichten Abrufmodells mit Satztransformatoren.examples/evaluate_pylate.py : Der Boilerplate-Code zur Bewertung eines Colbert-Modells auf Modernbert mit Pylat.examples/evaluate_st.py : Der Boilerplate-Code zur Bewertung eines modernbert-basierten dichten Abrufmodells mit Satztransformatoren. Wenn Sie Modernbert in Ihrer Arbeit verwenden, sei es die veröffentlichten Modelle, die Zwischenkontrollpunkte (ausstehend) oder dieses Trainingsrepository, bitte geben Sie an:
@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 } ,
}