Abbildung 1: Eine Illustration der Vokabelkürzung auf Koreanisch und Französisch.
Vocabulary Trimming (VT) ist eine Modellkomprimierungstechnik, die ein mehrsprachiges LM-Vokabular auf eine Zielsprache reduziert, indem irrelevante Token aus seinem Vokabular gelöscht werden (siehe Abbildung 1). Dieses Repository enthält einen Python-Bibliotheks vocabtrimmer
, der irrelevante Token aus einem mehrsprachigen LM-Vokabular für die Zielsprache entfernt.
Abbildung 2: Das Verhältnis der Einbettungsmatrix zur Anzahl der gesamten Modellparameter für jedes mehrsprachige LMs und die Einbettungsmatrix nach VT mit Top-60-Vokabular.
Die Motivation hinter VT besteht darin, dass ein mehrsprachiges LM über ein riesiges Vokabular verfügt, um alle Sprachen abzudecken, was zu einer großen Modellgröße führt (siehe Abbildung 2). Allerdings benötigen wir den Großteil dieser Vokabulare nicht, wenn wir das mehrsprachige LM in der Praxis an einer einsprachigen Aufgabe verfeinern. Daher können wir solche nicht verwendeten Vokabulare löschen, um die Modellgröße zu reduzieren.
Theoretisch kann VT jedes vorhandene mehrsprachige LM komprimieren, um einsprachige LMs in jeder Sprache zu erstellen, die vom mehrsprachigen LM abgedeckt wird. In unseren Experimenten zeigen wir, dass VT die ursprüngliche Leistung des mehrsprachigen LM beibehalten kann, dabei jedoch kleiner ist (im Allgemeinen reichen etwa 50 % der ursprünglichen Vokabulargröße aus) als das ursprüngliche mehrsprachige LM. Die Bewertung erfolgt über vier NLP-Aufgaben (zwei generative und zwei Klassifizierungsaufgaben) unter vier weit verbreiteten mehrsprachigen LMs in sieben Sprachen. Abschließend zeigen wir, dass diese Methodik das Beste aus einsprachigen und mehrsprachigen Welten bewahren kann, indem sie eine kleine Größe als einsprachige Modelle beibehält, ohne dass sie speziell umgeschult werden müssen, und sogar potenziell schädliche soziale Vorurteile begrenzt. Bitte überprüfen Sie diese experimentellen Ergebnisse sowie die technischen Details in unserem Artikel „An Efficient Multilingual Language Model Compression through Vocabulary Trimming, 2023“. Um die Ergebnisse in unserem Artikel zu reproduzieren, klicken Sie bitte hier.
NEWS: Unser Artikel „An Efficient Multilingual Language Model Compression through Vocabulary Trimming, 2023“ wurde von den Ergebnissen des EMNLP 2023 angenommen.
Lassen Sie uns zuerst lmqg
über pip installieren.
pip install vocabtrimmer
vocabtrimmer
Abbildung 3: Vergleiche von Pre-FT und Post-FT in einem Beispiel für die Feinabstimmung einer Aufgabe auf Französisch.
Standardmäßig verlässt sich VT auf mC4, um einen Satz sprachspezifischer Token und die Häufigkeit jedes Tokens zu finden. Die praktische Verwendung von VT besteht darin, es vor der Feinabstimmung (Pre-FT-VT) oder nach der Feinabstimmung (Post-FT-VT) auf ein mehrsprachiges LM anzuwenden. Beide sollten im Allgemeinen gut funktionieren, aber Post-VT ist robuster und eignet sich, wenn Sie bereits ein Modell haben, da keine zusätzliche Schulung erforderlich ist. Andernfalls wäre Pre-FT VT eine Option, da dadurch die Zeit für die Feinabstimmung des Modells verkürzt werden könnte. Sehen Sie sich den Vergleich von VT vor/nach FT in unserem Artikel an.
Der vocabtrimmer
bietet die folgende Befehlszeilenschnittstelle zum Trimmen eines mehrsprachigen LM-Vokabulars.
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
Mit dem folgenden Befehl wird das Vokabular von google/mt5-small
auf Französisch mit Top-60.000-Vokabular reduziert.
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
Die Vokabulargröße mehrsprachiger LMs beträgt normalerweise 250 KB (XLM-R, mBART, mT5). Wir empfehlen, die Zielvokabulargröße auf 60 KB, die effektive Vokabulargröße, festzulegen. Eine Vokabulargröße von weniger als 60 KB kann zu Leistungseinbußen führen, kann jedoch in einigen Fällen die ursprüngliche Leistung beibehalten (siehe unseren Artikel). Wenn die Größe des Zielvokabulars nicht angegeben ist, wird das gesamte Vokabular verwendet, das im mC4-Datensatz oder im angegebenen Zielkorpus enthalten ist.
Der vocabtrimmer
bietet eine API zum Trimmen eines mehrsprachigen LM über Python. Mit dem folgenden Befehl wird das Vokabular von google/mt5-small
auf Französisch mit Top-60.000-Vokabular reduziert.
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 )
Bitte zitieren Sie das folgende Dokument, wenn Sie eine Ressource verwenden, und sehen Sie sich bei Bedarf den Code an, um das Modell zu reproduzieren.
@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",
}