Facebook-ը մշակում է TransCoder-ը, որը կոդերը թարգմանում է ծրագրավորման մի լեզվից մյուսը

Facebook-ի ինժեներները տրանսկոմպայլեր են հրապարակել Տրանսկոդեր, որն օգտագործում է մեքենայական ուսուցման տեխնիկա՝ սկզբնական կոդը մի բարձր մակարդակի ծրագրավորման լեզվից մյուսը փոխակերպելու համար։ Ներկայումս աջակցություն է տրամադրվում Java-ի, C++-ի և Python-ի միջև կոդի թարգմանության համար: Օրինակ, TransCoder-ը թույլ է տալիս Java-ի կոդերը վերածել Python-ի, իսկ Python-ի կոդը՝ Java-ի: Ծրագրի մշակումները գործնականում դրվում են տեսական հետազոտություն կոդի արդյունավետ ավտոմատ վերափոխման համար նեյրոնային ցանց ստեղծելու մասին և տարածվել լիցենզավորված Creative Commons Attribution-NonCommercial 4.0 լիցենզիայի ներքո միայն ոչ առևտրային օգտագործման համար:

Մեքենայի ուսուցման համակարգի ներդրումը հիմնված է Pytorch-ի վրա: Ներբեռնման համար առաջարկվում է երկու պատրաստի մոդել. առաջին C++-ը Java, Java-ն C++ և Java-ն Python թարգմանելու համար և երկրորդ հեռարձակման համար
C++-ը Python-ին, Python-ը՝ C++-ին և Python-ը՝ Java-ին: Մոդելներին մարզելու համար մենք օգտագործել ենք GitHub-ում տեղադրված նախագծերի սկզբնական կոդերը։ Ցանկության դեպքում թարգմանչական մոդելներ կարող են ստեղծվել ծրագրավորման այլ լեզուների համար: Հեռարձակման որակը ստուգելու համար պատրաստվել է միավորի թեստերի հավաքածու, ինչպես նաև թեստային փաթեթ, որը ներառում է 852 զուգահեռ գործառույթներ։

Պնդվում է, որ փոխակերպման ճշգրտության առումով TransCoder-ը զգալիորեն գերազանցում է առևտրային թարգմանիչներին, որոնք օգտագործում են փոխակերպման կանոնների վրա հիմնված մեթոդներ, և աշխատանքի ընթացքում այն ​​թույլ է տալիս անել առանց աղբյուրի և թիրախային լեզվով փորձագետների փորձագիտական ​​գնահատման: Սխալների մեծ մասը, որոնք առաջանում են մոդելի շահագործման ընթացքում, կարելի է վերացնել՝ ավելացնելով պարզ սահմանափակումներ ապակոդավորողին, որպեսզի համոզվեն, որ ստեղծվող գործառույթները շարահյուսորեն ճիշտ են:

Facebook-ը մշակում է TransCoder-ը, որը կոդերը թարգմանում է ծրագրավորման մի լեզվից մյուսը

Հետազոտողները առաջարկել են նոր նեյրոնային ցանցի ճարտարապետություն «Տրանսֆորմեր» հաջորդականությունների մոդելավորման համար, որում կրկնությունը փոխարինվում է «ուշադրություն«(ուշադրությամբ seq2seq մոդելը), որը թույլ է տալիս ազատվել հաշվողական գրաֆիկի որոշ կախվածություններից և զուգահեռացնել այն, ինչը նախկինում ենթակա չէր զուգահեռացման: Բոլոր աջակցվող լեզուներն օգտագործում են մեկ ընդհանուր մոդել, որը վերապատրաստվում է երեք սկզբունքով՝ սկզբնավորում, լեզվի մոդելավորում և հետադարձ թարգմանություն:

Facebook-ը մշակում է TransCoder-ը, որը կոդերը թարգմանում է ծրագրավորման մի լեզվից մյուսը

Source: opennet.ru

Добавить комментарий