التنفيذ الرسمي لتوليد الكود القائم على التنفيذ باستخدام التعلم التعزيز العميق
أظهر استخدام نماذج لغة البرمجة (PL) ، التي تم تجهيزها على شركة الكود على نطاق واسع ، كوسيلة لأتمتة عمليات هندسة البرمجيات إمكانات كبيرة في تبسيط مهام توليد الكود المختلفة مثل إكمال الكود وترجمة الكود وتوليف البرنامج. ومع ذلك ، فإن الأساليب الحالية تعتمد بشكل أساسي على أهداف الضبط الخاضعة للإشراف المستعارة من توليد النص ، وإهمال ميزات محددة على مستوى التسلسل من الكود ، بما في ذلك على سبيل المثال لا الحصر الترجيح وكذلك الصواب النحوي والوظيفي. لمعالجة هذا القيد ، نقترح PPOCODER ، وهو إطار جديد لتوليد الكود يجمع بين نماذج PL PRESED مع تحسين السياسة القريبة (PPO) التعلم العميق التعزيز ويستخدم ملاحظات التنفيذ كمصدر خارجي للمعرفة في تحسين النموذج. PPOCODER قابلة للتحويل عبر مهام توليد الكود المختلفة و PLS.

نظرة عامة على PPOCODER مع النماذج الفاعلة والناقد : يتم أخذ عينات من الإجراء من السياسة بناءً على بيانات المصدر المحدد
لتشغيل الرمز ، قم بتثبيت التبعيات في المتطلبات.
pip install -r requirements.txt
نقوم بتقييم نماذج/تقييم على معايير مجموعة البيانات الرئيسية التالية لمهام توليد الكود المختلفة:
نقوم بتعامل مع المعالجة المسبقة للبيانات ونبني تسلسل الإدخال/الإخراج بنفس الطريقة الموضحة في الأوراق المرجعية الأصلية. قم بفك الضغط ووضع جميع المعايير في مجلد data .
لقد أنشأنا برنامج run.sh لتنفيذ صقل طراز PL المستند إلى PPO استنادًا إلى إشارة التحويل البرمجي. لتشغيل البرنامج النصي لمهام توليد الكود المختلفة ، قم بتكوين المعلمات التالية:
| حدود | وصف | مثال القيم |
|---|---|---|
l1 | لغة المصدر | جافا |
l2 | اللغة المستهدفة | CPP |
asp | حجم مساحة العمل | 5 |
ns | عدد العينات الاصطناعية | 10 |
data_path | مسار إلى عينات البيانات الأصلية | البيانات/XLCOST/JAVA-CPP/ |
output_path | مسار لإنقاذ الأجيال والمخرجات | Save_results/Java-CPP/ |
baseline_output_dir | المسار إلى القاعدة codet5 (قبل RL) مخرجات | خطوط الأساس/Save_Models/Java-CPP/ |
load_model_path | مسار إلى نموذج CODET5 الأساسي (قبل RL) لكل مهمة المصب | baselines/save_models/java-cpp/pytorch_model.bin |
max_source_length | طول المصدر Maxmim | 400 |
max_target_length | طول الهدف ماكسميم | 400 |
train_batch_size | حجم دفعة تدريب | 32 |
test_batch_size | اختبار حجم الدُفعة | 48 |
lr | معدل التعلم | 1E-6 |
kl_coef | المعامل الأولي لعقوبة التباعد KL في المكافأة | 0.1 |
kl_target | هدف KL الذي يتحكم بشكل تكيفي في معامل KL | 1 |
vf_coef | معامل خطأ VF في فقدان PPO | 1E-3 |
run | فهرس المدى | 1 |
تشغيل run.sh يحفظ البرامج التي تم إنشاؤها في ملف .txt والأوزان النموذجية في نهاية كل فترة.
إذا وجدت الورقة أو الريبو مفيدة ، فيرجى الاستشهاد بها
article {shojaee2023ppocoder ،
العنوان = {توليد الكود المستند إلى التنفيذ باستخدام التعلم العميق} ،
المؤلف = {Shojaee ، Parshin and Jain ، Aneesh and Tipirneni ، Sindhu and Reddy ، Chandan K} ،
Journal = {arxiv preprint arxiv: 2301.13816} ،
السنة = {2023}
}