license: apache-2.0
datasets:
- Dr-BERT/NACHOS
language:
- fr
library_name: transformers
tags:
- 医学
- 化学
- 生物医学
- 生命科学
widget:
- text: "患者患有疾病。"
DrBERT:面向法语生物医学与临床领域的鲁棒预训练模型
近年来,预训练语言模型(PLMs)在各类自然语言处理(NLP)任务中展现出最佳性能。虽然首批模型基于通用领域数据训练,但专业领域模型的出现能更有效地处理特定场景。本文针对法语医疗领域开展原创性PLMs研究,首次比较了基于网络公开数据与医疗机构私有数据训练的PLMs性能,并在多项生物医学任务上评估了不同学习策略。最终我们发布了法语生物医学领域首个专业PLMs——DrBERT,以及训练这些模型所使用的最大规模开源医疗语料库。
1. DrBERT模型系列
DrBERT是基于法语医疗文本开源语料库NACHOS训练的法语RoBERTa模型。通过法国国家科学研究中心(CNRS)让·泽超级计算机,我们使用不同来源的公开与私有数据训练了多个版本。为遵守欧盟GDPR法规并防止个人信息泄露,仅发布完全基于开源数据训练的模型权重:
模型名称 |
语料库 |
层数 |
注意力头数 |
嵌入维度 |
序列长度 |
模型地址 |
DrBERT-7-GB-cased-Large |
NACHOS 7GB |
24 |
16 |
1024 |
512 |
HuggingFace |
DrBERT-7-GB-cased |
NACHOS 7GB |
12 |
12 |
768 |
512 |
HuggingFace |
DrBERT-4-GB-cased |
NACHOS 4GB |
12 |
12 |
768 |
512 |
HuggingFace |
DrBERT-4-GB-cased-CP-CamemBERT |
NACHOS 4GB |
12 |
12 |
768 |
512 |
HuggingFace |
DrBERT-4-GB-cased-CP-PubMedBERT |
NACHOS 4GB |
12 |
12 |
768 |
512 |
HuggingFace |
2. 使用DrBERT
可通过Hugging Face Transformers库调用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("患者患有<mask>疾病")
3. 基于HuggingFace Transformers从零预训练DrBERT
3.1 安装依赖
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
3.2 下载NACHOS数据集
从Zenodo获取完整NACHOS数据集,放置于from_scratch
或continued_pretraining
目录。
3.3 基于NACHOS构建分词器
注:仅全量预训练需此步骤。若进行持续预训练,只需下载对应模型的HuggingFace仓库(如RoBERTa-base)即可。
运行./build_tokenizer.sh
基于./corpus.txt
构建分词器。
3.4 数据集预处理与分词
修改preprocessing_dataset.sh
中的tokenizer_path
指向分词器路径,运行该脚本生成分词后数据集。
3.5 模型训练
在run_training.sh
中调整SLURM参数:我们使用128块32GB V100 GPU(32个节点,每节点4卡)训练20小时。
3.5.1 全量预训练
进入./from_scratch/
目录,修改--model_type="camembert"
及--config_overrides=
参数(如RoBERTa的序列长度514、词汇量32005等),执行:
sbatch ./run_training.sh
3.5.2 持续预训练
进入./continued_pretraining/
目录,修改--model_name_or_path=
和--tokenizer_name=
指向预训练模型,执行:
sbatch ./run_training.sh
4. 下游任务微调
参考HuggingFace官方文本分类示例,将模型名称替换为Dr-BERT/DrBERT-7GB
即可。
引用BibTeX
@inproceedings{labrak2023drbert,
title = {{DrBERT:面向法语生物医学与临床领域的鲁棒预训练模型}},
author = {Labrak, Yanis and Bazoge, Adrien and Dufour, Richard and Rouvier, Mickael and Morin, Emmanuel and Daille, Béatrice and Gourraud, Pierre-Antoine},
booktitle = {第61届计算语言学协会年会论文集(ACL'23)},
month = 7月,
year = 2023,
address = {加拿大多伦多},
publisher = {计算语言学协会}
}