Figura 1: Uma ilustração do corte de vocabulário para coreano e francês.
O Vocabulary Trimming (VT) é uma técnica de compressão de modelo, que reduz um vocabulário LM multilíngue a um idioma alvo, excluindo tokens irrelevantes de seu vocabulário (ver Figura 1). Este repositório contém um vocabtrimmer
python-library, que remove tokens irrelevantes de um vocabulário LM multilíngue para o idioma de destino.
Figura 2: A proporção entre a matriz de incorporação e o número de parâmetros inteiros do modelo para cada um dos LMs multilíngues e a matriz de incorporação após VT com os 60 principais vocabulários.
A motivação por trás do VT é que um LM multilíngue possui um vocabulário enorme para cobrir todos os idiomas, o que resulta em um modelo grande (ver Figura 2). No entanto, não precisamos da maior parte desses vocabulários quando ajustamos o LM multilíngue em uma tarefa monolíngue na prática. Portanto, podemos excluir esses vocabulários não utilizados para reduzir o tamanho do modelo.
Em teoria, o VT pode compactar qualquer LM multilíngue existente para construir LMs monolíngues em qualquer idioma coberto pelo LM multilíngue. Em nossos experimentos, mostramos que o VT pode reter o desempenho original do LM multilíngue, embora seja menor em tamanho (em geral, cerca de 50% do tamanho do vocabulário original é suficiente) do que o LM multilíngue original. A avaliação é realizada em quatro tarefas de PNL (duas tarefas gerativas e duas de classificação) entre quatro LMs multilíngues amplamente utilizados em sete idiomas. Finalmente, mostramos que esta metodologia pode manter o melhor dos mundos monolíngue e multilíngue, mantendo um tamanho pequeno como modelos monolíngues sem a necessidade de retreiná-los especificamente, e até mesmo limitando preconceitos sociais potencialmente prejudiciais. Por favor, verifique esses resultados experimentais, bem como os detalhes técnicos em nosso artigo, "Uma compressão eficiente de modelo de linguagem multilíngue por meio de corte de vocabulário, 2023". Para reproduzir os resultados em nosso artigo, clique aqui.
NOTÍCIAS: Nosso artigo "Uma compressão eficiente de modelo de linguagem multilíngue por meio do corte de vocabulário, 2023" foi aceito pelas conclusões do EMNLP 2023.
Vamos instalar lmqg
via pip primeiro.
pip install vocabtrimmer
vocabtrimmer
Figura 3: Comparações entre Pré-FT e Pós-FT em um exemplo de ajuste fino em uma tarefa em francês.
Por padrão, o VT depende do mC4 para encontrar um conjunto de tokens específicos do idioma e a frequência de cada token. O uso prático do VT é aplicá-lo a um LM multilíngue antes do ajuste fino (pré-FT VT) ou após o ajuste fino (pós-FT VT). Ambos devem funcionar bem em geral, mas o pós-VT é mais robusto e adequado se você já tiver um modelo, pois nenhum treinamento adicional é necessário. Caso contrário, o VT pré-FT seria uma opção, pois poderia reduzir o tempo de ajuste fino do modelo. Veja a comparação do VT pré/pós-FT em nosso artigo.
O vocabtrimmer
fornece a seguinte interface de linha de comando para cortar um vocabulário LM multilíngue.
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
O comando a seguir reduz o vocabulário de google/mt5-small
para francês com vocabulário superior a 60k.
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
O tamanho do vocabulário de LMs multilíngues é geralmente 250k (XLM-R, mBART, mT5), e recomendamos definir o tamanho do vocabulário alvo para 60k, o tamanho efetivo do vocabulário. Um tamanho de vocabulário menor que 60k pode causar degradação de desempenho, mas pode manter o desempenho original em alguns casos (confira nosso artigo). Se o tamanho do vocabulário alvo não for especificado, ele usará todo o vocabulário que aparece no conjunto de dados mC4 ou no corpus alvo especificado.
O vocabtrimmer
fornece uma API para cortar um LM multilíngue via python. O comando a seguir reduz o vocabulário de google/mt5-small
para francês com vocabulário superior a 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 )
Por favor, cite o artigo a seguir se você usar algum recurso e veja o código para reproduzir o modelo, se necessário.
@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",
}