Рисунок 1. Иллюстрация сокращения словарного запаса корейского и французского языков.
Обрезка словарного запаса (VT) — это метод сжатия модели, который сводит многоязычный словарь LM к целевому языку путем удаления ненужных токенов из его словаря (см. Рисунок 1). Этот репозиторий содержит vocabtrimmer
библиотеки Python, который удаляет ненужные токены из многоязычного словаря LM для целевого языка.
Рисунок 2: Отношение матрицы внедрения к числу полных параметров модели для каждого из многоязычных LM и матрицы внедрения после VT со словарем из топ-60.
Мотивацией VT является то, что многоязычный LM имеет огромный словарный запас, охватывающий все языки, что приводит к большому размеру модели (см. Рисунок 2). Однако нам не нужна большая часть этих словарей, когда мы на практике настраиваем многоязычный LM для выполнения одноязычной задачи. Следовательно, мы можем удалить такие неиспользуемые словари, чтобы уменьшить размер модели.
Теоретически VT может сжать любой существующий многоязычный LM для создания одноязычных LM на любом языке, охватываемом многоязычным LM. В наших экспериментах мы показываем, что VT может сохранять исходную производительность многоязычного LM, будучи при этом меньшим по размеру (обычно около 50% от исходного размера словаря достаточно), чем исходный многоязычный LM. Оценка проводится по четырем задачам НЛП (две генеративные и две задачи классификации) среди четырех широко используемых многоязычных LM на семи языках. Наконец, мы показываем, что эта методология может сохранить лучшее от одноязычного и многоязычного миров, сохраняя небольшой размер одноязычных моделей без необходимости их специального переобучения и даже ограничивая потенциально вредные социальные предубеждения. Пожалуйста, ознакомьтесь с этими экспериментальными результатами, а также с техническими подробностями в нашей статье «Эффективное сжатие многоязычной языковой модели посредством обрезки словарного запаса, 2023». Чтобы воспроизвести результаты в нашей статье, пожалуйста, проверьте здесь.
НОВОСТИ: Наша статья «Эффективное сжатие многоязычной языковой модели посредством сокращения словарного запаса, 2023 г.» была принята по результатам EMNLP 2023.
Давайте сначала установим lmqg
через pip.
pip install vocabtrimmer
vocabtrimmer
Рисунок 3: Сравнение Pre-FT и Post-FT на примере тонкой настройки задачи на французском языке.
По умолчанию VT использует mC4 для поиска набора токенов для конкретного языка и частоты каждого токена. Практическое использование VT заключается в применении его к многоязычному LM перед тонкой настройкой (до FT VT) или после тонкой настройки (после FT VT). В целом оба должны работать хорошо, но пост-VT более надежен и подходит, если у вас уже есть модель, поскольку никакого дополнительного обучения не требуется. В противном случае можно было бы использовать предварительную FT VT, поскольку она могла бы сократить время на точную настройку модели. См. сравнение ЖТ до и после FT в нашей статье.
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
до французского со словарем Top-60k.
vocabtrimmer-trimming -m " google/mt5-small " -l " fr " -v 60000 -p " ckpts/mt5-small-trimmed-fr-60000 "
Размер словаря многоязычных LM обычно составляет 250 тысяч (XLM-R, mBART, mT5), и мы рекомендуем установить целевой размер словаря на 60 тысяч, эффективный размер словаря. Размер словаря меньше 60 000 может привести к снижению производительности, но в некоторых случаях может сохранить исходную производительность (см. нашу статью). Если размер целевого словаря не указан, будет использоваться весь словарь, который присутствует в наборе данных mC4 или в указанном целевом корпусе.
vocabtrimmer
предоставляет API для обрезки многоязычного LM через Python. Следующая команда обрезает словарный запас google/mt5-small
до французского со словарем 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 )
Пожалуйста, процитируйте следующую статью, если вы используете какой-либо ресурс, и посмотрите код для воспроизведения модели, если это необходимо.
@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",
}