Официальное выпуск кода нашей работы NAACL 2021, Unified Pre Training для понимания программы и генерации.
***** Выступления PLBART по нижним задачам записаны в этой таблице. *****
Новости • Настройка • Предварительная тренировка • Точная настройка • Часто задаваемые вопросы • подтверждение • Лицензия • Цитата
Шумный ввод | Исходная последовательность |
---|---|
0 [Маска] Фибоначчи [Маска] ? | |
public Static Main (String args []) {date = date (); Система . вне . (String. Format («Текущая дата: % tc»,)); } | |
def AddThreeNumbers (x, y, z): new_line retent return [mask] | |
Мы можем настроить среду Conda для проведения экспериментов PLBART, первым шагом является загрузка зависимостей. Мы предполагаем, что Анаконда установлена. Дополнительные требования (отмечены в требованиях.txt) могут быть установлены с помощью следующего сценария:
bash install_env.sh
Перейдите в каталог data/github
и следуйте инструкциям.
Перейдите в каталог data/stackoverflow
и следуйте инструкциям.
cd pretrain
bash binarize.sh
bash pretrain.sh GPU_IDS
[ПРИМЕЧАНИЕ] Мы предварительно обучены PLBART на 8 GeForce RTX 2080
(11 ГБ) GPU (заняло ~ 11,5 дней). Если вы хотите предварительно обучать PLBART, используя больше графических процессоров или графических процессоров с большей памятью, отрегулируйте MAX_SENTENCES
, MAX_TOKENS
, UPDATE_FREQ
соответственно, чтобы поддерживать эффективный размер пакета 2048. Согласно Fairseq, эффективный размер партии равен::
Per_gpu_train_batch_size * num_gpu * update_freq
Обратите внимание, что MAX_TOKENS
относится к размеру каждой мини-партии с точки зрения количества токенов. Во время наших экспериментов мы заметили, что в 11-ГБ графическом процессоре может быть размещено максимум 2048 токенов, что эквивалентно 4-5 примерам. Поэтому мы установили UPDATE_FREQ
на 60, чтобы мы могли достичь эффективного размера партии ~ 2048.
Мы точно настраиваем и оцениваем PLBART по трем типам нижестоящих задач.
Тип | Задача | Язык(и) | Данные | Скрипты | Контрольно-пропускные пункты |
---|---|---|---|---|---|
Код на текст | Суммирование кода | Python, Java, Ruby, PHP, JavaScript, Go | [СВЯЗЬ] | [СВЯЗЬ] | [СВЯЗЬ] |
Текст в код | Генерация кода | Ява | [СВЯЗЬ] | [СВЯЗЬ] | [СВЯЗЬ] |
Код в код | Перевод кода | Java, C# | [СВЯЗЬ] | [СВЯЗЬ] | [СВЯЗЬ] |
Уточнение кода | Ява | [СВЯЗЬ] | [СВЯЗЬ] | ||
Обнаружение клона | Ява | [СВЯЗЬ] | [СВЯЗЬ] | ||
Обнаружение дефектов | C/C ++ | [СВЯЗЬ] | [СВЯЗЬ] |
cd pretrain
bash download.sh
cd ..
cd data/codeXglue
bash download.sh
cd ../..
cd evaluation/CodeBLEU/parser
bash build.sh
cd ../../..
Например, мы хотим точно настроить PLBART на задаче Text-to-Code
. Затем,
cd scripts/text_to_code
bash prepare.sh
bash run.sh GPU_IDS
cd ../..
Примечание. Мы настраивались на PLBART на 1 GeForce RTX 2080
(11 ГБ) GPU.
[Примечание] Мы представляем структуру файла этого хранилища здесь.
Как загрузить данные GitHub из Google BigQuery?
Мы предоставили подробное руководство здесь.
Несоответствие в производительности, зарегистрированное в статье и достигнуто с использованием выпущенных контрольных точек.
Существует разница между выступлениями Плбарта, упомянутыми в статье, и производительности, достигнутой с выпущенными контрольно -пропускными пунктами. Мы отметили их здесь. Обратите внимание, что в настройке гиперпараметра нет изменений. Мы предоставили то же значение, которое мы использовали в сценариях Bash. Разница, которую мы наблюдали, возможно, обусловлены экспериментами в разной момент времени. Хотя мы этого не сделали, но мы рекомендуем тонко настраивать Plbart с несколькими различными семенами и сообщать о средних баллах.
Задача mbart_base
не присутствует в fairseq==0.9.0
Официальный релиз.
Хотя мы использовали fairseq==0.9.0
, но мы использовали другой коммит, который состоит из задачи mbart_base
. Вы можете сделать следующее, что должно работать.
git clone https://github.com/pytorch/fairseq
cd fairseq
git checkout 698e3b91ffa832c286c48035bdff78238b0de8ae
pip install .
В противном случае вы можете рассмотреть возможность установки fairseq==0.10.0
. Пожалуйста, обратитесь к этому вопросу, чтобы внести другие корректировки.
Каковы могут быть максимальные длины ввода и выходных данных для PLBART?
Максимальная длина составляет 512.
Plbart использует Fairseq, Codexglue и Trancoder и благодарит авторов этих работ для их вклада.
Содержание этого репозитория находится под лицензией MIT. Лицензия применяется и к предварительно обученным и настраиваемым моделям.
@inproceedings{ahmad-etal-2021-unified,
title = "Unified Pre-training for Program Understanding and Generation",
author = "Ahmad, Wasi and
Chakraborty, Saikat and
Ray, Baishakhi and
Chang, Kai-Wei",
booktitle = "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies",
month = jun,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2021.naacl-main.211",
pages = "2655--2668"
}