Rilis kode resmi dari karya NAACL 2021 kami, Pra-pelatihan Terpadu untuk Pemahaman dan Pembuatan Program.
***** Kinerja PLBART pada tugas-tugas hilir dicatat dalam spreadsheet ini. *****
Berita • Penyiapan • Pra-pelatihan • Penyempurnaan • FAQ • Pengakuan • Lisensi • Kutipan
Masukan Bising | Urutan Asli |
---|---|
Apakah 0 adalah [MASK] Fibonacci [MASK] ? <En> | <En> Apakah 0 adalah bilangan Fibonacci pertama ? |
public static main ( String args [ ] ) { tanggal = Tanggal ( ) ; Sistem. keluar . (String.format("Tanggal Sekarang:%tc",)); } <Jawa> | <java> public static void main ( String args [ ] ) { Tanggal tanggal = Tanggal baru ( ) ; Sistem. keluar . printf (String.format("Tanggal Sekarang:%tc", tanggal )); } |
def addThreeNumbers ( x , y , z ) : NEW_LINE INDENT mengembalikan [MASK] <python> | <python> def addThreeNumbers ( x , y , z ): NEW_LINE INDENT kembalikan x + y + z |
Kita dapat menyiapkan lingkungan conda untuk menjalankan eksperimen PLBART, langkah pertama adalah mengunduh dependensinya. Kami berasumsi anaconda sudah terpasang. Persyaratan tambahan (dicatat dalam persyaratan.txt) dapat diinstal dengan menjalankan skrip berikut:
bash install_env.sh
Buka direktori data/github
dan ikuti instruksi.
Buka direktori data/stackoverflow
dan ikuti instruksi.
cd pretrain
bash binarize.sh
bash pretrain.sh GPU_IDS
[Catatan] Kami telah melatih PLBART pada 8 GPU GeForce RTX 2080
(11 GB) (membutuhkan waktu ~11,5 hari). Jika Anda ingin melakukan pra-latihan PLBART menggunakan lebih banyak GPU atau GPU dengan lebih banyak memori, sesuaikan MAX_SENTENCES
, MAX_TOKENS
, UPDATE_FREQ
untuk mempertahankan ukuran batch efektif pada tahun 2048. Menurut fairseq, ukuran batch efektif sama dengan:
PER_GPU_TRAIN_BATCH_SIZE * NUM_GPU * UPDATE_FREQ
Perhatikan bahwa, MAX_TOKENS
mengacu pada ukuran setiap mini-batch, dalam kaitannya dengan jumlah token. Selama percobaan kami, kami memperhatikan bahwa dalam GPU 11gb, maksimum 2048 token dapat ditampung yang setara dengan 4-5 contoh. Oleh karena itu, kami menetapkan UPDATE_FREQ
ke 60, sehingga kami dapat mencapai ukuran batch efektif ~2048.
Kami menyempurnakan dan mengevaluasi PLBART pada tiga jenis tugas hilir.
Jenis | Tugas | Bahasa | Data | Skrip | Pos pemeriksaan |
---|---|---|---|---|---|
Kode ke Teks | Rangkuman kode | Python, Jawa, Ruby, PHP, Javascript, Jalankan | [LINK] | [LINK] | [LINK] |
Teks ke Kode | Pembuatan kode | Jawa | [LINK] | [LINK] | [LINK] |
Kode ke Kode | Terjemahan kode | Jawa, C# | [LINK] | [LINK] | [LINK] |
Penyempurnaan kode | Jawa | [LINK] | [LINK] | ||
Deteksi klon | Jawa | [LINK] | [LINK] | ||
Deteksi cacat | 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 ../../..
Misalnya, kami ingin menyempurnakan PLBART pada tugas Text-to-Code
. Kemudian,
cd scripts/text_to_code
bash prepare.sh
bash run.sh GPU_IDS
cd ../..
Catatan. Kami menyempurnakan PLBART pada 1 GPU GeForce RTX 2080
(11 GB).
[CATATAN] Kami menyajikan struktur file repositori ini di sini.
Bagaimana cara mengunduh data Github dari Google BigQuery?
Kami menyediakan panduan terperinci di sini.
Ketidaksesuaian kinerja yang dilaporkan di koran dan dicapai dengan menggunakan pos pemeriksaan yang dirilis.
Ada perbedaan antara kinerja PLBART yang disebutkan dalam makalah dan kinerja yang dicapai dengan pelepasan pos pemeriksaan. Kami mencatatnya di sini. Perhatikan bahwa, tidak ada perubahan dalam pengaturan hyper-parameter. Kami memberikan nilai yang sama persis dengan yang kami gunakan di skrip bash. Perbedaan kinerja yang kami amati mungkin disebabkan oleh menjalankan eksperimen pada waktu yang berbeda. Meskipun kami tidak melakukannya, kami menyarankan untuk menyempurnakan PLBART dengan beberapa benih berbeda dan melaporkan skor rata-rata.
Tugas mbart_base
tidak ada dalam rilis resmi fairseq==0.9.0
.
Meskipun kami menggunakan fairseq==0.9.0
tetapi kami menggunakan komit berbeda yang terdiri dari tugas mbart_base
. Anda dapat melakukan hal berikut yang seharusnya berhasil.
git clone https://github.com/pytorch/fairseq
cd fairseq
git checkout 698e3b91ffa832c286c48035bdff78238b0de8ae
pip install .
Jika tidak, Anda dapat mempertimbangkan untuk menginstal fairseq==0.10.0
. Silakan lihat masalah ini untuk melakukan penyesuaian lainnya.
Berapa panjang input dan output maksimum untuk PLBART?
Panjang maksimumnya adalah 512.
PLBART menggunakan Fairseq, codeXglue, dan TransCoder dan berterima kasih kepada penulis karya ini atas kontribusinya.
Isi repositori ini berada di bawah lisensi MIT. Lisensi ini juga berlaku untuk model yang telah dilatih sebelumnya dan telah disempurnakan.
@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"
}