Este es el repositorio donde puede encontrar Modernbert, nuestros experimentos para llevar a Bert a la modernidad a través de cambios de arquitectura y escala.
Este repositorio introduce notablemente Flexbert, nuestro enfoque modular para los bloques de construcción del codificador y depende en gran medida de los archivos de configuración .yaml para crear modelos. La base de código se basa en Mosaicbert, y específicamente la bifurcación no femenida que le brinda atención al Flash 2, bajo los términos de su licencia Apache 2.0. ¡Extendemos nuestro agradecimiento a MOSAICML por comenzar el trabajo para modernizar los codificadores!
Este readme es muy básico y todavía está en construcción. Mejorará con más reproducibilidad y documentación en el Año Nuevo, a medida que nos preparamos para más sutilezas de codificadores después del lanzamiento de Modernbert antes de las vacaciones. Por ahora, ¿en su mayoría esperamos ver qué construye la gente con el? Puntos de control modelo).
Para obtener más detalles sobre lo que trae este repositorio, recomendamos leer nuestra publicación de blog de lanzamiento para una descripción general de alto nivel y nuestra preimpresión ARXIV para obtener más detalles técnicos.
Todo el código utilizado en este repositorio es el código utilizado como parte de nuestros experimentos para evaluaciones de pre-entrenamiento y pegamento, no hay salsa de entrenamiento secreto no comprometida.
Este es el repositorio de investigación de Modernbert, centrado en la capacitación previa y las evaluaciones. Si está buscando la versión Huggingface, diseñada para integrarse con cualquier oleoducto común, diríjase a la colección Modernbert en Huggingface
Modernbert es una colaboración entre la respuesta. Ai, Lighton y sus amigos.
Hemos documentado completamente el entorno utilizado para entrenar Modernbert, que se puede instalar en una máquina equipada con GPU con los siguientes comandos:
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 capacitación aprovecha mucho el marco del compositor. Toda la capacitación se configuran a través de archivos YAML, de los cuales puede encontrar ejemplos en la carpeta yamls . Le recomendamos encarecidamente que consulte uno de los Yamls de ejemplo, como yamls/main/flex-bert-rope-base.yaml , para explorar las opciones de configuración.
Las evaluaciones de pegamento para un modelo Modernbert entrenado con este repositorio se pueden ejecutar con run_evals.py , proporcionándole un punto de control y una configuración de entrenamiento. Para evaluar modelos no modernos, debe usar glue.py junto con un Yaml de entrenamiento ligeramente diferente, de los cuales puede encontrar ejemplos en la carpeta yamls/finetuning .
La subcarpeta examples contiene scripts para modelos de recuperación de entrenamiento, tanto modelos densos basados en transformadores de oraciones y modelos Colbert a través de la biblioteca Pylate:
examples/train_pylate.py : el código de Boilerplate para entrenar un modelo de Colbert con Pylate basado en Modernbert.examples/train_st.py : el código de Boilerplate para entrenar un modelo de recuperación densa basado en Modernbert con transformadores de oraciones.examples/evaluate_pylate.py : el código de Boilerplate para evaluar un modelo Colbert basado en Modernbert con pilato.examples/evaluate_st.py : el código de Boilerplate para evaluar un modelo de recuperación densa basado en Modernbert con transformadores de oraciones. Si usa Modernbert en su trabajo, ya sea los modelos lanzados, los puntos de control intermedios (lanzamiento pendiente) o este repositorio de capacitación, cite:
@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 } ,
}