Offizielle Code-Veröffentlichung unserer NAACL 2021-Arbeit, Unified Pre-Training for Program Understanding and Generation.
***** Die Leistungen von PLBART bei den nachgelagerten Aufgaben werden in dieser Tabelle aufgezeichnet. *****
Neuigkeiten • Einrichtung • Vorschulung • Feinabstimmung • FAQs • Danksagung • Lizenz • Zitierung
Verrauschter Eingang | Originalsequenz |
---|---|
Ist 0 die [MASKE] Fibonacci [MASKE] ? | |
public static main (String args []) { date = Date (); System. aus . (String.format("Aktuelles Datum: %tc",)); } | |
def addThreeNumbers (x, y, z): NEW_LINE INDENT return [MASK] | |
Wir können eine Conda-Umgebung einrichten, um PLBART-Experimente durchzuführen. Der erste Schritt besteht darin, die Abhängigkeiten herunterzuladen. Wir gehen davon aus, dass Anaconda installiert ist. Die zusätzlichen Anforderungen (in „requirements.txt“ angegeben) können durch Ausführen des folgenden Skripts installiert werden:
bash install_env.sh
Gehen Sie zum Verzeichnis data/github
und befolgen Sie die Anweisungen.
Gehen Sie zum Verzeichnis data/stackoverflow
und befolgen Sie die Anweisungen.
cd pretrain
bash binarize.sh
bash pretrain.sh GPU_IDS
[Hinweis] Wir haben PLBART auf 8 GeForce RTX 2080
(11 GB) GPUs vorab trainiert (dauerte ca. 11,5 Tage). Wenn Sie PLBART mit mehr GPUs oder GPUs mit mehr Speicher vorab trainieren möchten, passen Sie MAX_SENTENCES
, MAX_TOKENS
, UPDATE_FREQ
entsprechend an, um eine effektive Batch-Größe von 2048 aufrechtzuerhalten. Laut fairseq ist die effektive Batch-Größe gleich:
PER_GPU_TRAIN_BATCH_SIZE * NUM_GPU * UPDATE_FREQ
Beachten Sie, dass sich MAX_TOKENS
auf die Größe jedes Mini-Batches in Bezug auf die Anzahl der Token bezieht. Bei unseren Experimenten haben wir festgestellt, dass in einer 11-GB-GPU maximal 2048 Token untergebracht werden können, was 4-5 Beispielen entspricht. Daher setzen wir UPDATE_FREQ
auf 60, sodass wir eine effektive Batchgröße von ~2048 erreichen können.
Wir optimieren und bewerten PLBART für drei Arten nachgelagerter Aufgaben.
Typ | Aufgabe | Sprache(n) | Daten | Skripte | Kontrollpunkte |
---|---|---|---|---|---|
Code zu Text | Code-Zusammenfassung | Python, Java, Ruby, PHP, Javascript, Go | [LINK] | [LINK] | [LINK] |
Text zum Code | Codegenerierung | Java | [LINK] | [LINK] | [LINK] |
Code zu Code | Codeübersetzung | Java, C# | [LINK] | [LINK] | [LINK] |
Code-Verfeinerung | Java | [LINK] | [LINK] | ||
Klonerkennung | Java | [LINK] | [LINK] | ||
Fehlererkennung | C/C++ | [LINK] | [LINK] |
cd pretrain
bash download.sh
cd ..
cd data/codeXglue
bash download.sh
cd ../..
cd evaluation/CodeBLEU/parser
bash build.sh
cd ../../..
Beispielsweise möchten wir PLBART für Text-to-Code
-Aufgabe optimieren. Dann,
cd scripts/text_to_code
bash prepare.sh
bash run.sh GPU_IDS
cd ../..
Notiz. Wir haben PLBART auf 1 GeForce RTX 2080
(11 GB) GPU optimiert.
[HINWEIS] Wir präsentieren hier die Dateistruktur dieses Repositorys.
Wie lade ich Github-Daten von Google BigQuery herunter?
Eine ausführliche Anleitung haben wir hier bereitgestellt.
Nicht übereinstimmende Leistung, die im Papier gemeldet und mithilfe der freigegebenen Prüfpunkte erreicht wurde.
Es besteht ein Unterschied zwischen den im Papier erwähnten Leistungen von PLBART und den mit den freigegebenen Kontrollpunkten erzielten Leistungen. Wir haben sie hier notiert. Beachten Sie, dass sich die Hyperparametereinstellung nicht ändert. Wir haben genau denselben Wert angegeben, den wir in den Bash-Skripten verwendet haben. Der von uns beobachtete Leistungsunterschied ist möglicherweise auf die Durchführung von Experimenten zu unterschiedlichen Zeitpunkten zurückzuführen. Obwohl wir dies nicht getan haben, empfehlen wir, PLBART mit mehreren verschiedenen Samen zu optimieren und die Durchschnittswerte anzugeben.
Die Aufgabe mbart_base
ist in der offiziellen Version fairseq==0.9.0
nicht vorhanden.
Wir haben zwar fairseq==0.9.0
verwendet, aber wir haben ein anderes Commit verwendet, das aus der Aufgabe mbart_base
besteht. Sie können Folgendes tun, was funktionieren sollte.
git clone https://github.com/pytorch/fairseq
cd fairseq
git checkout 698e3b91ffa832c286c48035bdff78238b0de8ae
pip install .
Andernfalls können Sie die Installation fairseq==0.10.0
in Betracht ziehen. Weitere Anpassungen finden Sie in diesem Problem.
Was können die maximalen Eingabe- und Ausgabelängen für PLBART sein?
Die maximale Länge beträgt 512.
PLBART verwendet Fairseq, codeXglue und TransCoder und dankt den Autoren dieser Werke für ihren Beitrag.
Der Inhalt dieses Repositorys steht unter der MIT-Lizenz. Die Lizenz gilt auch für die vorab trainierten und fein abgestimmten Modelle.
@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"
}