🚀 DistilCamemBERT
我们推出了著名的 CamemBERT(一种RoBERTa法语模型版本)的蒸馏版本,即DistilCamemBERT。蒸馏的目的是在保留性能的同时大幅降低模型的复杂度。概念验证在 DistilBERT论文 中展示,训练使用的代码受 DistilBERT 代码的启发。
🚀 快速开始
DistilCamemBERT是CamemBERT的蒸馏版本,能在降低复杂度的同时保持性能。下面为你介绍使用方法。
✨ 主要特性
- 蒸馏版本:大幅降低模型复杂度,同时保留性能。
- 多任务表现良好:在多个评估数据集上有不错的f1分数。
📦 安装指南
暂未提及安装步骤,可参考Hugging Face Transformers库的通用安装方法。
💻 使用示例
基础用法
加载DistilCamemBERT及其子词分词器:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("cmarkea/distilcamembert-base")
model = AutoModel.from_pretrained("cmarkea/distilcamembert-base")
model.eval()
...
高级用法
使用管道填充掩码:
from transformers import pipeline
model_fill_mask = pipeline("fill-mask", model="cmarkea/distilcamembert-base", tokenizer="cmarkea/distilcamembert-base")
results = model_fill_mask("Le camembert est <mask> :)")
results
[{'sequence': '<s> Le camembert est délicieux :)</s>', 'score': 0.3878222405910492, 'token': 7200},
{'sequence': '<s> Le camembert est excellent :)</s>', 'score': 0.06469205021858215, 'token': 2183},
{'sequence': '<s> Le camembert est parfait :)</s>', 'score': 0.04534877464175224, 'token': 1654},
{'sequence': '<s> Le camembert est succulent :)</s>', 'score': 0.04128391295671463, 'token': 26202},
{'sequence': '<s> Le camembert est magnifique :)</s>', 'score': 0.02425697259604931, 'token': 1509}]
📚 详细文档
损失函数
蒸馏模型(学生模型)的训练旨在尽可能接近原始模型(教师模型)。为此,损失函数由三部分组成:
- DistilLoss:一种蒸馏损失,通过对MLM任务使用交叉熵损失来衡量学生模型和教师模型输出概率之间的相似度;
- CosineLoss:一种余弦嵌入损失。此损失函数应用于学生模型和教师模型的最后隐藏层,以确保它们之间的共线性;
- MLMLoss:最后是一个掩码语言建模(MLM)任务损失,用于让学生模型执行教师模型的原始任务。
最终的损失函数是这三个损失函数的组合。我们使用以下加权方式:
$$Loss = 0.5 \times DistilLoss + 0.3 \times CosineLoss + 0.2 \times MLMLoss$$
数据集
为了限制学生模型和教师模型之间的偏差,DistilCamemBERT训练使用的数据集与camembert-base训练使用的数据集相同:OSCAR。该数据集的法语部分在硬盘上大约占用140GB。
训练
我们在nVidia Titan RTX上对模型进行了18天的预训练。
评估结果
🔧 技术细节
DistilCamemBERT的蒸馏过程参考了DistilBERT的方法,通过特定的损失函数组合,在降低模型复杂度的同时保留性能。训练使用了与CamemBERT相同的数据集OSCAR,以减少偏差。在nVidia Titan RTX上进行了18天的预训练。
📄 许可证
本项目采用MIT许可证。
📖 引用信息
@inproceedings{delestre:hal-03674695,
TITLE = {{DistilCamemBERT : une distillation du mod{\`e}le fran{\c c}ais CamemBERT}},
AUTHOR = {Delestre, Cyrile and Amar, Abibatou},
URL = {https://hal.archives-ouvertes.fr/hal-03674695},
BOOKTITLE = {{CAp (Conf{\'e}rence sur l'Apprentissage automatique)}},
ADDRESS = {Vannes, France},
YEAR = {2022},
MONTH = Jul,
KEYWORDS = {NLP ; Transformers ; CamemBERT ; Distillation},
PDF = {https://hal.archives-ouvertes.fr/hal-03674695/file/cap2022.pdf},
HAL_ID = {hal-03674695},
HAL_VERSION = {v1},
}