NAACL 2021 작업의 공식 코드 릴리스인 프로그램 이해 및 생성을 위한 통합 사전 교육입니다.
***** 다운스트림 작업에 대한 PLBART의 성과가 이 스프레드시트에 기록됩니다. *****
뉴스 • 설정 • 사전 교육 • 미세 조정 • FAQ • 승인 • 라이선스 • 표창
시끄러운 입력 | 원본 시퀀스 |
---|---|
0은 [MASK] 피보나치 [MASK] 입니까? <엔> | |
공개 정적 메인( 문자열 인수 [ ] ) { 날짜 = 날짜( ) ; 시스템 . 밖으로 . ( String .format ( " 현재 날짜 : % tc " , ) ) ; } <자바> | |
def addThreeNumbers ( x , y , z ) : NEW_LINE INDENT return [MASK] | |
PLBART 실험을 실행하기 위해 conda 환경을 설정할 수 있으며, 첫 번째 단계는 종속성을 다운로드하는 것입니다. 아나콘다가 설치되어 있다고 가정합니다. 추가 요구 사항(requirement.txt에 명시되어 있음)은 다음 스크립트를 실행하여 설치할 수 있습니다.
bash install_env.sh
data/github
디렉토리로 이동하여 지침을 따르세요.
data/stackoverflow
디렉터리로 이동하여 지침을 따르세요.
cd pretrain
bash binarize.sh
bash pretrain.sh GPU_IDS
[참고] 8개의 GeForce RTX 2080
(11gb) GPU에서 PLBART를 사전 훈련했습니다(~11.5일 소요). 더 많은 GPU 또는 더 많은 메모리를 갖춘 GPU를 사용하여 PLBART를 사전 훈련하려면 MAX_SENTENCES
, MAX_TOKENS
, UPDATE_FREQ
적절하게 조정하여 유효 배치 크기를 2048로 유지하세요. fairseq에 따르면 유효 배치 크기는 다음과 같습니다.
PER_GPU_TRAIN_BATCH_SIZE * NUM_GPU * UPDATE_FREQ
MAX_TOKENS
는 토큰 수 측면에서 각 미니 배치의 크기를 나타냅니다. 실험 중에 우리는 11GB GPU에서 최대 2048개의 토큰을 수용할 수 있다는 사실을 발견했습니다. 이는 4-5개의 예에 해당합니다. 따라서 UPDATE_FREQ
60으로 설정하여 ~2048의 효과적인 배치 크기를 달성할 수 있습니다.
우리는 세 가지 유형의 다운스트림 작업에 대해 PLBART를 미세 조정하고 평가합니다.
유형 | 일 | 언어 | 데이터 | 스크립트 | 체크포인트 |
---|---|---|---|---|---|
코드를 텍스트로 | 코드 요약 | 파이썬, 자바, 루비, PHP, 자바스크립트, Go | [링크] | [링크] | [링크] |
텍스트를 코드로 | 코드 생성 | 자바 | [링크] | [링크] | [링크] |
코드에서 코드로 | 코드 번역 | 자바, C# | [링크] | [링크] | [링크] |
코드 개선 | 자바 | [링크] | [링크] | ||
클론 감지 | 자바 | [링크] | [링크] | ||
결함 감지 | C/C++ | [링크] | [링크] |
cd pretrain
bash download.sh
cd ..
cd data/codeXglue
bash download.sh
cd ../..
cd evaluation/CodeBLEU/parser
bash build.sh
cd ../../..
예를 들어 Text-to-Code
작업에서 PLBART를 미세 조정하려고 합니다. 그 다음에,
cd scripts/text_to_code
bash prepare.sh
bash run.sh GPU_IDS
cd ../..
메모. 1개의 GeForce RTX 2080
(11gb) GPU에서 PLBART를 미세 조정했습니다.
[참고] 여기에 이 저장소의 파일 구조가 나와 있습니다.
Google BigQuery에서 Github 데이터를 다운로드하는 방법은 무엇입니까?
우리는 여기에 자세한 가이드를 제공했습니다.
백서에 보고된 성능과 릴리스된 체크포인트를 사용하여 달성한 성능의 불일치입니다.
논문에 언급된 PLBART의 성능과 공개된 체크포인트를 통해 달성한 성능에는 차이가 있습니다. 우리는 여기에 그것들을 기록했습니다. 하이퍼파라미터 설정에는 변화가 없습니다. 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 및 TransCoder를 사용하며 이러한 작품의 저자에게 기여해 주셔서 감사합니다.
이 저장소의 내용은 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"
}