TransCoder von Facebook AI übersetzt zwischen Programmiersprachen

Der neue Quellcode-Übersetzer nutzt Self-Supervised Learning und soll die Programmiersprachen C++, Java und Python bereits relativ treffsicher übersetzen.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
TransCoder übersetzt mit KI zwischen Programmiersprachen

(Bild: Phonlamai Photo/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Die Entwicklungsabteilung von Facebook AI hat TransCoder vorgelegt, ein Tool zum Übersetzen von Quellcode. Das Transcompiler-System soll dank KI in der Lage sein, Code von einer Programmiersprache in eine andere zu übersetzen. Das Training erfolgt Self-supervised, und die neuronalen Strukturen benötigen laut Ankündigung im Entwicklerblog keine parallelen Daten für ein vorgelagertes Training. Die KI-Abteilung von Facebook testete das Tool mit Querübersetzungen zwischen C++, Java und Python 3, und die Treffsicherheit schwankte dabei offenbar je nach den gewählten Programmiersprachen und der Übersetzungsrichtung.

Am besten kommt das Modell laut Facebook-Blog derzeit mit der Übersetzung von Java-Funktionen nach C++ zurecht, hier seien die Ergebnisse zu über 90 Prozent korrekt gewesen. In der Gegenrichtung (C++-Code zu Java-Code) lag das Modell wohl noch zu drei Vierteln richtig (74,8 Prozent). Java nach Python funktionierte in etwas unter 70 Prozent der Fälle. Die Trefferquoten bei anderen kommerziellen Angeboten am Markt gehen demnach in eine ähnliche Richtung, liegen aber etwas darunter (rund 61 Prozent laut Blogeintrag, allerdings geben die Verfasser keine Quelle dafür an). Im quelloffenen Bereich sind Quellcodeübersetzer bislang wohl noch deutlich weniger präzise – laut Blog liegt die Treffsicherheit hier bei etwas unter 40 Prozent, jedoch erneut ohne Quellenangabe seitens der Facebook-AI-Entwickler.

Unter der Haube haben die TransCoder-Entwickler ein Sequenz-zu-Sequenz-Modell (seq2seq) erstellt, das aus einem Encoder und einem Decoder mit Transformator-Architektur besteht. Für alle Programmiersprachen verwendet das Tool ein gemeinsames Modell, das zum Teil auf früherer Arbeit von Facebook AI an XLM (Cross-lingual Language Modeling) fußt. Unbeaufsichtigtes maschinelles Übersetzen beruht im Wesentlichen auf Initialisierung, Sprachmodellierung und Rückübersetzung.

Facebook AI

Der Unterschied zu bisherigen, auf KI-Modellen basierenden Quellcode-Übersetzern ist das Self-Supervised Learning. Bislang waren stets große Datensätze zum Trainieren eines Modells notwendig, TransCoder hingegen scheint nur Code in der zu erlernenden Programmiersprache zu benötigen, um deren Muster zu erfassen. Das System muss nicht vorab mit umfangreichen Übersetzungsbeispielen gefüttert werden. Den Anfang machten die drei Programmiersprachen C++, Java und Python, das Konzept sollte sich auch auf andere Programmiersprachen übertragen lassen.

Die Ersteller eines Modells benötigen dafür laut TransCoder-Entwicklerteam keine Kenntnisse der Programmiersprache, die sie dem Modell beibringen. Dem System ist offenbar eine auf diesen Zweck ausgerichtete Auswertungsmetrik eingebaut. Ein künftiges Anwendungsgebiet für TransCoder könnte Legacy-Code in älteren Sprachen wie COBOL sein, zu denen Fachkräfte fehlen und die Entwickler zum Instandhalten in modernere Programmiersprachen übersetzen möchten. Mit einem funktionsfähigen Quellcode-Übersetzer würden sich Codepassagen verschiedener Teams in Unternehmen oder in Open-Source-Projekten leichter integrieren lassen, und Hürden bei der Migration von Legacy-Code würden reduziert.

Als Nebeneffekt könnte TransCoder aber durchaus auch zum Debuggen und Verbessern von bestehendem Code bei älterem Codebestand zum Einsatz kommen. Das Team des TransCoder-Projekts von Facebook AI hat einen Testdatensatz veröffentlicht. Damit sollen andere Forscher mit eigenen Arbeiten auf dem bisherigen Stand von TransCoder aufsetzen können, um Self-Supervised Learning und rechengenaues Übersetzen von Quellcode weiter auszubauen.

Details zu den technischen und mathematischen Hintergründen des Übersetzungsmodells lassen sich dem Blogeintrag bei Facebook AI entnehmen. Flankierend könnte Lektüre zur Verwendung neuronaler Netze für komplexe mathematische Gleichungen nützlich sein, auch hierzu gibt es Blogeinträge des Facebook-Entwicklerteams.

(sih)