図 1: 韓国語とフランス語への語彙トリミングの図。
語彙トリミング (VT) は、語彙から無関係なトークンを削除することによって、多言語 LM 語彙をターゲット言語に縮小するモデル圧縮技術です (図 1 を参照)。このリポジトリには、ターゲット言語の多言語 LM 語彙から無関係なトークンを削除する Python ライブラリvocabtrimmer
が含まれています。
図 2: 各多言語 LM のモデル全体のパラメータ数に対する埋め込み行列の比率、および上位 60 語彙を含む VT 後の埋め込み行列。
VT の背後にある動機は、多言語 LM にはすべての言語をカバーするための膨大な語彙があり、その結果、モデルのサイズが大きくなるということです (図 2 を参照)。ただし、実際に単言語タスクで多言語 LM を微調整する場合、これらの語彙の大部分は必要ありません。したがって、そのような未使用の語彙を削除して、モデルのサイズを削減できます。
理論上、VT は既存の多言語 LM を圧縮して、多言語 LM でカバーされる任意の言語で単言語 LM を構築できます。私たちの実験では、VT が元の多言語 LM よりもサイズが小さい (通常、元の語彙サイズの約 50% で十分) 一方で、VT が多言語 LM の元のパフォーマンスを維持できることを示しました。この評価は、7 つの言語で広く使用されている 4 つの多言語 LM のうち、4 つの NLP タスク (2 つの生成タスクと 2 つの分類タスク) にわたって実行されます。最後に、この方法論では、特別に再トレーニングする必要なく単言語モデルとして小さいサイズを維持し、潜在的に有害な社会的バイアスを制限することによって、単言語モデルと多言語世界の両方の長所を維持できることを示します。これらの実験結果と技術的な詳細については、論文「語彙トリミングによる効率的な多言語モデル圧縮、2023 年」をご確認ください。私たちの論文で結果を再現するには、ここをチェックしてください。
ニュース:私たちの論文「語彙トリミングによる効率的な多言語モデル圧縮、2023」が EMNLP 2023 の調査結果に受理されました。
まず pip 経由でlmqg
インストールしましょう。
pip install vocabtrimmer
vocabtrimmer
による語彙のトリミング
図 3: フランス語でのタスクの微調整の例における FT 前と FT 後の比較。
デフォルトでは、VT は mC4 に依存して、言語固有のトークンのセットと各トークンの頻度を検索します。 VT の実際の使用法は、微調整前 (FT 前 VT) または微調整後 (FT VT 後) に VT を多言語 LM に適用することです。一般的にはどちらもうまく機能するはずですが、VT 後の方がより堅牢であり、追加のトレーニングが必要ないため、モデルがすでにある場合に適しています。それ以外の場合は、モデルを微調整する時間を短縮できるため、pre-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
の語彙を上位 60,000 の語彙を持つフランス語にトリミングします。
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
、Python 経由で多言語 LM をトリミングするための API を提供します。次のコマンドはgoogle/mt5-small
の語彙を上位 60,000 の語彙を持つフランス語にトリミングします。
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",
}