การเปิดตัวโค้ดอย่างเป็นทางการของงาน NAACL 2021 ของเรา การฝึกอบรมล่วงหน้าแบบครบวงจรเพื่อความเข้าใจและการสร้างโปรแกรม
***** ประสิทธิภาพของ PLBART ในงานดาวน์สตรีมจะถูกบันทึกไว้ในสเปรดชีตนี้ -
ข่าว • การตั้งค่า • การฝึกอบรมล่วงหน้า • การปรับแต่ง • คำถามที่พบบ่อย • การรับทราบ • ใบอนุญาต • การอ้างอิง
อินพุตที่มีเสียงดัง | ลำดับดั้งเดิม | |
---|---|---|
0 คือ [MASK] Fibonacci [MASK] ใช่ไหม | | |
หลักคงที่สาธารณะ (String args [ ] ) { วันที่ = วันที่ ( ) ; ระบบ . ออก . ( รูปแบบ String . ( " วันที่ปัจจุบัน : % tc " , ) ) ; } <จาวา> | | |
def addThreeNumbers ( x , y , z ) : NEW_LINE INDENT return [MASK] | |
เราสามารถตั้งค่าสภาพแวดล้อม conda เพื่อรันการทดสอบ PLBART ขั้นตอนแรกคือการดาวน์โหลดการขึ้นต่อกัน เราถือว่าติดตั้งอนาคอนดาแล้ว ข้อกำหนดเพิ่มเติม (ระบุไว้ใน Requirements.txt) สามารถติดตั้งได้โดยการเรียกใช้สคริปต์ต่อไปนี้:
bash install_env.sh
ไปที่ไดเร็กทอรี data/github
แล้วทำตามคำแนะนำ
ไปที่ไดเร็กทอรี data/stackoverflow
แล้วทำตามคำแนะนำ
cd pretrain
bash binarize.sh
bash pretrain.sh GPU_IDS
[หมายเหตุ] เราฝึกอบรม PLBART ล่วงหน้าบน GPU GeForce RTX 2080
(11gb) 8 ตัว (ใช้เวลาประมาณ 11.5 วัน) หากคุณต้องการฝึกอบรม PLBART ล่วงหน้าโดยใช้ GPU มากขึ้นหรือ GPU ที่มีหน่วยความจำมากขึ้น ให้ปรับ MAX_SENTENCES
, MAX_TOKENS
, UPDATE_FREQ
ตามนั้น เพื่อรักษาขนาดแบตช์ที่มีประสิทธิภาพไว้ที่ 2048 ตามข้อมูลของ fairseq ขนาดแบตช์ที่มีประสิทธิภาพจะเท่ากับ:
PER_GPU_TRAIN_BATCH_SIZE * NUM_GPU * อัปเดต_FREQ
โปรดทราบว่า MAX_TOKENS
หมายถึงขนาดของแต่ละมินิแบทช์ในแง่ของจำนวนโทเค็น ในระหว่างการทดลอง เราสังเกตเห็นว่าใน GPU ขนาด 11GB สามารถรองรับโทเค็นได้สูงสุด 2,048 รายการ ซึ่งเทียบเท่ากับตัวอย่าง 4-5 รายการ ดังนั้นเราจึงตั้งค่า UPDATE_FREQ
เป็น 60 เพื่อให้เราสามารถบรรลุขนาดแบทช์ที่มีประสิทธิภาพที่ ~2048
เราปรับแต่งและประเมิน PLBART ในงานดาวน์สตรีมสามประเภท
พิมพ์ | งาน | ภาษา | ข้อมูล | สคริปต์ | จุดตรวจ |
---|---|---|---|---|---|
รหัสเป็นข้อความ | การสรุปโค้ด | หลาม, จาวา, รูบี้, PHP, จาวาสคริปต์, ไป | [ลิงค์] | [ลิงค์] | [ลิงค์] |
ข้อความเป็นรหัส | การสร้างรหัส | ชวา | [ลิงค์] | [ลิงค์] | [ลิงค์] |
รหัสรหัส | การแปลรหัส | จาวา, 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 บน GPU GeForce RTX 2080
(11gb) จำนวน 1 ตัว
[หมายเหตุ] เรานำเสนอโครงสร้างไฟล์ของพื้นที่เก็บข้อมูลนี้ ที่นี่
จะดาวน์โหลดข้อมูล Github จาก Google BigQuery ได้อย่างไร
เราได้ให้คำแนะนำโดยละเอียดไว้ที่นี่
ประสิทธิภาพไม่ตรงกันที่รายงานในรายงานและทำได้โดยใช้จุดตรวจสอบที่ปล่อยออกมา
มีความแตกต่างระหว่างประสิทธิภาพของ PLBART ที่กล่าวถึงในรายงานและประสิทธิภาพที่ได้รับจากจุดตรวจที่ปล่อยออกมา เราสังเกตเห็นพวกเขาที่นี่ โปรดทราบว่าไม่มีการเปลี่ยนแปลงในการตั้งค่าไฮเปอร์พารามิเตอร์ เราระบุค่าเดียวกันกับที่เราใช้ในสคริปต์ทุบตี ความแตกต่างของประสิทธิภาพที่เราสังเกตเห็นอาจเกิดจากการทำการทดสอบ ณ จุดเวลาที่ต่างกัน แม้ว่าเราจะไม่ทำ แต่เราแนะนำให้ปรับแต่ง 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"
}