Google Ads baut sich mit KI selbst um – Code-Migration
Googles Ads-Team hat eine Reihe von Migrationsaufgaben mit KI gelöst und berichtet in einem Paper über die Erfahrungen damit: Manches geht besser ohne KI.
(Bild: PixieMe/Shutterstock.com)
In einem wissenschaftlichen Paper beschreibt das Ads-Team von Google, wie es vier Migrationsaufgaben von altem zu modernem Code mit Künstlicher Intelligenz bearbeitet hat: den Wechsel von 32-Bit-IDs auf 64 Bit, das Update von JUnit3 auf Version 4, die Umstellung des Zeitformats von Joda auf java.time und eine Säuberung von nicht verwendetem Beispiel-Code in allen Repositories.
Über alle Aufgaben hinweg konnte das Team, laut Paper, dabei einen Gewinn an Zeit und Aufwand von circa fünfzig Prozent festmachen. Der Vorteil beim reinen Code lag höher, dem stand aber ein verstärkter Aufwand beim Prüfen entgegen.
Herausforderungen bei den Aufgaben
In den Repositories von Google Ads liegen über 500 Millionen Zeilen Code, die das Team zu überarbeiten hatte. Als KI-Modell setzte es Gemini ein, aber in einer auf die Aufgaben zugeschnittenen Version. Das heißt, es war mit den Google-Repositories trainiert und musste Änderungen über alle Quellen hinweg vornehmen. Problem bei allen Aufgaben war eine hohe Varianz der zu ändernden Stellen.
Zum Einsatz kamen nicht nur die KI, sondern auch traditionelle Methoden wie Abstract Syntax Trees (AST), Heuristiken und die Suche mit Regulären Ausdrücken. ASTs dienten in erster Linie zum Finden der Stellen, die zu ändern waren. Die Änderung an sich führte dann das LLM aus. Die menschliche Prüfung am Schluss erfolgte wie bei jeder Code-Änderung.
Die Regeln für das Prompting enthielten allgemeine Anweisungen zur Aufgabe und dann konkretere Unterschritte. Diese waren je nach Anwendungsfall austauschbar. Als hilfreich stellte das Team fest, die KI zu fragen, welcher ihrer Änderungsvorschläge der beste sei.
Videos by heise
Die Reise von 32 Bit zu 64 Bit
Google Ads nutzt IDs für Nutzer, Händler, Kampagnen usw., die in C++ oder Java vorliegen, allerdings nicht als eigenständige Typen, sondern oft als Integer, manchmal aber sogar als Text. Die Änderung von 32 Bit auf 64 Bit betraf "zehntausende Stellen" inklusive aller Klassen-Interfaces. Die Zusammenstellung der betreffenden Dateien erfolgte über AST, die Änderung selbst durch die KI. Das Google-Team hat die KI jedoch nur auf die Teile des Codes losgelassen, die von Unit-Tests überprüft werden konnten. Diese musste das Team dafür anpassen.
Der menschliche Review ließ achtzig Prozent der vom LLM geänderten Stellen als korrekt passieren. Bei den Fehlern hatte die KI meist zu viel geändert. Ein Prompt-Beispiel lautet:
{id} should be of type int64_t.
Update the tests to reflect a large id.
Initialize the {id}s with values larger than 10000000000.
If necessary add new test parameters with large ids.
If previous id was negative, new value should be negative.
Es weist die KI an, nur den Klassen-Konstruktor anzupassen, in der der Typ geändert werden soll. Das LLM hat im Ergebnis auch im Private-Feld und die Verwendung innerhalb der Klasse richtig korrigiert. Die folgenden Bilder zeigen die Änderungen in der Diff- und der Test-Datei.
(Bild:Â Google)
(Bild:Â Google)
Probleme beim Wechsel der Zeit-API
Bei den anderen Projekten zeigten sich ähnliche Erfahrungen. Den Wechsel von der alten Joda-Bibliothek zum java.time-Paket erschwerte, dass nicht alle Typen vergleichbar sind, zum Beispiel kennt die Standard-Zeit-API von Java kein Gegenstück zu joda.time.Interval. Änderungen erfordern daher einen Eingriff in die Logik der Funktion. Hier müssen die Autoren des Papers zugeben: "Die Migration läuft noch und wir stehen vor Herausforderungen, sie zu lösen".
Als Fazit wird im Paper festgestellt, dass der beste Migrationsweg eine Mischung aus alten und neuen Methoden darstellt. "Wir fanden heraus, dass die Planungskapazitäten der LLMs nicht notwendig waren und eine Komplexitätsebene zufügten, die, wenn möglich, vermieden werden sollte." ASTs haben den Vorteil, immer korrekt zu sein. Auch zur Prüfung des geänderten Codes eignen sich AST-Parser.
Das Team empfiehlt, kleine, angepasste Modelle einzusetzen. "Sie erhöhen die Verlässlichkeit der Ergebnisse und reduzieren den Aufwand fürs Debugging." Zum Flaschenhals kann die menschliche Prüfung werden, da Spezialisten dafür erforderlich sind. In Zukunft lässt sich das durch bessere Tools vermeiden – Stichwort: Agenten. Das Paper konkretisiert diesen Punkt nicht weiter.
Außerdem stellt das Paper fest: "Ob es auf Dauer eine Auswirkung auf die Qualität hat, muss beobachtet werden." Insgesamt plant Google jedoch, eine KI-Migration im Ads-Bereich weiter auszubauen.
(who)