Facebook izstrādā programmu TransCoder, lai tulkotu kodu no vienas programmēšanas valodas citā

Facebook inženieri ir publicējuši transkompilatoru TransCoder, kurā tiek izmantotas mašīnmācīšanās metodes, lai pārveidotu pirmkodu no vienas augsta līmeņa programmēšanas valodas uz citu. Pašlaik tiek nodrošināts atbalsts koda tulkošanai starp Java, C++ un Python. Piemēram, TransCoder ļauj pārvērst Java avota kodu Python kodā un Python kodu Java avota kodā. Projektu izstrāde tiek īstenota praksē teorētiskie pētījumi par neironu tīkla izveidi efektīvai automātiskai koda pārkompilācijai un izplatīties licencēta saskaņā ar Creative Commons Attribution-NonCommercial 4.0 licenci tikai nekomerciālai lietošanai.

Mašīnmācīšanās sistēmas ieviešana ir balstīta uz Pytorch. Lejupielādei tiek piedāvāti divi gatavi modeļi: vispirms lai tulkotu C++ uz Java, Java uz C++ un Java uz Python un otrais pārraidei
C++ uz Python, Python uz C++ un Python uz Java. Lai apmācītu modeļus, mēs izmantojām GitHub publicēto projektu pirmkodus. Ja vēlaties, tulkošanas modeļus var izveidot citām programmēšanas valodām. Lai pārbaudītu pārraides kvalitāti, ir sagatavota vienību testu kolekcija, kā arī testu komplekts, kas ietver 852 paralēlas funkcijas.

Tiek apgalvots, ka pārveidošanas precizitātes ziņā TransCoder ir ievērojami pārāks par komerciālajiem tulkiem, kuri izmanto uz konvertēšanas noteikumiem balstītas metodes, un darba procesā ļauj iztikt bez ekspertu vērtējuma avota un mērķa valodā. Lielāko daļu kļūdu, kas rodas modeļa darbības laikā, var novērst, pievienojot vienkāršus ierobežojumus dekodētājam, lai nodrošinātu, ka ģenerētās funkcijas ir sintaktiski pareizas.

Facebook izstrādā programmu TransCoder, lai tulkotu kodu no vienas programmēšanas valodas citā

Pētnieki ir ierosinājuši jaunu neironu tīkla arhitektūru "Transformators" secību modelēšanai, kurā atkārtošanās tiek aizstāta ar "uzmanība"(seq2seq modelis ar uzmanību), kas ļauj atbrīvoties no dažām atkarībām skaitļošanas grafikā un paralēli to, kas iepriekš nebija pakļauts paralelizācijai. Visās atbalstītajās valodās tiek izmantots viens kopīgs modelis, kas tiek apmācīts, izmantojot trīs principus — inicializāciju, valodas modelēšanu un atpakaļtulkošanu.

Facebook izstrādā programmu TransCoder, lai tulkotu kodu no vienas programmēšanas valodas citā

Avots: opennet.ru

Pievieno komentāru