Figure 1 : Une illustration du découpage du vocabulaire en coréen et en français.
Le Vocabulary Trimming (VT) est une technique de compression de modèle, qui réduit un vocabulaire LM multilingue à une langue cible en supprimant les jetons non pertinents de son vocabulaire (voir Figure 1). Ce référentiel contient un vocabtrimmer
de bibliothèque Python, qui supprime les jetons non pertinents d'un vocabulaire LM multilingue pour la langue cible.
Figure 2 : Le rapport de la matrice d'intégration au nombre de paramètres de modèle entiers pour chacun des LM multilingues et la matrice d'intégration après VT avec le vocabulaire top-60.
La motivation derrière VT est qu'un LM multilingue dispose d'un vaste vocabulaire pour couvrir toutes les langues, ce qui se traduit par une grande taille de modèle (voir Figure 2). Cependant, nous n'avons pas besoin de la majeure partie de ces vocabulaires lorsque nous affinons le LM multilingue sur une tâche monolingue dans la pratique. Par conséquent, nous pouvons supprimer ces vocabulaires inutilisés pour réduire la taille du modèle.
En théorie, VT peut compresser n'importe quel LM multilingue existant pour créer des LM monolingues dans n'importe quelle langue couverte par le LM multilingue. Dans nos expériences, nous montrons que VT peut conserver les performances originales du LM multilingue, tout en étant plus petit en taille (en général, environ 50 % de la taille du vocabulaire original suffit) que le LM multilingue original. L'évaluation est effectuée sur quatre tâches PNL (deux tâches génératives et deux tâches de classification) parmi quatre LM multilingues largement utilisés dans sept langues. Enfin, nous montrons que cette méthodologie permet de conserver le meilleur des mondes monolingues et multilingues en gardant une petite taille des modèles monolingues sans avoir besoin de les recycler spécifiquement, et même en limitant les biais sociaux potentiellement néfastes. Veuillez vérifier ces résultats expérimentaux ainsi que les détails techniques dans notre article, "Une compression efficace du modèle de langage multilingue grâce au découpage du vocabulaire, 2023". Pour reproduire les résultats dans notre article, veuillez cocher ici.
NOUVELLES : Notre article « Une compression efficace du modèle de langage multilingue grâce au découpage du vocabulaire, 2023 » a été accepté par les conclusions de l'EMNLP 2023.
Installons d'abord lmqg
via pip.
pip install vocabtrimmer
vocabtrimmer
Figure 3 : Comparaisons Pré-FT vs Post-FT dans un exemple de mise au point sur une tâche en français.
Par défaut, VT s'appuie sur mC4 pour trouver un ensemble de jetons spécifiques à la langue et la fréquence de chaque jeton. L'utilisation pratique de VT est de l'appliquer à un LM multilingue avant le réglage fin (pré-FT VT) ou après le réglage fin (post-FT VT). Les deux devraient bien fonctionner en général, mais le post-VT est plus robuste et convient si vous avez déjà un modèle car aucune formation supplémentaire n'est requise. Sinon, le pré-FT VT serait une option car il pourrait réduire le temps nécessaire pour affiner le modèle. Voir la comparaison des VT pré/post-FT dans notre article.
Le vocabtrimmer
fournit l'interface de ligne de commande suivante pour découper un vocabulaire LM multilingue.
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
La commande suivante réduit le vocabulaire de google/mt5-small
en français avec le vocabulaire top-60k.
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
La taille du vocabulaire des LM multilingues est généralement de 250 ko (XLM-R, mBART, mT5), et nous vous recommandons de définir la taille du vocabulaire cible à 60 ko, la taille effective du vocabulaire. Une taille de vocabulaire inférieure à 60 Ko peut entraîner une dégradation des performances, mais peut conserver les performances d'origine dans certains cas (consultez notre article). Si la taille du vocabulaire cible n'est pas spécifiée, il utilisera tout le vocabulaire qui apparaît dans l'ensemble de données mC4 ou dans le corpus cible spécifié.
Le vocabtrimmer
fournit une API pour découper un LM multilingue via python. La commande suivante réduit le vocabulaire de google/mt5-small
en français avec le vocabulaire top-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 )
Veuillez citer l'article suivant si vous utilisez une ressource et consulter le code pour reproduire le modèle si nécessaire.
@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",
}