模型:
Dr-BERT/DrBERT-4GB
近年来,预训练语言模型(PLMs)在各种自然语言处理(NLP)任务中取得了最佳性能。虽然最初的模型是在通用领域数据上训练的,但专门针对特定领域的模型已经出现,以更有效地处理特定领域的任务。在本文中,我们首次提出了在医学领域对法语PLMs的原始研究。我们比较了在公开数据和医疗机构的私有数据上训练的PLMs的性能。我们还评估了一组生物医学任务上的不同学习策略。最后,我们发布了第一个针对法语生物医学领域的专用PLMs,称为DrBERT,以及这些模型所训练的最大的医学数据语料库,该语料库可以免费使用。
DrBERT是基于开源的法语医学文本数据集NACHOS训练的法语RoBERTa模型。使用了来自不同公开和私有数据源的不同量的数据训练了多个模型,使用了法国国家科学研究中心(CNRS)的 Jean Zay 法国超级计算机。出于防止泄漏个人信息和遵循欧洲GDPR法规的目的,只有使用纯公开数据训练的模型的权重被公开发布:
Model name | Corpus | Number of layers | Attention Heads | Embedding Dimension | Sequence Length | Model URL |
---|---|---|---|---|---|---|
DrBERT-7-GB-cased-Large | NACHOS 7 GB | 24 | 16 | 1024 | 512 | 1235321 |
DrBERT-7-GB-cased | NACHOS 7 GB | 12 | 12 | 768 | 512 | 1236321 |
DrBERT-4-GB-cased | NACHOS 4 GB | 12 | 12 | 768 | 512 | 1237321 |
DrBERT-4-GB-cased-CP-CamemBERT | NACHOS 4 GB | 12 | 12 | 768 | 512 | 1238321 |
DrBERT-4-GB-cased-CP-PubMedBERT | NACHOS 4 GB | 12 | 12 | 768 | 512 | 1239321 |
您可以按照以下方式使用DrBERT:
加载模型和分词器:
from transformers import AutoModel, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("Dr-BERT/DrBERT-7GB") model = AutoModel.from_pretrained("Dr-BERT/DrBERT-7GB")
执行掩码填充任务:
from transformers import pipeline fill_mask = pipeline("fill-mask", model="Dr-BERT/DrBERT-7GB", tokenizer="Dr-BERT/DrBERT-7GB") results = fill_mask("La patiente est atteinte d'une <mask>")
accelerate @ git+https://github.com/huggingface/accelerate@66edfe103a0de9607f9b9fdcf6a8e2132486d99b datasets==2.6.1 sentencepiece==0.1.97 protobuf==3.20.1 evaluate==0.2.2 tensorboard==2.11.0 torch >= 1.3
从 Zenodo 下载完整的NACHOS数据集,并将其放置在from_scratch或continued_pretraining目录中。
注意:此步骤仅适用于从头开始的预训练,如果您想要进行持续预训练,只需下载与所需模型和分词器相对应的模型即可。在这种情况下,您只需转到HuggingFace Hub,选择一个模型(例如 RoBERTa-base )。最后,您需要通过单击“使用Transformers”按钮并获取Git链接git clone https://huggingface.co/roberta-base下载整个模型/分词器存储库。
根据./corpus.txt文件上的数据,使用./build_tokenizer.sh构建分词器。
首先,将shell脚本中的tokenizer_path字段替换为您在使用HuggingFace Git之前下载或构建的分词器目录的路径。
运行./preprocessing_dataset.sh,使用给定的分词器生成分词化的数据集。
首先,根据您的计算能力更改--ntasks=128,以匹配您需要的GPU数量,这在名为run_training.sh的shell脚本中。在我们的情况下,我们使用了由32个拥有4个GPU的节点的128个V100 32GB GPU(--ntasks-per-node=4和--gres=gpu:4)进行了20小时(--time=20:00:00)的训练。
如果您使用的是Jean Zay,您还需要将-A标志更改为与能够运行作业的@gpu配置文件中的一个匹配的配置文件。您还需要将所有数据集、分词器、脚本和输出移动到$SCRATCH磁盘空间上,以避免IO问题对其他用户造成影响。
一旦更新了SLURM参数,您必须将--model_type="camembert"标志中的模型架构名称更改为正在尝试训练的架构的规格。在我们的情况下,RoBERTa的序列长度为514,词汇量为32005(32K个分词器令牌和5个模型架构令牌),开始句子标记(BOS)和结束句子标记(EOS)的标识符分别为5和6。更改
然后,转到./from_scratch/目录。
运行sbatch ./run_training.sh将训练作业发送到SLURM队列中。
一旦更新了SLURM参数,您必须将想要从中开始的模型/分词器的路径--model_name_or_path=/--tokenizer_name=更改为从第3.3节中的HuggingFace Git下载的模型的路径。
然后,转到./continued_pretraining/目录。
运行sbatch ./run_training.sh将训练作业发送到SLURM队列中。
您只需按照HuggingFace团队 here 给出的任何示例中的指导,将模型名称更改为Dr-BERT/DrBERT-7GB。
@inproceedings{labrak2023drbert, title = {{DrBERT: A Robust Pre-trained Model in French for Biomedical and Clinical domains}}, author = {Labrak, Yanis and Bazoge, Adrien and Dufour, Richard and Rouvier, Mickael and Morin, Emmanuel and Daille, Béatrice and Gourraud, Pierre-Antoine}, booktitle = {Proceedings of the 61th Annual Meeting of the Association for Computational Linguistics (ACL'23), Long Paper}, month = july, year = 2023, address = {Toronto, Canada}, publisher = {Association for Computational Linguistics} }