Το Facebook αναπτύσσει το TransCoder για τη μετάφραση κώδικα από μια γλώσσα προγραμματισμού σε άλλη

Οι μηχανικοί του Facebook δημοσίευσαν ένα transcompiler TransCoder, το οποίο χρησιμοποιεί τεχνικές μηχανικής εκμάθησης για να μετατρέψει τον πηγαίο κώδικα από μια γλώσσα προγραμματισμού υψηλού επιπέδου σε μια άλλη. Επί του παρόντος, παρέχεται υποστήριξη για τη μετάφραση κώδικα μεταξύ 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 για τη μετάφραση κώδικα από μια γλώσσα προγραμματισμού σε άλλη

Οι ερευνητές έχουν προτείνει μια νέα αρχιτεκτονική νευρωνικών δικτύων "Transformer" για τη μοντελοποίηση ακολουθιών, στην οποία η επανάληψη αντικαθίσταται από "προσοχή"(μοντέλο seq2seq με προσοχή), το οποίο σας επιτρέπει να απαλλαγείτε από ορισμένες εξαρτήσεις στο υπολογιστικό γράφημα και να παραλληλίσετε αυτό που προηγουμένως δεν ήταν επιδεκτικό παραλληλισμού. Όλες οι υποστηριζόμενες γλώσσες χρησιμοποιούν ένα ενιαίο κοινό μοντέλο, το οποίο εκπαιδεύεται χρησιμοποιώντας τρεις αρχές: αρχικοποίηση, μοντελοποίηση γλώσσας και επαναληπτική μετάφραση.

Το Facebook αναπτύσσει το TransCoder για τη μετάφραση κώδικα από μια γλώσσα προγραμματισμού σε άλλη

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο