Facebook arendab TransCoderit, et tõlkida koodi ühest programmeerimiskeelest teise

Facebooki insenerid on avaldanud ümberkompilaatori TransCoder, mis kasutab masinõppetehnikaid lähtekoodi teisendamiseks ühest kõrgetasemelisest programmeerimiskeelest teise. Praegu pakutakse koodi tõlkimist Java, C++ ja Pythoni vahel. Näiteks võimaldab TransCoder teisendada Java lähtekoodi Pythoni koodiks ja Pythoni koodi Java lähtekoodiks. Projektide arendused viiakse ellu teoreetiline uurimus närvivõrgu loomise kohta koodi tõhusaks automaatseks ümberkompileerimiseks ja levima litsentsitud Creative Commons Attribution-NonCommercial 4.0 litsentsi alusel ainult mitteäriliseks kasutamiseks.

Masinõppesüsteemi juurutamine põhineb Pytorchil. Allalaadimiseks pakutakse kahte valmis mudelit: esimene C++ tõlkimiseks Javasse, Java C++ keelde ja Java Pythonisse ja teine saate jaoks
C++ Pythonile, Python C++-le ja Python Javale. Mudelite koolitamiseks kasutasime GitHubi postitatud projektide lähtekoode. Soovi korral saab tõlkemudeleid luua ka teistele programmeerimiskeeltele. Saate kvaliteedi kontrollimiseks on koostatud ühikutestide kogumik, samuti testikomplekt, mis sisaldab 852 paralleelfunktsiooni.

Väidetavalt ületab TransCoder konversiooni täpsuse poolest oluliselt teisendusreeglitel põhinevaid meetodeid kasutavaid kommertstõlkeid ning võimaldab töö käigus hakkama saada ilma lähte- ja sihtkeele ekspertide eksperthinnanguta. Enamikku mudeli töö käigus tekkivaid vigu saab kõrvaldada, lisades dekoodrile lihtsad piirangud, et tagada genereeritud funktsioonide süntaktiline õigsus.

Facebook arendab TransCoderit, et tõlkida koodi ühest programmeerimiskeelest teise

Teadlased on pakkunud välja uue närvivõrgu arhitektuuri "Transformer" jadade modelleerimiseks, milles kordumine asendatakse tekstiga "tähelepanu"(tähelepanuga seq2seq mudel), mis võimaldab vabaneda mõningatest sõltuvustest arvutusgraafikus ja paralleelida seda, mida varem ei olnud võimalik paralleelselt teha. Kõik toetatud keeled kasutavad ühte ühist mudelit, mille koolitamisel kasutatakse kolme põhimõtet – initsialiseerimine, keele modelleerimine ja tagasitõlge.

Facebook arendab TransCoderit, et tõlkida koodi ühest programmeerimiskeelest teise

Allikas: opennet.ru

Lisa kommentaar