🚀 DistilCamemBERT
CamemBERTの蒸留バージョンであるDistilCamemBERTは、RoBERTaのフランス語モデルで、モデルの複雑さを大幅に削減しながら性能を維持します。
🚀 クイックスタート
私たちは、CamemBERTという名前のRoBERTaフランス語モデルの蒸留バージョンであるDistilCamemBERTを紹介します。蒸留の目的は、モデルの複雑さを大幅に削減しながら性能を維持することです。概念実証はDistilBERT論文に示されており、トレーニングに使用されるコードはDistilBERTのコードに触発されています。
✨ 主な機能
損失関数
蒸留モデル(学生モデル)のトレーニングは、元のモデル(教師モデル)にできるだけ近くなるように設計されています。これを実現するために、損失関数は3つの部分で構成されています。
- DistilLoss: 学生モデルと教師モデルの出力確率間の類似度を、MLMタスクのクロスエントロピー損失で測定する蒸留損失。
- CosineLoss: コサイン埋め込み損失。この損失関数は、学生モデルと教師モデルの最後の隠れ層に適用され、それらの間の共線性を保証します。
- MLMLoss: 最後に、教師モデルの元のタスクで学生モデルを実行するためのマスク言語モデリング(MLM)タスク損失。
最終的な損失関数は、これら3つの損失関数の組み合わせです。以下の重み付けを使用します。
$$Loss = 0.5 \times DistilLoss + 0.3 \times CosineLoss + 0.2 \times MLMLoss$$
データセット
学生モデルと教師モデルの間のバイアスを制限するために、DstilCamemBERTのトレーニングに使用されるデータセットは、camembert-baseのトレーニングと同じです:OSCAR。このデータセットのフランス語部分は、ハードディスク上で約140GBを占めます。
トレーニング
モデルは、nVidia Titan RTX上で18日間事前トレーニングされました。
評価結果
💻 使用例
基本的な使用法
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}]
📚 ドキュメント
引用
@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},
}
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。