Figura 1: Ilustración del recorte de vocabulario a coreano y francés.
El recorte de vocabulario (VT) es una técnica de compresión de modelos que reduce un vocabulario LM multilingüe a un idioma de destino eliminando tokens irrelevantes de su vocabulario (consulte la Figura 1). Este repositorio contiene un vocabtrimmer
de biblioteca de Python, que elimina tokens irrelevantes de un vocabulario LM multilingüe para el idioma de destino.
Figura 2: La relación entre la matriz de incrustación y el número de parámetros completos del modelo para cada uno de los LM multilingües y la matriz de incrustación después de VT con el vocabulario principal de 60.
La motivación detrás de VT es que un LM multilingüe tiene un vocabulario enorme para cubrir todos los idiomas, lo que da como resultado un tamaño de modelo grande (consulte la Figura 2). Sin embargo, no necesitamos la mayor parte de esos vocabularios cuando ajustamos el LM multilingüe en una tarea monolingüe en la práctica. Por lo tanto, podemos eliminar dichos vocabularios no utilizados para reducir el tamaño del modelo.
En teoría, VT puede comprimir cualquier LM multilingüe existente para crear LM monolingües en cualquier idioma cubierto por el LM multilingüe. En nuestros experimentos, mostramos que VT puede conservar el rendimiento original del LM multilingüe, aunque es más pequeño en tamaño (en general, alrededor del 50% del tamaño del vocabulario original es suficiente) que el LM multilingüe original. La evaluación se realiza a través de cuatro tareas de PNL (dos tareas generativas y dos de clasificación) entre cuatro LM multilingües ampliamente utilizados en siete idiomas. Finalmente, mostramos que esta metodología puede conservar lo mejor de los mundos monolingües y multilingües manteniendo un tamaño pequeño como modelos monolingües sin la necesidad de volver a capacitarlos específicamente, e incluso limitando sesgos sociales potencialmente dañinos. Consulte esos resultados experimentales, así como los detalles técnicos en nuestro artículo, "Una compresión eficiente de un modelo de lenguaje multilingüe mediante el recorte de vocabulario, 2023". Para reproducir los resultados en nuestro artículo, consulte aquí.
NOTICIAS: Nuestro artículo "Una compresión eficiente de un modelo de lenguaje multilingüe mediante el recorte de vocabulario, 2023" fue aceptado según los hallazgos de EMNLP 2023.
Primero instalemos lmqg
a través de pip.
pip install vocabtrimmer
vocabtrimmer
Figura 3: Comparaciones entre Pre-FT y Post-FT en un ejemplo de ajuste de una tarea en francés.
De forma predeterminada, VT se basa en mC4 para encontrar un conjunto de tokens específicos del idioma y la frecuencia de cada token. El uso práctico de VT es aplicarlo a un LM multilingüe antes del ajuste fino (pre-FT VT) o después del ajuste fino (post-FT VT). Ambos deberían funcionar bien en general, pero la post-VT es más sólida y adecuada si ya tienes un modelo, ya que no se requiere capacitación adicional. De lo contrario, el VT previo al FT sería una opción, ya que podría reducir el tiempo para ajustar el modelo. Vea la comparación de TV pre/post-FT en nuestro artículo.
vocabtrimmer
proporciona la siguiente interfaz de línea de comandos para recortar un vocabulario LM multilingüe.
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
El siguiente comando recorta el vocabulario de google/mt5-small
al francés con un vocabulario superior a 60.000.
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
El tamaño del vocabulario de los LM multilingües suele ser de 250 k (XLM-R, mBART, mT5) y recomendamos establecer el tamaño del vocabulario objetivo en 60 k, el tamaño efectivo del vocabulario. Un tamaño de vocabulario inferior a 60k puede causar una degradación del rendimiento, pero puede conservar el rendimiento original en algunos casos (consulte nuestro artículo). Si no se especifica el tamaño del vocabulario de destino, se utilizará el vocabulario completo que aparece en el conjunto de datos mC4 o en el corpus de destino especificado.
vocabtrimmer
proporciona una API para recortar un LM multilingüe a través de Python. El siguiente comando recorta el vocabulario de google/mt5-small
al francés con un vocabulario superior a 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 )
Cite el siguiente documento si utiliza algún recurso y consulte el código para reproducir el modelo si es necesario.
@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",
}