
僅使用一個bash命令,可以從擁抱表集線器上的每個蒙版語言模型中創建蒸餾模型。
特徵:
首先,克隆項目並安裝依賴項。
# clone project
git clone https://github.com/iPieter/universal-distillation
# install project
cd universal-distillation
pip install -e .
pip install -r requirements.txt在本教程中,我們將向您展示如何從命令行設置蒸餾任務。您需要兩件事:
bert-base-uncased模型。我們將使用Europarl語料庫的英語部分。這是由專業口譯員和翻譯人員創建的歐洲法庭的非常高質量的平行語料庫。如今的語言語料庫也很小,只有114 MB,但是對於我們的蒸餾教程來說還可以。
wget https://opus.nlpl.eu/download.php ? f = Europarl/v8/mono/en.txt.gz -O en.txt.gz
gunzip en.txt.gz現在,數據已解開並存儲在文件en.txt中。
現在我們有了數據,我們可以開始培訓。下載教師模型將自動發生,因此無需手動執行此操作。如果您覺得這需要太長時間,而您只想嘗試培訓,例如以獲得時間安排,則可以添加--limit_train_batches N 。這將每個時期限制為訓練期間的N批次。
python universal_distillation/distillation.py
--batch_size 8
--gpus 1
--max_epochs 3
--save_dir my_distilled_model/
--teacher bert-base-uncased
--data en.txt一旦您運行該命令,後台就會發生一些事情。首先,該圖書館創建了一個學生和一個教師模型。老師是bert-base-uncased ,學生將使用與老師相同的體系結構,只有頭的數量較小:6而不是12。當然,您可以將不同的和較大的老師與較小的學生搭配,但表現會有很大差異。
其次,HuggingFace庫下載了教師模型和Tokenizer。第三,數據集是從磁盤加載的,並使用令牌儀初始化,請注意令牌化本身默認情況下發生。最後,蒸餾循環開始。
最後,您可以將模型與HuggingFace庫一起使用!來自學生的所有文件(Pytorch模型和令牌)都保存在我們之前定義的文件夾中: my_distilled_model/ 。您可以直接從此文件夾中導入模型,並僅使用3行測試蒙版的語言建模任務:
from transformers import pipeline
p = pipeline ( "fill-mask" , model = "my_distilled_model/" )
p ( "This is a [MASK]." )儘管這是一個嚴格的例子,但這通常足以創建您自己的域名模型。在這種情況下,是
您還可以使用偽透明度進行內在評估。您需要指定老師和蒸餾模型,但是如果您只運行評估,則可以為兩個參數提供目標模型。
python universal_distillation/evaluation.py
--gpus=0
--limit_test_batches=500
--teacher=pdelobelle/robbert-v2-dutch-base
--data=data/oscar_dutch/nl_dedup_part_2.txt
--checkpoint=DTAI-KULeuven/robbertje-39-gb-non-shuffled該代碼庫也用於我們的ECML-PKDD 2022紙,在其中我們將語言模型的知識蒸餾與公平的約束結合在一起。我們在本文中測試的約束是性別代詞的寬闊替代,但該代碼支持任何單次替代。可以通過定義要均衡的標誌來添加這些蒸餾過程。例如, he和she擁有2016年和2002年的令牌IDS,因此我們可以與兩個令牌定義替代對。兩個令牌上的概率都得到了均衡。
您可以通過修改universal-distillation/distillation.py圍繞第90行添加令牌。在創建BaseTransformer模型時,請不要忘記還包括約束。
constraints = [[ 2016 , 2002 ]] # she # he
model = BaseTransformer ( args . teacher , constraints = constraints , ** vars ( args ))