圖 1:韓語和法語詞彙修剪示意圖。
詞彙修剪 (VT)是一種模型壓縮技術,它透過從詞彙表中刪除不相關的標記,將多語言 LM 詞彙表縮減為目標語言(見圖 1)。該儲存庫包含一個 python 庫vocabtrimmer
,它可以從目標語言的多語言 LM 詞彙中刪除不相關的標記。
圖 2:每個多語言 LM 的嵌入矩陣與整個模型參數數量的比率以及前 60 個詞彙的 VT 後的嵌入矩陣。
VT 背後的動機是多語言 LM 擁有涵蓋所有語言的龐大詞彙量,導致模型規模較大(見圖 2)。然而,當我們在實踐中針對單語言任務微調多語言 LM 時,我們並不需要大量詞彙。因此,我們可以刪除這些未使用的詞彙表以減少模型大小。
理論上,VT 可以壓縮任何現有的多語言 LM,以多語言 LM 涵蓋的任何語言建立單語 LM。在我們的實驗中,我們表明 VT 可以保留多語言 LM 的原始效能,同時比原始多語言 LM 的大小更小(通常約為原始詞彙量的 50% 左右就足夠了)。該評估是在七種語言的四個廣泛使用的多語言 LM 中對四個 NLP 任務(兩個生成任務和兩個分類任務)進行的。最後,我們表明,這種方法可以透過保持單語言模型的小規模來維持單語言和多語言世界的最佳性能,而不需要專門重新訓練它們,甚至限制潛在有害的社會偏見。請檢查這些實驗結果以及我們論文「An Efficient Multilingual Language Model Compression through Vocabulary Trimming, 2023」中的技術細節。要重現我們論文中的結果,請查看此處。
新聞:我們的論文「An Efficient Multilingual Language Model Compression through Vocabulary Trimming, 2023」被 EMNLP 2023 的調查結果接受。
我們先透過 pip 安裝lmqg
。
pip install vocabtrimmer
vocabtrimmer
進行詞彙修剪
圖 3:法語任務微調範例中 FT 前與 FT 後的比較。
預設情況下,VT 依賴 mC4 來尋找一組特定於語言的標記以及每個標記的頻率。 VT的實際用法是在微調之前(pre-FT VT)或微調之後(post-FT VT)將其應用於多語言LM。一般來說,兩者都應該工作得很好,但 VT 後更強大,如果您已經有一個模型,那麼它很適合,因為不需要額外的培訓。否則,預 FT VT 將是一種選擇,因為它可以減少微調模型的時間。請參閱我們論文中 FT 前/後 VT 的比較。
vocabtrimmer
提供以下命令列介面來修剪多語言 LM 詞彙。
vocabtrimmer-trimming -m MODEL -l LANGUAGE -p PATH_TO_SAVE [-v TARGET_VOCAB_SIZE] [--repo-id REPO_ID]
arguments:
-m, --model, model name on huggingface or path to local model
-l, --language, language code of tokens to keep
-p, --path-to-save, directly to save model
-v, --target-vocab-size, [optinoal] vocab size after mining
--repo-id, [optinoal] huggingface repo id to push after trimming
以下命令將google/mt5-small
的詞彙量修剪為具有前 60k 詞彙量的法語詞彙量。
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
多語言LM的詞彙量通常為250k(XLM-R、mBART、mT5),我們建議將目標詞彙量設定為60k,即有效詞彙量。小於 60k 的詞彙量可能會導致表現下降,但在某些情況下可以保留原始表現(請查看我們的論文)。如果未指定目標詞彙表大小,它將使用 mC4 資料集或指定目標語料庫中出現的整個詞彙表。
vocabtrimmer
提供了一個 API,可以透過 python 修剪多語言 LM。以下命令將google/mt5-small
的詞彙量修剪為具有前 60k 詞彙量的法語詞彙量。
import vocabtrimmer
trimmer = vocabtrimmer . VocabTrimmer ( "google/mt5-small" )
trimmer . trim_vocab (
path_to_save = "ckpts/mt5-small-trimmed-fr-60000" ,
language = "fr" ,
target_vocab_size = 60000 )
如果您使用任何資源,請引用以下論文,並在需要時查看重現模型的程式碼。
@inproceedings{ushio2023efficient,
title = "An Efficient Multilingual Language Model Compression through Vocabulary Trimming",
author = "Ushio, Asahi and
Zhou, Yi and
Camacho-Collados, Jose",
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP): Findings",
month = Dec,
year = "2023",
address = "",
publisher = "Association for Computational Linguistics",
}