Tools

Maven als neuronales Netz: JetBrains kompiliert Build-Logik in Gewichte

tools jetbrains maven java research

Build-Entscheidungen ohne Training

JetBrains-Forscher haben die Entscheidungslogik eines Maven-artigen Build-Tools direkt in eine feste Gewichtsmatrix kompiliert. Kein Training, keine Gradienten: Ein kleiner Maven-kompatibler Controller wurde in einem eingeschränkten Python-Subset geschrieben und nach dem Handwired-Prinzip in eine Tabelle aus 29.625 × 7 Zahlen übersetzt. Das Netz entscheidet, welche Version einer Bibliothek gewinnt, welche Dateien an den Compiler gehen und ob ein fehlgeschlagener Test den Build stoppt. Dateizugriffe und javac erledigt eine dünne Bridge.

Ergebnisse

  • Getestet an ZXing 3.5.3 (clean package mit Tests): Die erzeugten JARs sind byteidentisch zu Apache Maven, alle 549 Upstream-Tests laufen durch.
  • Ein Build dauert 1,49-mal so lang wie die gleiche Logik in Python; auf der GPU ist es sogar langsamer, weil sequentielle Instruktionen nichts zu parallelisieren geben.
  • Ein Build braucht rund 4,8 Millionen Schritte. Ein verbesserter Compiler (v2) spart Overhead und schrumpft die Tabelle auf 26.626 Zeilen, GPU-Entscheidungszeit sinkt um 23 %.
  • Auch ein Labyrinth-Löser lässt sich so kompilieren, ist aber 161- bis 168-mal langsamer als Python.

Wozu das Ganze?

Schneller wird nichts. Der Wert liegt in der Interpretierbarkeit: Jede Gewichtszeile gehört zu einer bekannten Funktion von 249, also gibt es eine „Lösung“ für Forscher, die Netze von den Gewichten her analysieren.

Zum Originalartikel im JetBrains-Blog