🚀 DrBERT:面向生物医学和临床领域的强大法语预训练模型
近年来,预训练语言模型(PLMs)在自然语言处理(NLP)任务中取得了优异的成绩。最初的模型是在通用领域数据上进行训练的,而如今,为了更有效地处理特定领域的问题,专门的预训练模型应运而生。本文提出了一项关于法语医学领域预训练语言模型的原创研究。我们首次比较了在网络公共数据和医疗机构私有数据上训练的预训练语言模型的性能,并在一组生物医学任务上评估了不同的学习策略。最后,我们发布了首个法语生物医学领域的专业预训练语言模型 DrBERT,以及这些模型所使用的最大规模的免费许可医学数据语料库。
✨ 主要特性
- 领域针对性:DrBERT 是专门为法语生物医学和临床领域设计的预训练模型,能更有效地处理该领域的特定任务。
- 多数据源训练:使用来自网络公共数据和医疗机构私有数据进行训练,提升模型的泛化能力和专业性。
- 模型多样:提供了不同数据量训练的模型,如
DrBERT - 7 - GB - cased - Large
、DrBERT - 7 - GB - cased
等,满足不同需求。
📦 安装指南
安装依赖
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
下载 NACHOS 数据集文本文件
从 Zenodo 下载完整的 NACHOS 数据集,并将其放置在 from_scratch
或 continued_pretraining
目录中。
💻 使用示例
基础用法
加载模型和分词器:
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>")
高级用法
从头开始预训练 DrBERT 分词器和模型
基于 NACHOS 从头构建自己的分词器
注意:此步骤仅在从头开始预训练时需要。如果要进行继续预训练,只需从 HuggingFace Hub 下载对应模型和分词器(例如 [RoBERTa - base](https://huggingface.co/roberta - base)),点击 Use In Transformers
按钮获取 Git 链接并克隆整个模型/分词器仓库(git clone https://huggingface.co/roberta - base
)。
使用 ./build_tokenizer.sh
在文件 ./corpus.txt
的数据上从头构建分词器。
数据集的预处理和分词
首先,将 shell 脚本中的 tokenizer_path
字段替换为之前使用 HuggingFace Git 下载的分词器目录路径或自己构建的分词器路径。
运行 ./preprocessing_dataset.sh
以使用给定的分词器生成分词后的数据集。
模型训练
首先,在 run_training.sh
脚本中更改所需的 GPU 数量 --ntasks = 128
以匹配您的计算能力。例如,使用 32 个节点(每个节点 4 个 GPU,即 --ntasks - per - node = 4
和 --gres = gpu:4
)的 128 个 V100 32GB GPU 进行 20 小时的训练(--time = 20:00:00
)。
如果使用 Jean Zay,还需要更改 -A
标志以匹配您的 @gpu
配置文件。同时,将所有数据集、分词器、脚本和输出移动到 $SCRATCH
磁盘空间,以避免影响其他用户的 IO 性能。
从头开始预训练
更新 SLURM 参数后,更改标志 --model_type = "camembert"
中的模型架构名称,并根据要训练的架构规范更新 --config_overrides =
。例如,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 团队提供的 示例 中将模型名称更改为 Dr - BERT/DrBERT - 7GB
即可。
📚 详细文档
DrBERT 模型
模型名称 |
语料库 |
层数 |
注意力头数 |
嵌入维度 |
序列长度 |
模型链接 |
DrBERT - 7 - GB - cased - Large |
NACHOS 7 GB |
24 |
16 |
1024 |
512 |
[HuggingFace](https://huggingface.co/Dr - BERT/DrBERT - 7GB - Large) |
DrBERT - 7 - GB - cased |
NACHOS 7 GB |
12 |
12 |
768 |
512 |
[HuggingFace](https://huggingface.co/Dr - BERT/DrBERT - 7GB) |
DrBERT - 4 - GB - cased |
NACHOS 4 GB |
12 |
12 |
768 |
512 |
[HuggingFace](https://huggingface.co/Dr - BERT/DrBERT - 4GB) |
DrBERT - 4 - GB - cased - CP - CamemBERT |
NACHOS 4 GB |
12 |
12 |
768 |
512 |
[HuggingFace](https://huggingface.co/Dr - BERT/DrBERT - 4GB - CP - CamemBERT) |
DrBERT - 4 - GB - cased - CP - PubMedBERT |
NACHOS 4 GB |
12 |
12 |
768 |
512 |
[HuggingFace](https://huggingface.co/Dr - BERT/DrBERT - 4GB - CP - PubMedBERT) |
📄 许可证
本项目采用 Apache - 2.0 许可证。
📚 引用
@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}
}