Этот репозиторий содержит код для документа ACL 2023 «ContraCLM: контрастное обучение для причинной языковой модели».
Работу выполнили: Нихал Джайн*, Децзяо Чжан*, Васи Уддин Ахмад*, Цзыцзянь Ван, Фэн Нань, Сяопэн Ли, Мин Тан, Рамеш Наллапати, Байшахи Рэй, Парминдер Бхатия, Сяофей Ма, Бин Сян. (* указывает на равный вклад ).
Мы представляем ContraCLM, новую систему контрастного обучения, которая работает как на уровне токенов, так и на уровне последовательностей. ContraCLM улучшает распознавание представлений из языковой модели, предназначенной только для декодера, и устраняет разрыв с моделями, предназначенными только для кодирования, делая причинные языковые модели лучше подходящими для задач, выходящих за рамки генерации языка. Мы рекомендуем вам ознакомиться с нашей статьей для получения более подробной информации.
Установка включает установку необходимых зависимостей в среде и размещение наборов данных в необходимом каталоге.
Запустите эти команды, чтобы создать новую среду conda и установить необходимые пакеты для этого репозитория.
# create a new conda environment with python >= 3.8
conda create -n contraclm python=3.8.12
# install dependencies within the environment
conda activate contraclm
pip install -r requirements.txt
Смотрите здесь.
В этом разделе мы покажем, как использовать этот репозиторий для предварительного обучения (i) GPT2
на данных естественного языка (NL) и (ii) CodeGen-350M-Mono
на данных языка программирования (PL).
В этом разделе предполагается, что у вас есть данные обучения и проверки, хранящиеся в TRAIN_DIR
и VALID_DIR
соответственно, и вы находитесь в среде со всеми установленными выше зависимостями (см. «Настройка»).
Вы можете получить обзор всех флагов, связанных с предварительным обучением, выполнив:
python pl_trainer.py --help
GPT2
в данных NL bash runscripts/run_wikitext.sh
CL_Config=$(eval echo ${options[1]})
внутри скрипта.CodeGen-350M-Mono
на данных PL Настройте переменные в верхней части runscripts/run_code.sh
. Существует множество вариантов, но здесь описаны только варианты исключения (остальные говорят сами за себя):
dropout_p
: значение вероятности выпадения, используемое в torch.nn.Dropout
dropout_layers
: Если > 0, это активирует последний dropout_layers
с вероятностью dropout_p
functional_dropout
: если указано, будет использоваться слой функционального исключения поверх представлений токенов, выводимых из модели CodeGen.
Установите переменную CL
в соответствии с желаемой конфигурацией модели. Убедитесь, что пути к TRAIN_DIR, VALID_DIR
установлены по желанию.
Запустите команду: bash runscripts/run_code.sh
См. соответствующие каталоги для конкретных задач здесь.
Если вы используете наш код в своих исследованиях, пожалуйста, ссылайтесь на нашу работу следующим образом:
@inproceedings{jain-etal-2023-contraclm,
title = "{C}ontra{CLM}: Contrastive Learning For Causal Language Model",
author = "Jain, Nihal and
Zhang, Dejiao and
Ahmad, Wasi Uddin and
Wang, Zijian and
Nan, Feng and
Li, Xiaopeng and
Tan, Ming and
Nallapati, Ramesh and
Ray, Baishakhi and
Bhatia, Parminder and
Ma, Xiaofei and
Xiang, Bing",
booktitle = "Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = jul,
year = "2023",
address = "Toronto, Canada",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.acl-long.355",
pages = "6436--6459"
}
См. ВКЛАД для получения дополнительной информации.
Этот проект распространяется по лицензии Apache-2.0.