🚀 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},
}