Este é o repositório em que você pode encontrar o Modernbert, nossos experimentos para trazer Bert à modernidade por meio de mudanças de arquitetura e escala.
Este repositório apresenta visivelmente o Flexbert, nossa abordagem modular para os blocos de construção do codificador e depende muito de arquivos de configuração .YAML para criar modelos. A base de código se baseia em Mosaicbert e, especificamente, o garfo não montado trazendo a atenção do flash 2, nos termos de sua licença Apache 2.0. Estendemos nossos agradecimentos ao Mosaicml por iniciar o trabalho sobre os codificadores modernizadores!
Este readme é muito barebones e ainda está em construção. Isso melhorará com mais reprodutibilidade e documentação no Ano Novo, à medida que nos preparamos para mais gentilezas do codificador após o lançamento pré-holides de Modernbert. Por enquanto, estamos ansiosos para ver o que as pessoas constroem com o? pontos de verificação do modelo).
Para mais detalhes sobre o que esse repositório traz, recomendamos a leitura de nossa postagem no blog de lançamento para uma visão geral de alto nível e nossa pré-impressão do ARXIV para obter mais detalhes técnicos.
Todo o código usado neste repositório é o código usado como parte de nossos experimentos para avaliações de pré-treinamento e cola, não há molho de treinamento secreto não comprometido.
Este é o repositório de pesquisa para Modernbert, focado em pré-treinamento e avaliações. Se você está procurando a versão Huggingface, projetada para se integrar a qualquer pipeline comum, vá para a coleção Modernbert no Huggingface
Modernbert é uma colaboração entre Answer.ai, Lighton e Friends.
Documentamos totalmente o ambiente usado para treinar o Modernbert, que pode ser instalado em uma máquina equipada com GPU com os seguintes 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 O treinamento aproveita fortemente a estrutura do compositor. Todo o treinamento é configurado por meio de arquivos YAML, dos quais você pode encontrar exemplos na pasta yamls . Nós o incentivamos a conferir um dos exemplos de iamls, como yamls/main/flex-bert-rope-base.yaml , para explorar as opções de configuração.
As avaliações de cola para um modelo Modernbert treinadas com este repositório podem ser executadas com via run_evals.py , fornecendo um ponto de verificação e uma configuração de treinamento. Para avaliar os modelos não modernos, você deve usar glue.py em conjunto com uma YAML de treinamento ligeiramente diferente, da qual você pode encontrar exemplos na pasta yamls/finetuning .
A subpasta examples contém scripts para modelos de recuperação de treinamento, ambos modelos densos com base em transformadores de sentenças e modelos de Colbert através da biblioteca Pylate:
examples/train_pylate.py : o código da caldeira para treinar um modelo de Colbert baseado em Modernbert com Pylate.examples/train_st.py : O código da caldeira para treinar um modelo de recuperação dense baseado em Modernbert com transformadores de frases.examples/evaluate_pylate.py : o código da caldeira para avaliar um modelo de Colbert baseado em Modernbert com pilato.examples/evaluate_st.py : o código da caldeira para avaliar um modelo de recuperação dense baseado em Modernbert com transformadores de frases. Se você usar o Modernbert em seu trabalho, sejam os modelos lançados, os pontos de verificação intermediários (liberação pendente) ou este repositório de treinamento, 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 } ,
}