Künstliche Intelligenz: Facebook AI Research präsentiert Transcompiler
Das Forschungsteam hinter Facebook AI Research hat in einem Paper den TransCoder vorgestellt. Er übersetzt Code zwischen C++, Java und Python.
Eine Forschergruppe der Abteilung Facebook AI Research hat einen Transcompiler vorgestellt. Der TransCoder übersetzt Code zwischen C++, Java und Python. Code, der in einer anderen älteren Sprache geschrieben wurde, lässt sich auch in eine vorhandene neuere Codebasis wie Java oder C++ integrieren. Entwicklern bleibt es dadurch offenbar erspart, Code von Grund auf neu schreiben zu müssen.
Das Team, bestehend aus Marie-Anne Lachaux, Baptiste Roziere, Lowik Chanussot und Guillaume Lample, ging mit einem unbeaufsichtigten Lernansatz an die Entwicklung des TransCoders heran. Das bedeutet, dass der Transcompiler zunächst mit einem sprachübergreifenden Sprachmodell-Vortraining initialisiert wird. Im Anschluss werden Code-Teile, die mit denselben Anweisungen gemappt wurden, unabhängig von der Programmiersprache in eine identische Darstellung überführt.
2,8 Millionen Open-Source-Repositorys als Trainingsbasis
Der TransCoder wurde offenbar auf Basis eines öffentlich zugänglichen GitHub-Korpuses, mit über 2,8 Millionen Open-Source-Repositorys sowie mit Übersetzungen auf Funktionsebene trainiert. Funktionen meinen hier Blöcke aus wiederverwendbarem Code, die zur Ausführung einer einzelnen, zusammenhängenden Aktion verwendet werden. Daraufhin durchlief der TransCoder einen Prozess, in dem die Funktion für Rauschunterdrückung und Autokompilierung sowie die Komponente für Rückübersetzung nur auf Funktionsebene trainiert wurden. Dabei verwendete die Forschergruppe die Komponenten abwechselnd mit einem Stapel von circa 6000 Tokens.
Videos by heise
Facebook arbeitet nicht als einziges Unternehmen an einem AI System, das Code generiert. Beispielsweise stellte OpenAI vor wenigen Wochen auf der Microsoft Build ein auf GitHub-Repositorys geschultes Modell vor, das zur Generierung ganzer Funktionen englischsprachige Kommentare verwendet. Vor zwei Jahren bastelten Forscher der Rice University an einem System namens Bayou, das eigene Software schreiben kann, indem es Intents hinter öffentlich zugänglichem Code verbindet.
Was ist ein Transcompiler?
Ein Transcompiler, auch Transpiler oder Source-to-Source-Compiler genannt, fungiert als Übersetzer zwischen verschiedenen Programmiersprachen, die auf einer ähnlichen Abstraktionsebene liegen. Im Vergleich dazu übersetzt ein herkömmlicher Compiler den Quellcode von einer Low- oder High-level-Programmiersprache, um eine ausführbare Datei zu erstellen. Sie können Entwicklern bei der Übersetzung oder Integration einer veralteten Codebasis in eine neue unter die Arme greifen. Doch in der Praxis sind sie schwer umzusetzen, da diverse Sprachen auch unterschiedliche Syntax mitbringen und sich auf einer Vielzahl von Plattform-APIs, Standard-Bibliotheksfunktionen und Variablentypen stützen können.
Weiterführende Informationen lassen sich dem Paper der Forschungsgruppe der Abteilung Facebooks AI entnehmen.
(mdo)