إصدار الكود الرسمي لعمل NAACL 2021، التدريب المسبق الموحد لفهم البرنامج وإنشاءه.
***** يتم تسجيل أداء PLBART في المهام النهائية في جدول البيانات هذا. *****
الأخبار • الإعداد • التدريب المسبق • الضبط الدقيق • الأسئلة الشائعة • الإقرار • الترخيص • الاقتباس
مدخلات صاخبة | التسلسل الأصلي |
---|---|
هل 0 هو [MASK] فيبوناتشي [MASK] ؟ <إن> | |
الرئيسي الثابت العام ( String args [ ] ) { date = Date ( ) ; نظام . خارج . ( سلسلة . تنسيق (" التاريخ الحالي : % tc " , ) ) ; } <جافا> | |
def addThreeNumbers ( x , y , z ) : NEW_LINE INDENT يُرجع [MASK] | |
يمكننا إعداد بيئة كوندا لإجراء تجارب PLBART، والخطوة الأولى هي تنزيل التبعيات. نحن نفترض أنه تم تثبيت اناكوندا. يمكن تثبيت المتطلبات الإضافية (المذكورة في Requirements.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 جيجابايت) (استغرق الأمر حوالي 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 على ثلاثة أنواع من المهام النهائية.
يكتب | مهمة | اللغة (اللغات) | بيانات | البرامج النصية | نقاط التفتيش |
---|---|---|---|---|---|
رمز إلى النص | تلخيص الكود | بايثون، جافا، روبي، بي إتش بي، جافا سكريبت، اذهب | [وصلة] | [وصلة] | [وصلة] |
النص إلى الكود | توليد الكود | جافا | [وصلة] | [وصلة] | [وصلة] |
رمز إلى رمز | ترجمة الكود | جافا، سي# | [وصلة] | [وصلة] | [وصلة] |
تحسين الكود | جافا | [وصلة] | [وصلة] | ||
كشف الاستنساخ | جافا | [وصلة] | [وصلة] | ||
كشف الخلل | ج/ج++ | [وصلة] | [وصلة] |
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 على وحدة معالجة الرسومات GeForce RTX 2080
(11 جيجابايت) واحدة.
[ملاحظة] نقدم بنية الملف لهذا المستودع هنا.
كيفية تنزيل بيانات Github من Google BigQuery؟
لقد قدمنا دليلاً مفصلاً هنا.
عدم التطابق في الأداء المذكور في الورقة والذي تم تحقيقه باستخدام نقاط التفتيش الصادرة.
هناك فرق بين أداء 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"
}