图 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",
}