A Facebook a TransCoder-t fejleszti, hogy kódot fordítson egyik programozási nyelvről a másikra

A Facebook mérnökei egy átfordítót tettek közzé TransCoder, amely gépi tanulási technikákat használ a forráskód egyik magas szintű programozási nyelvről a másikra való átalakítására. Jelenleg a Java, C++ és Python közötti kód lefordítása biztosított. Például a TransCoder lehetővé teszi, hogy a Java forráskódot Python-kóddá, a Python-kódot pedig Java-forráskóddá alakítsa. A projektfejlesztések gyakorlatba ültetése folyamatban van elméleti kutatás neurális hálózat létrehozásáról a kód hatékony automatikus átfordítására és terjedés a Creative Commons Nevezd meg! – Nem kereskedelmi célú 4.0 licenc alatt, csak nem kereskedelmi használatra.

A gépi tanulási rendszer megvalósítása Pytorch alapú. Két kész modellt kínálunk letöltésre: első a C++ Java nyelvre, a Java C++ nyelvre és a Java Python nyelvre történő fordítására, ill második adáshoz
C++-ból Python-ba, Pythonból C++-ba és Pythonból Java-ba. A modellek betanításához a GitHubon közzétett projektek forráskódjait használtuk. Igény esetén fordítási modellek készíthetők más programozási nyelvekhez. Az adás minőségének ellenőrzésére egységtesztek gyűjteménye készült, valamint egy 852 párhuzamos funkciót tartalmazó tesztcsomag.

Állítólag a konverziós pontosság tekintetében a TransCoder jelentősen felülmúlja a konverziós szabályokon alapuló módszereket használó kereskedelmi fordítókat, és a munkafolyamat során lehetővé teszi, hogy nélkülözze a forrás- és célnyelv szakértőinek értékelését. A modell működése során fellépő hibák nagy része kiküszöbölhető a dekóder egyszerű korlátozásával, hogy a generált függvények szintaktikailag helyesek legyenek.

A Facebook a TransCoder-t fejleszti, hogy kódot fordítson egyik programozási nyelvről a másikra

A kutatók egy új „Transformer” neurális hálózati architektúrát javasoltak sorozatok modellezésére, amelyben az ismétlődést a „Figyelem"(seq2seq modell figyelmességgel), amely lehetővé teszi, hogy megszabaduljon néhány függőségtől a számítási gráfban, és párhuzamosítsa azt, ami korábban nem volt alkalmas a párhuzamosításra. Minden támogatott nyelv egyetlen közös modellt használ, amelyet három alapelv – inicializálás, nyelvi modellezés és visszafordítás – alapján képeznek.

A Facebook a TransCoder-t fejleszti, hogy kódot fordítson egyik programozási nyelvről a másikra

Forrás: opennet.ru

Hozzászólás