Facebook, kodu bir programlama dilinden diğerine çevirmek için TransCoder'ı geliştiriyor

Facebook mühendisleri bir dönüştürücü derleyici yayınladı Kod Dönüştürücükaynak kodunu bir üst düzey programlama dilinden diğerine dönüştürmek için makine öğrenimi tekniklerini kullanan. Şu anda Java, C++ ve Python arasında kod çevirisi için destek sağlanmaktadır. Örneğin TransCoder, Java kaynak kodunu Python koduna ve Python kodunu Java kaynak koduna dönüştürmenize olanak tanır. Proje geliştirmeleri hayata geçiriliyor teorik araştırma Kodun verimli bir şekilde otomatik olarak derlenmesi için bir sinir ağı oluşturulması ve yayılmış yalnızca ticari olmayan kullanım için Creative Commons Atıf-GayriTicari 4.0 lisansı altında lisanslanmıştır.

Makine öğrenimi sisteminin uygulanması Pytorch'a dayanmaktadır. İndirmek için iki hazır model sunulmaktadır: ilk C++'ı Java'ya, Java'yı C++'ya ve Java'yı Python'a çevirmek için ve ikinci yayın için
C++'dan Python'a, Python'dan C++'a ve Python'dan Java'ya. Modelleri eğitmek için GitHub'da yayınlanan projelerin kaynak kodlarını kullandık. İstenildiği takdirde diğer programlama dilleri için de çeviri modelleri oluşturulabilmektedir. Yayının kalitesini kontrol etmek için birim testlerden oluşan bir koleksiyonun yanı sıra 852 paralel fonksiyon içeren bir test paketi hazırlandı.

Dönüştürme doğruluğu açısından TransCoder'ın, dönüştürme kurallarına dayalı yöntemler kullanan ticari çevirmenlerden önemli ölçüde üstün olduğu ve çalışma sürecinde kaynak ve hedef dildeki uzmanların uzman değerlendirmesi olmadan yapmanıza olanak sağladığı iddia ediliyor. Modelin çalışması sırasında ortaya çıkan hataların çoğu, oluşturulan fonksiyonların sözdizimsel olarak doğru olmasını sağlamak için kod çözücüye basit kısıtlamalar eklenerek ortadan kaldırılabilir.

Facebook, kodu bir programlama dilinden diğerine çevirmek için TransCoder'ı geliştiriyor

Araştırmacılar, modelleme dizileri için tekrarlamanın yerini "Transformer" alan yeni bir sinir ağı mimarisi önerdiler.Dikkat"(seq2seq modeli dikkatle), bu da hesaplamalı grafikteki bazı bağımlılıklardan kurtulmanıza ve daha önce paralelleştirmeye uygun olmayanları paralelleştirmenize olanak tanır. Desteklenen tüm diller, üç ilke (başlatma, dil modelleme ve geri çeviri) kullanılarak eğitilen tek bir ortak model kullanır.

Facebook, kodu bir programlama dilinden diğerine çevirmek için TransCoder'ı geliştiriyor

Kaynak: opennet.ru

Yorum ekle